C - STATUS_PENDING是什么意思



我没有关于NT进程的概念,因为我使用的是本机API,因为它们返回的值如STATUS_TIMEOUTSTATUS_PENDING等。STATUS_PENDING到底是什么意思?

我的代码是这样的。

NTSTATUS rc;
rc = NtReadFile(
                            Keybrds[iLoop].hKeyboard,
                            Keybrds[iLoop].hEvent,
                            NULL,
                            NULL,
                            &IoStatusBlock,
                            &KbData,
                            sizeof(KEYBOARD_INPUT_DATA),
                            &ByteOffset,
                            NULL
                            );

在这里,NtReadFile()返回STATUS_PENDING,这意味着什么?

这意味着 I/O 操作挂起,您应该等待句柄完成。这也可能意味着文件句柄以异步模式打开;如果要同步,则应在同步模式下打开句柄,以避免首先出现STATUS_PENDING

NtReadFile[

ZwReadFile]是同一Windows本机系统服务例程的两个版本。根据文档

返回值

ZwReadFile 返回STATUS_SUCCESS或相应的 NTSTATUS 错误代码。

是的,STATUS_PENDING是返回错误代码。它被记录为

0x00000103 STATUS_PENDING 请求的操作正在等待完成。

此消息指示使用同一句柄的某些 I/O 操作已挂起。句柄可能是在异步模式下打开的,因此通过返回值 STATUS_PENDING ,调用方将等待该句柄上的持续操作完成。

如果文件句柄以异步模式打开,则NtReadFile ()不会在句柄上等待自身。OTOH,对于具有同步模式的句柄,NtReadFile ()将等待 [block] 直到读取操作完成。

现在,至于NTSTATUS error code部分的详细信息,您可以查看此处。

相关内容

  • 没有找到相关文章

最新更新