SetIoRingCompletionEvent 函数 (ioringapi.h)
向 I/O 环注册完成队列事件。
语法
HRESULT SetIoRingCompletionEvent(
HIORING ioRing,
HANDLE hEvent
);
parameters
ioRing
表示为其注册完成事件的 I/O 环的句柄的 HIORING 。
hEvent
事件对象的句柄。 CreateEvent 或 OpenEvent 函数返回此句柄。
返回值
返回包含以下值的 HRESULT:
值 | 说明 |
---|---|
S_OK | 成功 |
E_INVALID_HANDLE | ioRing 参数中传递了无效句柄。 |
E_INVALIDARG | hEvent 参数中传递了无效句柄。 |
注解
内核会在将第一个条目放入空完成队列时发出此事件信号,也就是说,仅当完成队列从空状态转换为非空状态时,内核才会将事件设置为信号状态。 应用程序应调用 PopIoRingCompletion ,直到它指示不再输入,然后等待通过提供的 HANDLE 完成任何其他异步完成。 否则,事件不会进入信号状态,并且等待可能会阻塞,直到超时发生,或者在使用无限超时时会永久停止。
内核将在内部复制句柄,因此当不再需要等待时,应用程序可以安全地关闭句柄。 提供事件句柄值 NULL 只是清除任何现有值。 将值设置为 INVALID_HANDLE_VALUE 会引发错误,就像任何其他无效句柄值一样,以帮助及早检测代码 bug。
最多有一个与 HIORING 关联的事件句柄,尝试设置第二个事件句柄将替换已存在的任何事件句柄。
要求
最低受支持的客户端 | Windows 内部版本 22000 |
最低受支持的服务器 | Windows 内部版本 22000 |
标头 | ioringapi.h |