Функция NtGetNotificationResourceManager (wdm.h)
Подпрограмма ZwGetNotificationResourceManager извлекает уведомление о следующей транзакции из очереди уведомлений указанного диспетчера ресурсов.
Синтаксис
__kernel_entry NTSYSCALLAPI NTSTATUS NtGetNotificationResourceManager(
[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, если операция выполнена успешно и уведомление доступно. В противном случае эта подпрограмма может вернуть одно из следующих значений:
Код возврата | Описание |
---|---|
|
Интервал времени ожидания, задающий время ожидания , истекло до того, как уведомление стало доступным. |
|
Указанный дескриптор не является дескриптором для объекта Resource Manager. |
|
Недопустимый дескриптор объекта. |
|
Вызывающий объект не имеет соответствующего доступа к объекту Resource Manager. |
|
Значение параметра 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 | HwStorPortProhibitedDIs, PowerIrpDDis |