1

ファイルがローカル ドライブにあるかどうかを判断しようとしています。ドライブの種類を取得するGetDriveType() WINAPIを見つけました。ただし、戻り値の説明を読むと、フラッシュドライブを FIXED として取得するように見えますが、これは私が望んでいるものではありません。

ローカルドライブで正常に動作しています:

bool IsDriveRemovableOrRemote(CString driveRoot)
{
    UINT driveType = GetDriveType(driveRoot);
    return (DRIVE_REMOVABLE == driveType || DRIVE_CDROM == driveType || DRIVE_NO_ROOT_DIR == driveType || DRIVE_REMOTE == driveType);
}

ATM をテストするためのフラッシュ/外付けドライブを持っていませんが、誰かが私の解釈が正しいかどうか教えてくれませんか? もしそうなら、私はどのようなより良い代替手段を使用すべきですか?

私はファイルのパスしか持っていないことに注意してください。

4

2 に答える 2

2

あなたはドコをもっとよく読むべきです。フラッシュドライブは固定デバイスと見なされますが、そのリンク先のページに注意事項があります。

ドライブがUSBタイプのドライブであるかどうかを判断するには、SetupDiGetDeviceRegistryPropertyを呼び出し、SPDRP_REMOVAL_POLICYプロパティを指定します。

最初にパスだけを使用する場合、プロセスは少し面倒に見えますが、ここでドキュメントを読み始めることができます。ドライブに一致するデバイスが見つかるまで、デバイスを列挙する必要があるようです。

すべてのリクエストに対してこれを行わないようにするために、2段階のチェックを行います。現在のメソッドで修正されていないと表示されている場合は、非ローカルとして扱います。

修正されたと表示されている場合、提案された方法を使用してデバイスを確実に列挙できます。

または、最初に必要なときにすべての固定非USBドライブを列挙してから、情報をキャッシュすることもできます。システムの実行中にこれらのドライブのリストが変更されることはないと確信しています。追加および削除されたドライブは、定義上、取り外し可能です。

于 2013-01-31T08:19:29.987 に答える