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