【解決方法】非同期読み取りファイルが ERROR_INVALID_HANDLE を返す

プログラミングQA


デバイス上で非同期 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

他のファイルの読み取り/書き込みまたは作成と同様に、最初からファイル パスにアクセス権があることを確認してください。つまり、その場所にメモ帳のテキスト ファイルを手動で作成して、アクセスをテストしてみてください。 それが失敗した場合、プログラムによるアプローチでは他のすべてが失敗することになります。

コメント

タイトルとURLをコピーしました