win_wrap::threading

Function create_event

Source
pub fn create_event(
    event_attributes: Option<*const SECURITY_ATTRIBUTES>,
    manual_reset: bool,
    initial_state: bool,
    name: Option<&str>,
) -> HANDLE
Expand description

建立或开启具名或未命名的事件对象。 若要指定对象的访问屏蔽,请使用 create_event_ex 函数。 event_attributes SECURITY_ATTRIBUTES结构。如果此参数为 Null,子进程就无法继承句柄。结构的 lpSecurityDescriptor 成员会指定新事件的安全性描述符。如果 lpEventAttributes 为 Null,事件会取得默认的安全性描述符。事件的默认安全性描述符中的 ACL 来自创建者的主要或模拟权限。 manual_reset 如果此参数为TRUE,此函数会建立手动重置事件对象,这需要使用 reset_event 函数将事件状态设定为非signaled。如果此参数为 FALSE,此函数会建立自动重置事件对象,而且系统会在释放单一等候线程之后,自动将事件状态重设为非signaled。 initial_state 如果此参数为TRUE,则会发出事件对象的初始状态信号;否则,则为非signaled。 name 事件对象的名称。名称限制为 MAX_PATH个字符。名称比较区分大小写。如果 name 符合现有具名事件对象的名称,此函式会要求 EVENT_ALL_ACCESS 访问权限。在此情况下,系统会忽略 manual_reset 和 initial_state 参数,因为它们已经由建立进程设定。如果 event_attributes 参数不是 Null,它会判断是否可以继承句柄,但会忽略其安全性描述符成员。如果 name 为 Null,则会建立事件对象,而不需要名称。如果 name 符合相同命名空间中另一种对象的名称,(例如现有的号志、mutex、可等候计时器、作业或文件对应对象),则函数会失败,而且 get_last_error 函数会传回 ERROR_INVALID_HANDLE。这是因为这些对象共享相同的命名空间。名称可以有 Global 或 「Local」 前置词,以在全局或会话命名空间中明确建立对象。名称的其余部分可以包含反斜线字符(\)以外的任何字符。使用终端机服务会话实作快速用户切换。核心对象名称必须遵循终端机服务概述的指导方针,让应用程序可以支持多个用户。对象可以在私用命名空间中建立。