Función ZwGetNotificationResourceManager (wdm.h)

La rutina ZwGetNotificationResourceManager recupera la siguiente notificación de transacción de la cola de notificaciones de un administrador de recursos especificado.

Sintaxis

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
);

Parámetros

[in] ResourceManagerHandle

Identificador de un objeto de administrador de recursos obtenido por una llamada anterior a ZwCreateResourceManager o ZwOpenResourceManager. El identificador debe tener RESOURCEMANAGER_GET_NOTIFICATION acceso al objeto .

[out] TransactionNotification

Puntero a un búfer asignado por el autor de la llamada que recibe información sobre la notificación recuperada. El búfer debe ser lo suficientemente grande como para contener una estructura de TRANSACTION_NOTIFICATION más argumentos específicos de notificación adicionales.

[in] NotificationLength

Longitud, en bytes, del búfer al que apunta el parámetro TransactionNotification .

[in] Timeout

Puntero a un valor que especifica un tiempo relativo o absoluto, en unidades de 100 nanosegundos. Este puntero es opcional y puede ser NULL.

Si el puntero es NULL, ZwGetNotificationResourceManager no devuelve hasta que haya disponible una notificación de transacción. Si se especifica un valor de hora, ZwGetNotificationResourceManager devuelve cuando una notificación está disponible o después de que transcurre el tiempo especificado, lo que ocurra primero.

Un valor negativo especifica una hora relativa a la hora actual del sistema. Por ejemplo, un valor de tiempo relativo de cinco segundos hace que ZwGetNotificationResourceManager agote el tiempo de espera cinco segundos después de llamar a .

Un valor positivo especifica una hora absoluta, que es realmente relativa a las 00:00, 1 de enero de 1601. Si se especifica un valor de hora absoluto, el sistema operativo agrega el valor de hora absoluto al valor de hora que representa 00:00, 1 de enero de 1601.

Si el autor de la llamada especifica un valor cero (en lugar de un puntero NULL ), ZwGetNotificationResourceManager devuelve inmediatamente, si una notificación está disponible o no.

[out, optional] ReturnLength

Puntero opcional a una variable. Si este puntero no es NULL y el valor del parámetro NotificationLength es demasiado pequeño, ZwGetNotificationResourceManager proporciona la longitud necesaria en la variable y devuelve STATUS_BUFFER_TOO_SMALL.

[in] Asynchronous

Valor de ULONG que debe ser cero. ZwGetNotificationResourceManager no admite notificaciones asincrónicas. Use TmEnableCallbacks para habilitar las notificaciones asincrónicas.

[in, optional] AsynchronousContext

Puntero a un valor de ULONG. Este puntero debe ser NULL.

Valor devuelto

ZwGetNotificationResourceManager devuelve STATUS_SUCCESS si la operación se realiza correctamente y hay disponible una notificación. De lo contrario, esta rutina podría devolver uno de los siguientes valores:

Código devuelto Descripción
STATUS_TIMEOUT
Intervalo de tiempo de espera que timeout especifica transcurrido antes de que una notificación esté disponible.
STATUS_OBJECT_TYPE_MISMATCH
El identificador especificado no es un identificador para un objeto de Resource Manager.
STATUS_INVALID_HANDLE
El identificador de objeto no es válido.
STATUS_ACCESS_DENIED
El autor de la llamada no tiene el acceso adecuado al objeto de Resource Manager.
STATUS_BUFFER_TOO_SMALL
El valor del parámetro NotificationLength es demasiado pequeño.
 

La rutina podría devolver otros valores NTSTATUS.

Comentarios

Use la rutina ZwGetNotificationResourceManager para obtener notificaciones de forma sincrónica. Use la rutina TmEnableCallbacks para habilitar las notificaciones asincrónicas.

La estructura de TRANSACTION_NOTIFICATION recibida contiene la clave de inscripción que el administrador de recursos especificó cuando llamó a ZwCreateEnlistment. Puede usar la clave de inscripción para identificar la inscripción a la que se aplica la notificación.

Para obtener más información sobre la rutina ZwGetNotificationResourceManager, vea Creating a Resource Manager.

NtGetNotificationResourceManager y ZwGetNotificationResourceManager son dos versiones de la misma rutina de Windows Native System Services.

En el caso de las llamadas desde controladores en modo kernel, las versiones NtXxx y ZwXxx de una rutina de Windows Native System Services pueden comportarse de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores del sistema operativo.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL = PASSIVE_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

TRANSACTION_NOTIFICATION

TmEnableCallbacks

Uso de las versiones Nt y Zw de las rutinas nativas de System Services

ZwCreateEnlistment

ZwCreateResourceManager

ZwOpenResourceManager