[ad_1]
デバイス上で非同期 I/O を実行しようとしています。 私の問題は、ReadFile が ERROR_INVALID_HANDLE を返すことです。
Handle と OVERLAPPED hEvent の両方が初期化されていると思いますので、誰かが私が間違っていることを教えていただければ幸いです。
私が試したこと:
これは私が使用しているコードです:
HANDLE Handle = CreateFileA( ndisprot630, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL ); if (Handle == INVALID_HANDLE_VALUE) { DEBUGP("CreateFile failed, error 0x%x\n", GetLastError()); return(INVALID_HANDLE_VALUE); } OVERLAPPED ol = { 0 }; ol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); char buf[1500]; if (!ReadFile(Handle, buf, sizeof(buf), NULL, &ol)) { if (GetLastError() != ERROR_IO_PENDING) { DEBUGP("Error starting ReadFile 0x%x\n", GetLastError()); } }
解決策 1
他のファイルの読み取り/書き込みまたは作成と同様に、最初からファイル パスにアクセス権があることを確認してください。つまり、その場所にメモ帳のテキスト ファイルを手動で作成して、アクセスをテストしてみてください。 それが失敗した場合、プログラムによるアプローチでは他のすべてが失敗することになります。
[ad_2]
コメント