obReferenceObjectByPointer 函数 (wdm.h)

ObReferenceObjectByPointer 例程递增给定对象的指针引用计数。

语法

NTSTATUS ObReferenceObjectByPointer(
  [in]           PVOID           Object,
  [in]           ACCESS_MASK     DesiredAccess,
  [in, optional] POBJECT_TYPE    ObjectType,
  [in]           KPROCESSOR_MODE AccessMode
);

参数

[in] Object

指向对象主体的指针。

[in] DesiredAccess

指定一个掩码,该掩码表示对 对象的请求访问权限。

[in, optional] ObjectType

指向对象类型的指针。 ObjectType 可以是 *ExEventObjectType、*ExSemaphoreObjectType、*IoFileObjectType*PsProcessType、*PsThreadType、*SeTokenObjectType、*TmEnlistmentObjectType、*TmResourceManagerObjectType、*TmTransactionManagerObjectType 或 *TmTransactionObjectType

如果 AccessMode 为 KernelMode,此参数也可以NULL

[in] AccessMode

指示用于访问检查的访问模式。 它必须是 UserModeKernelMode。 较低级别的驱动程序应指定 KernelMode

返回值

当例程成功递增目标对象主体的引用计数时,ObReferenceObjectByPointer 返回STATUS_SUCCESS。 如果在用户模式下执行调用,并且调用方请求的类型与对象正文中的类型不匹配,则例程将执行对象类型验证,STATUS_OBJECT_TYPE_MISMATCH返回。 如果请求的类型是 ObpSymbolicLinkObjectType (符号链接类型,则返回相同的 NTSTATUS 代码) 该类型不受例程允许,无论访问模式的类型是什么。

注解

调用此例程可防止对象被删除,可能是通过另一个组件的 ObDereferenceObjectZwClose 调用。 调用方必须在使用 对象后立即使用 ObDereferenceObject 递减引用计数。

要求

要求
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) TargetRelationNeedsRef (wdm)

另请参阅

ObDereferenceObject

ObReferenceObject

ObReferenceObjectByHandle

ZwClose