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

如果 AccessModeKernelMode,此參數也可以是 NULL

[in] AccessMode

指出用於存取檢查的存取模式。 它必須是 UserModeKernelMode。 較低層級的驅動程序應該指定 KernelMode

傳回值

當例程成功遞增目標對象主體的參考計數時,ObReferenceObjectByPointer 會傳回STATUS_SUCCESS。 如果呼叫是在使用者模式中執行,而且呼叫端所要求的類型與對象主體中的類型不相符,則例程會執行物件類型驗證,STATUS_OBJECT_TYPE_MISMATCH傳回。 如果要求的類型是符號連結類型 (ObpSymbolicLinkObjectType) 例程不允許的符號連結類型,則會傳回相同的 NTSTATUS 程式代碼,不論何種存取模式為何。

備註

呼叫這個例程可防止刪除物件,可能是由另一個元件的 ObDereferenceObjectZwClose 呼叫刪除。 呼叫端必須在物件完成時,使用 ObDereferenceObject 遞減參考計數。

規格需求

需求
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL
DDI 合規性規則 HwStorPortProhibitedDIS (storport) TargetRelationNeedsRef (wdm)

另請參閱

ObDereferenceObject

ObReferenceObject

ObReferenceObjectByHandle

ZwClose