obGetObjectSecurity 函数 (wdm.h)
ObGetObjectSecurity 例程获取给定对象的安全描述符。
语法
NTSTATUS ObGetObjectSecurity(
[in] PVOID Object,
[out] PSECURITY_DESCRIPTOR *SecurityDescriptor,
[out] PBOOLEAN MemoryAllocated
);
参数
[in] Object
指向 对象的指针。
[out] SecurityDescriptor
指向调用方提供的变量的指针,此例程将该变量设置为包含给定对象的 SECURITY_DESCRIPTOR 的缓冲区的地址。 如果给定对象没有安全描述符,则从 ObGetObjectSecurity 返回时,此变量将设置为 NULL。
[out] MemoryAllocated
指向调用方提供的变量的指针,如果此例程分配了一个缓冲区以包含安全描述符,则此例程会将该变量设置为 TRUE 。
返回值
ObGetObjectSecurity 返回STATUS_SUCCESS或错误状态,例如,如果无法分配足够的内存来返回请求的信息,则返回STATUS_INSUFFICIENT_RESOURCES。
注解
成功调用 ObGetObjectSecurity 要么在 *SecurityDescriptor 处的缓冲区中返回自相对安全描述符,如果给定对象没有安全描述符,则返回 *SecurityDescriptor 处的 NULL。 例如,任何未命名的对象(如事件对象)都没有安全描述符。
如果 ObGetObjectSecurity 返回STATUS_SUCCESS,则调用方必须保存 MemoryAllocated 处返回的值。 此类调用方最终必须在对 ObReleaseObjectSecurity 的倒数调用中传递 MemoryAllocated,从而将安全描述符上的引用计数还原为其原始值,并释放由 ObGetObjectSecurity 分配的缓冲区(如果有)。
ObGetObjectSecurity 只能在启用 APC 的情况下在 IRQL 级别 = PASSIVE_LEVEL调用,否则可能发生死锁或崩溃。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) , IrqlApcLte (wdm) |