由于客户端尝试使用该对象已经打开的句柄对服务器应用程序对象执行特权操作,ObjectPrivilegeAuditAlarm函数将生成审核消息。当前版本的Windows NT不支持警报。
BOOL ObjectPrivilegeAuditAlarm(
LPCTSTR 【SubsystemName】, | //指向子系统名称的字符串的指针 |
LPVOID 【HandleId】, | //指针处理标识符 |
HANDLE 【ClientToken】, | //处理客户端的访问令牌 |
DWORD 【DesiredAccess】, | //掩盖所需的访问权限 |
PPRIVILEGE_SET 【特权】, | //指向特权的指针 |
BOOL 【AccessGranted】 | //标志为结果 |
); |
参数
【SubsystemName】
指向一个以null结尾的字符串,指定调用函数的子系统的名称;例如“DEBUG”或“WIN32”。
【HandleId】
指向一个唯一的32位值,表示客户端对象的句柄。
【ClientToken】
标识表示客户端请求操作的访问令牌。必须通过打开假冒客户端的线程的令牌来获取此句柄。必须打开令牌才能进行TOKEN_QUERY访问。
【DesiredAccess】
指定访问掩码,指示正在使用的特权访问类型或正在尝试使用的访问类型。访问掩码可以由MapGenericMask函数映射,因此它不包含任何通用访问类型。
【特权】
指向PRIVILEGE_SET结构,指定所请求操作所需的权限集。此结构中的信息通过调用PrivilegeCheck函数提供。此参数可以为NULL。
【AccessGranted】
指定一个标志,指示在前一次调用访问检查功能(如PrivilegeCheck)时是否授予访问权限。如果访问被授予,则该标志为TRUE。如果没有,则为FALSE。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
ObjectPrivilegeAuditAlarm功能要求呼叫进程具有SE_AUDIT_NAME特权。此特权的测试总是针对调用进程的主令牌执行,而不是线程的模拟令牌。这允许呼叫过程在呼叫期间模拟客户端。
ObjectPrivilegeAuditAlarm功能可以向端口对象发送许多消息。这可能导致函数返回之前的显着延迟。调用ObjectPrivilegeAuditAlarm的应用程序的设计可以考虑这个潜在的延迟。例如,这种考虑可能会影响使用互斥锁来锁定结构的应用程序的设计。
也可以看看
AccessCheck, AccessCheckAndAuditAlarm, AreAllAccessesGranted, AreAnyAccessesGranted, MapGenericMask, ObjectCloseAuditAlarm, ObjectOpenAuditAlarm, PrivilegeCheck, PrivilegedServiceAuditAlarm, PRIVILEGE_SET