2

USB フラッシュ ドライブへのハンドルを作成しようとすると、パスが見つからないというエラーが表示される理由を知りたいです。

HANDLE aFile = CreateFile(_T("\\\\.\\F:\\"), GENERIC_READ, 0, NULL,
        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    if (aFile == INVALID_HANDLE_VALUE)
    {
        printf("\n");
        printf("Bad handle value. Error %d \n", GetLastError());
    }

そこから 512 バイト (ブート セクタ) のストリームを .bin ファイルに読み込みたいのですが、最初にハンドルの作成を通過できないようです。Windows は、アプリケーションがリムーバブル ドライブへのハンドルを開くのを防ぎますか?

4

1 に答える 1

1

このコードには 2 つの問題があります。まず、パス。実際には、ドライブのルート フォルダーを指定しています。本当に必要なのはボリュームです。パスから末尾のバックスラッシュを削除します。すなわち _T("\\\\.\\F:")。次に、FILE_SHARE_READ | を指定する必要があります。FILE_SHARE_WRITE; 排他モードで開こうとしていますが、これは失敗します。詳細については、CreateFile に関する MSDN ドキュメントを参照してください。

于 2010-09-09T02:12:19.057 に答える