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)

另请参阅

ObReferenceObjectByHandle

ObReleaseObjectSecurity

SECURITY_DESCRIPTOR