5

CreateFile の MSDN ページには、次のように記載されています。文字列"\\.\C:\"を使用して、C: ボリュームのファイル システムを開くことができます。ただし、次のコードは常にエラーを返します: ERROR_PATH_NOT_FOUND.

HANDLE h = CreateFile(L"\\\\.\\C:\\", FILE_READ_ATTRIBUTES, 
    FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);

引数を正しく渡すにはどうすればよいですか?

4

2 に答える 2

7

ボリューム ハンドル (I/O 制御コードで使用するため) が必要な場合は、末尾のスラッシュを削除する必要があります。

ルート ディレクトリへのハンドルを取得するには、末尾のスラッシュを保持し、引数でFILE_FLAG_BACKUP_SEMANTICSフラグを渡す必要があります。dwFlagsAndAttributesこれは、MSDN ページの「ディレクトリ」という見出しの下に記載されています。GetFileInformationByHandleたとえば、またはを呼び出す予定がある場合は、これを行う必要がありますGetFileInformationByHandleEx

ただし、通常、ファイルを一覧表示するためにルート ディレクトリへのハンドルを開くことはありません。代わりに、FindFirstFile/FindNextFileまたは関連する関数の 1 つを使用します。

于 2013-01-08T04:15:46.680 に答える
0

末尾のスラッシュを削除してみてください:

L"\\\\.\\C:"
于 2013-01-08T03:39:12.697 に答える