SetIoRingCompletionEvent 函数 (ioringapi.h)

向 I/O 环注册完成队列事件。

语法

HRESULT SetIoRingCompletionEvent(
  HIORING ioRing,
  HANDLE  hEvent
);

parameters

ioRing

表示为其注册完成事件的 I/O 环的句柄的 HIORING

hEvent

事件对象的句柄。 CreateEventOpenEvent 函数返回此句柄。

返回值

返回包含以下值的 HRESULT:

说明
S_OK 成功
E_INVALID_HANDLE ioRing 参数中传递了无效句柄。
E_INVALIDARG hEvent 参数中传递了无效句柄。

注解

内核会在将第一个条目放入空完成队列时发出此事件信号,也就是说,仅当完成队列从空状态转换为非空状态时,内核才会将事件设置为信号状态。 应用程序应调用 PopIoRingCompletion ,直到它指示不再输入,然后等待通过提供的 HANDLE 完成任何其他异步完成。 否则,事件不会进入信号状态,并且等待可能会阻塞,直到超时发生,或者在使用无限超时时会永久停止。

内核将在内部复制句柄,因此当不再需要等待时,应用程序可以安全地关闭句柄。 提供事件句柄值 NULL 只是清除任何现有值。 将值设置为 INVALID_HANDLE_VALUE 会引发错误,就像任何其他无效句柄值一样,以帮助及早检测代码 bug。

最多有一个与 HIORING 关联的事件句柄,尝试设置第二个事件句柄将替换已存在的任何事件句柄。

要求

   
最低受支持的客户端 Windows 内部版本 22000
最低受支持的服务器 Windows 内部版本 22000
标头 ioringapi.h

另请参阅

PopIoRingCompletion