Windows 安全模型使你能够控制对事件、互斥体、信号灯和可等待计时器对象的访问。 计时器队列、联锁变量和关键节对象不可安全。 有关详细信息,请参阅 Access-Control 模型。
调用 createEvent、CreateMutex、CreateSemaphore或 CreateWaitableTimer 函数时,可以为进程间同步对象指定 安全描述符。 如果指定 NULL,则该对象将获取默认的安全描述符。 同步对象的默认安全描述符中的 Access-Control 列表(ACL) 来自创建者的主要或模拟令牌。
若要获取或设置事件、mutex、信号灯或可等待计时器对象的安全描述符,请调用 GetNamedSecurityInfo、SetNamedSecurityInfo、GetSecurityInfo或 SetSecurityInfo 函数。
CreateEvent、CreateMutex、CreateSemaphore返回的句柄,CreateWaitableTimer 具有对新对象的完全访问权限。 调用 OpenEvent、OpenMutex、OpenSemaphore和 OpenWaitableTimer 函数时,系统会根据对象的安全描述符检查请求的访问权限。
进程间同步对象的有效访问权限包括 标准访问权限 和某些特定于对象的访问权限。 下表列出了所有对象使用的标准访问权限。
价值 | 意义 |
---|---|
DELETE (0x00010000L) | 需要删除对象。 |
READ_CONTROL (0x00020000L) | 在对象的安全描述符中读取信息(不包括 SACL 中的信息)所必需的。 若要读取或写入 SACL,必须请求 ACCESS_SYSTEM_SECURITY 访问权限。 有关详细信息,请参阅 SACL 访问权限。 |
SYNCHRONIZE (0x001000000L) | 使用对象进行同步的权限。 这使线程可以等待对象处于信号状态。 |
WRITE_DAC (0x00040000L) | 在对象的安全描述符中修改 DACL 所必需的。 |
WRITE_OWNER (0x00080000L) | 在对象的安全描述符中更改所有者所必需的。 |
下表列出了事件对象的特定于对象的访问权限。 除了标准访问权限之外,还支持这些权限。
价值 | 意义 |
---|---|
EVENT_ALL_ACCESS(0x1F0003) | 事件对象的所有可能访问权限。 仅当应用程序需要超出标准访问权限和 EVENT_MODIFY_STATE授予的访问权限时,才使用此权限。 使用此访问权限会增加应用程序必须由管理员运行的可能性。 |
EVENT_MODIFY_STATE(0x0002) | 修改 SetEvent、ResetEvent 和 PulseEvent 函数所需的状态访问。 |
下表列出了互斥对象特定于对象的访问权限。 除了标准访问权限之外,还支持这些权限。
价值 | 意义 |
---|---|
MUTEX_ALL_ACCESS(0x1F0001) | 互斥体对象的所有可能访问权限。 仅当应用程序需要超出标准访问权限授予的访问权限时,才使用此权限。 使用此访问权限会增加应用程序必须由管理员运行的可能性。 |
MUTEX_MODIFY_STATE(0x0001) | 保留以供将来使用。 |
下表列出了信号灯对象的特定于对象的访问权限。 除了标准访问权限之外,还支持这些权限。
价值 | 意义 |
---|---|
SEMAPHORE_ALL_ACCESS(0x1F0003) | 信号灯对象的所有可能访问权限。 仅当应用程序需要超出标准访问权限和 SEMAPHORE_MODIFY_STATE授予的访问权限时,才使用此权限。 使用此访问权限会增加应用程序必须由管理员运行的可能性。 |
SEMAPHORE_MODIFY_STATE(0x0002) | 修改 ReleaseSemaphore 函数所需的状态访问。 |
下表列出了可等待计时器对象的特定于对象的访问权限。 除了标准访问权限之外,还支持这些权限。
价值 | 意义 |
---|---|
TIMER_ALL_ACCESS(0x1F0003) | 可等待计时器对象的所有可能访问权限。 仅当应用程序需要超出标准访问权限和 TIMER_MODIFY_STATE授予的访问权限时,才使用此权限。 使用此访问权限会增加应用程序必须由管理员运行的可能性。 |
TIMER_MODIFY_STATE(0x0002) | 修改 SetWaitableTimer 和 CancelWaitableTimer 函数所需的状态访问。 |
TIMER_QUERY_STATE(0x0001) | 保留以供将来使用。 |
若要读取或写入进程间同步对象的 SACL,必须请求 ACCESS_SYSTEM_SECURITY 访问权限。 有关详细信息,请参阅 Access-Control 列表(ACL) 和 SACL 访问权限。