Макрос ObReferenceObjectWithTag (wdm.h)

Подпрограмма ObReferenceObjectWithTag увеличивает число ссылок указанного объекта и записывает в объект значение четырехбайтового тега для поддержки трассировки ссылок на объекты.

Синтаксис

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

Параметры

[in] Object

Указатель на объект . Вызывающий объект получает этот указатель либо при создании объекта, либо из предыдущего вызова подпрограммы ObReferenceObjectByHandleWithTag после открытия объекта .

[in] Tag

Задает четырехбайтовое значение настраиваемого тега. Дополнительные сведения см. в разделе "Примечания".

Возвращаемое значение

None

Remarks

ObReferenceObjectWithTag возвращает значение, зарезервированное для использования системой. Драйверы должны рассматривать это значение как VOID.

ObReferenceObjectWithTag просто увеличивает число ссылок указателя для объекта, не выполняя никаких проверок доступа к указанному объекту. В отличие от этого, подпрограммы ObReferenceObjectByHandleWithTag и ObReferenceObjectByPointerWithTag проверяют, что вызывающий объект имеет необходимые права доступа к объекту, и завершаются ошибкой, если вызывающий объект не имеет этих прав.

Вызов ObReferenceObjectWithTag предотвращает удаление указанного объекта по крайней мере до тех пор, пока драйвер не вызовет подпрограмму ObDereferenceObjectWithTag или не закроет объект . После того как объект больше не нужен, драйвер должен вызвать ObDereferenceObjectWithTag , чтобы удалить ссылку на объект .

Когда число ссылок для объекта достигает нуля, компонент режима ядра может удалить объект. Однако драйвер может удалить только те объекты, которые он создал, и драйвер никогда не должен пытаться удалить любой объект, который он не создал.

Дополнительные сведения о ссылках на объекты см. в разделе Жизненный цикл объекта.

Подпрограмма ObReferenceObject похожа на ObReferenceObjectWithTag, за исключением того, что она не позволяет вызывающему объекту записывать пользовательский тег. В Windows 7 и более поздних версиях Windows ObReferenceObject всегда записывает значение тега по умолчанию (tlfD) в объект . Вызов ObReferenceObject имеет тот же эффект, что и вызов ObReferenceObjectWithTag , указывающий Тег = 'tlfD'.

Чтобы просмотреть трассировку ссылок на объекты в средствах отладки 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