son*_*pta 1 c windows operating-system native nt-native-api
我没有收到关于NT进程,因为我使用他们正在返回像值的本地APIs.Since概念STATUS_TIMEOUT,STATUS_PENDINGetc.What不STATUS_PENDING究竟意味着什么?
我的代码是这样的.
NTSTATUS rc;
rc = NtReadFile(
Keybrds[iLoop].hKeyboard,
Keybrds[iLoop].hEvent,
NULL,
NULL,
&IoStatusBlock,
&KbData,
sizeof(KEYBOARD_INPUT_DATA),
&ByteOffset,
NULL
);
Run Code Online (Sandbox Code Playgroud)
在这里,NtReadFile()回归STATUS_PENDING,这意味着什么?
NtReadFile[和ZwReadFile]是同一Windows本机系统服务例程的两个版本.根据文档
返回值
ZwReadFile返回STATUS_SUCCESS或相应的NTSTATUS错误代码.
是的,STATUS_PENDING是一个返回错误代码.它被记录为
0x00000103 STATUS_PENDING请求的操作正在等待完成.
此消息表明使用相同句柄的某些I/O操作已挂起.句柄可能以异步模式打开,因此通过返回值STATUS_PENDING,调用者将等待该句柄上正在进行的操作的完成.
如果文件句柄在异步模式下打开,NtReadFile ()则不会在句柄上等待.对于具有同步模式的句柄,OTOH NtReadFile ()将等待[ 阻塞 ]直到读取操作完成.
现在,关于NTSTATUS error code部分的细节,你可以看看这里.