共用方式為


ObReferenceObjectWithTag 宏 (wdm.h)

ObReferenceObjectWithTag 例程會遞增指定對象的參考計數,並將四位元組標記值寫入物件,以支援對象參考追蹤

語法

void ObReferenceObjectWithTag(
  [in]  Object,
  [in]  Tag
);

參數

[in] Object

物件的指標。 呼叫端會在建立 物件時,或從上一次呼叫 ObReferenceObjectByHandleWithTag 例程開啟對象之後取得這個指標。

[in] Tag

指定四位元組的自訂標籤值。 如需詳細資訊,請參閱接下來的<備註>一節。

傳回值

備註

ObReferenceObjectWithTag 會傳回保留給系統使用的值。 驅動程式必須將此值視為 VOID。

ObReferenceObjectWithTag 只會遞增物件的指標參考計數,而不會對指定的物件進行任何存取檢查。 相反地, ObReferenceObjectByHandleWithTagObReferenceObjectByPointerWithTag 例程會確認呼叫端具有物件的必要訪問許可權,如果呼叫端沒有這些許可權,則會失敗。

ObReferenceObjectWithTag 呼叫會防止刪除指定的物件,直到驅動程式呼叫 ObDereferenceObjectWithTag 例程或關閉對象為止。 不再需要對象之後,驅動程式必須呼叫 ObDereferenceObjectWithTag ,以移除對象的參考。

當對象的參考計數達到零時,內核模式元件可以刪除物件。 不過,驅動程式只能刪除它所建立的物件,而且驅動程式不應該嘗試刪除它未建立的任何物件。

如需對象參考的詳細資訊,請參閱 物件的生命週期

ObReferenceObject 例程類似於 ObReferenceObjectWithTag,不同之處在於它不會讓呼叫端將自定義標籤寫入物件。 在 Windows 7 和更新版本的 Windows 中, ObReferenceObject 一律會將默認標籤值寫入物件 ('tlfD') 。 呼叫 ObReferenceObject 的效果與指定 Tag = 'tlfD' 的 ObReferenceObjectWithTag 呼叫相同。

若要在 Windows 偵錯工具中檢視對象參考追蹤,請使用 !obtrace 內核模式調試程式延伸模組。 在 Windows 7 中,如果已啟用對象參考追蹤, 則會增強 !obtrace 延伸模組以顯示物件參考標記。 根據預設,對象參考追蹤會關閉。 使用 全域旗標編輯器 (Gflags) 來啟用對象參考追蹤。 如需詳細資訊,請參閱 對象參考追蹤與標記

規格需求

需求
最低支援的用戶端 適用於 Windows 7 和更新版本的 Windows 作業系統。
目標平台 桌面
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Fltkernel.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 HwStorPortProhibitedDIS (storport)

另請參閱

ObDereferenceObjectWithTag

ObReferenceObject

ObReferenceObjectByHandleWithTag

ObReferenceObjectByPointerWithTag