异步读取文件返回 ERROR_INVALID_HANDLE


尝试在设备上执行异步 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をコピーしました