CreatePrivateObjectSecurity函数为新的受保护服务器的对象分配并初始化一个自相关的安全描述符。当创建新的受保护的服务器对象时,将调用此函数。
BOOL CreatePrivateObjectSecurity(
PSECURITY_DESCRIPTOR 【ParentDescriptor】, | //指向父目录SD的指针 |
PSECURITY_DESCRIPTOR 【CreatorDescriptor】, | //指向创建者SD的指针 |
PSECURITY_DESCRIPTOR【*】NewDescriptor, | //指向指向新SD的指针 |
BOOL 【IsDirectoryObject】, | //新的SD的容器标志 |
HANDLE 【代币】, | //处理客户端的访问令牌 |
PGENERIC_MAPPING 【GenericMapping】 | //指向访问权限结构的指针 |
); |
参数
【ParentDescriptor】
指向正在创建新对象的父目录的安全描述符。如果没有父目录,则此参数可以为NULL。
【CreatorDescriptor】
指向由对象的创建者提供的安全描述符。如果对象的创建者没有显式传递新对象的安全信息,则此参数旨在为NULL。
【lppsdNew】
指向函数返回时创建的新分配的安全描述符的指针。
【IsDirectoryObject】
指定新对象是否是容器。值为TRUE表示对象包含其他对象,例如目录。
【代币】
标识正在创建对象的客户端进程的访问令牌。如果这是一个模拟令牌,它必须在SecurityIdentification级别或更高级别。有关SecurityIdentification模拟级别的完整说明,请参阅SECURITY_IMPERSONATION_LEVEL枚举类型
客户端令牌用于检索新对象的默认安全信息,例如其默认所有者,主组和自由访问控制列表。必须打开令牌才能进行TOKEN_QUERY访问。
【GenericMapping】
指向GENERIC_MAPPING结构,指定从每个通用权限到对象的特定权限的映射。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
如果在【CreatorDescriptor】指定的SECURITY_DESCRIPTOR中指定了系统访问控制列表SACL,则【代币】必须启用SE_SECURITY_NAME特权,并且呼叫者的令牌必须启用SE_AUDIT_NAME特权。CreatePrivateObjectSecurity功能执行访问/特权检查以确保此函数,并可能在此过程中生成审核。
也可以看看
DestroyPrivateObjectSecurity, GENERIC_MAPPING, GetPrivateObjectSecurity, GetTokenInformation, OpenProcessToken, SECURITY_DESCRIPTOR, SECURITY_IMPERSONATION_LEVEL, SetPrivateObjectSecurity