Поделиться через


Функция TmReferenceEnlistmentKey (wdm.h)

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

Синтаксис

NTSTATUS TmReferenceEnlistmentKey(
  [in]  PKENLISTMENT Enlistment,
  [out] PVOID        *Key
);

Параметры

[in] Enlistment

Указатель на объект зачисления. Компонент может получать этот указатель в качестве входных данных для процедуры обратного вызова ResourceManagerNotification . Кроме того, компонент может вызвать ObReferenceObjectByHandle и предоставить дескриптор объекта, указанный при предыдущем вызове ZwCreateEnlistment, TmCreateEnlistment или ZwOpenEnlistment .

[out] Key

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

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

TmReferenceEnlistmentKey возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае эта подпрограмма может возвращать одно из следующих значений:

Код возврата Описание
STATUS_INVALID_PARAMETER
Значение параметра Key равно NULL.
STATUS_UNSUCCESSFUL
Число ссылок указанного объекта зачисления уменьшено до нуля, поэтому количество ссылок нельзя увеличить.
STATUS_INSUFFICIENT_RESOURCES
Число ссылок находится на максимальном значении (0xFFFFFFFF) и не может быть увеличено.
 

Подпрограмма может возвращать другие значения NTSTATUS.

Комментарии

Подпрограмма TmReferenceEnlistmentKey увеличивает число ссылок для значения ключа объекта зачисления, а подпрограмма TmDereferenceEnlistmentKey уменьшает число.

Если диспетчер ресурсов определил значение ключа для зачисления, диспетчер ресурсов получает значение ключа при вызове ZwGetNotificationResourceManager или при вызове KTM процедуры обратного вызова ResourceManagerNotification .

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

Сведения о том, когда следует использовать подпрограммы KTM TmXxx вместо процедур ZwXxx , см. в разделе Использование подпрограмм TmXxx.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционной системы.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

См. также раздел

ObReferenceObjectByHandle

ResourceManagerNotification

TmCreateEnlistment

TmDereferenceEnlistmentKey

ZwCreateEnlistment

ZwOpenEnlistment