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

Подпрограмма ZwGetNotificationResourceManager извлекает уведомление о следующей транзакции из очереди уведомлений указанного диспетчера ресурсов.

Синтаксис

NTSYSCALLAPI NTSTATUS ZwGetNotificationResourceManager(
  [in]            HANDLE                    ResourceManagerHandle,
  [out]           PTRANSACTION_NOTIFICATION TransactionNotification,
  [in]            ULONG                     NotificationLength,
  [in]            PLARGE_INTEGER            Timeout,
  [out, optional] PULONG                    ReturnLength,
  [in]            ULONG                     Asynchronous,
  [in, optional]  ULONG_PTR                 AsynchronousContext
);

Параметры

[in] ResourceManagerHandle

Дескриптор объекта Resource Manager , полученный при предыдущем вызове ZwCreateResourceManager или ZwOpenResourceManager. Дескриптор должен иметь RESOURCEMANAGER_GET_NOTIFICATION доступ к объекту .

[out] TransactionNotification

Указатель на буфер, выделенный вызывающим объектом, который получает сведения о полученном уведомлении. Буфер должен быть достаточно большим, чтобы содержать структуру TRANSACTION_NOTIFICATION и дополнительные аргументы, относящиеся к уведомлению.

[in] NotificationLength

Длина (в байтах) буфера, на который указывает параметр TransactionNotification .

[in] Timeout

Указатель на значение, указывающее относительное или абсолютное время в единицах 100 наносекунд. Этот указатель является необязательным и может иметь значение NULL.

Если указатель имеет значение NULL, ZwGetNotificationResourceManager не возвращается, пока не будет доступно уведомление о транзакции. Если указано значение времени, ZwGetNotificationResourceManager возвращает значение , когда уведомление доступно или по истечении указанного времени, в зависимости от того, что наступит раньше.

Отрицательное значение указывает время относительно текущего системного времени. Например, относительное значение времени, равное пяти секундам, приводит к тому, что ZwGetNotificationResourceManager истекает время ожидания через пять секунд после вызова.

Положительное значение указывает абсолютное время, которое фактически относительно 00:00 1 января 1601 г. Если указано абсолютное значение времени, операционная система добавляет абсолютное значение времени к значению времени, представляющее 00:00 1 января 1601 г.

Если вызывающий объект задает нулевое значение (вместо указателя NULL ), ZwGetNotificationResourceManager немедленно возвращает значение, независимо от того, доступно ли уведомление.

[out, optional] ReturnLength

Необязательный указатель на переменную. Если этот указатель не равен NULL и значение параметра NotificationLength слишком мало, ZwGetNotificationResourceManager предоставляет необходимую длину в переменной и возвращает STATUS_BUFFER_TOO_SMALL.

[in] Asynchronous

Значение ULONG, которое должно быть равно нулю. ZwGetNotificationResourceManager не поддерживает асинхронные уведомления. Используйте TmEnableCallbacks для включения асинхронных уведомлений.

[in, optional] AsynchronousContext

Указатель на значение ULONG. Этот указатель должен иметь значение NULL.

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

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

Код возврата Описание
STATUS_TIMEOUT
Интервал времени ожидания, в котором указано время ожидания , истекло до того, как уведомление стало доступным.
STATUS_OBJECT_TYPE_MISMATCH
Указанный дескриптор не является дескриптором для объекта Resource Manager.
STATUS_INVALID_HANDLE
Недопустимый дескриптор объекта.
STATUS_ACCESS_DENIED
Вызывающий объект не имеет соответствующего доступа к объекту Resource Manager.
STATUS_BUFFER_TOO_SMALL
Значение параметра NotificationLength слишком мало.
 

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

Комментарии

Используйте подпрограмму ZwGetNotificationResourceManager для синхронного получения уведомлений. Используйте подпрограмму TmEnableCallbacks для включения асинхронных уведомлений.

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

Дополнительные сведения о подпрограмме ZwGetNotificationResourceManager см. в разделе Создание Resource Manager.

NtGetNotificationResourceManager и ZwGetNotificationResourceManager — это две версии одной и той же подпрограммы Windows Native System Services.

Для вызовов из драйверов режима ядра версии NtXxx и ZwXxx подпрограммы собственных системных служб Windows могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями процедуры NtXxx и ZwXxx см. в разделе Использование версий Nt и Zw для процедур собственных системных служб.

Требования

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

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

TRANSACTION_NOTIFICATION

TmEnableCallbacks

Использование версий Nt и Zw собственных процедур системных служб

ZwCreateEnlistment

ZwCreateResourceManager

ZwOpenResourceManager