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
指出用於存取檢查的存取模式。 它必須是 UserMode 或 KernelMode。 較低層級的驅動程序應該指定 KernelMode。
傳回值
當例程成功遞增目標對象主體的參考計數時,ObReferenceObjectByPointer 會傳回STATUS_SUCCESS。 如果呼叫是在使用者模式中執行,而且呼叫端所要求的類型與對象主體中的類型不相符,則例程會執行物件類型驗證,STATUS_OBJECT_TYPE_MISMATCH傳回。 如果要求的類型是符號連結類型 (ObpSymbolicLinkObjectType) 例程不允許的符號連結類型,則會傳回相同的 NTSTATUS 程式代碼,不論何種存取模式為何。
備註
呼叫這個例程可防止刪除物件,可能是由另一個元件的 ObDereferenceObject 或 ZwClose 呼叫刪除。 呼叫端必須在物件完成時,使用 ObDereferenceObject 遞減參考計數。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIS (storport) 、 TargetRelationNeedsRef (wdm) |