Condividi tramite


Funzione ZwGetNotificationResourceManager (wdm.h)

La routine ZwGetNotificationResourceManager recupera la notifica della transazione successiva da una coda di notifica di Resource Manager specificata.

Sintassi

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

Parametri

[in] ResourceManagerHandle

Handle a un oggetto resource manager ottenuto da una chiamata precedente a ZwCreateResourceManager o ZwOpenResourceManager. L'handle deve avere RESOURCEMANAGER_GET_NOTIFICATION accesso all'oggetto.

[out] TransactionNotification

Puntatore a un buffer allocato dal chiamante che riceve informazioni sulla notifica recuperata. Il buffer deve essere abbastanza grande per contenere una struttura TRANSACTION_NOTIFICATION più argomenti specifici della notifica aggiuntivi.

[in] NotificationLength

Lunghezza, in byte, del buffer a cui punta il parametro TransactionNotification .

[in] Timeout

Puntatore a un valore che specifica un tempo relativo o assoluto, in unità di 100 nanosecondi. Questo puntatore è facoltativo e può essere NULL.

Se il puntatore è NULL, ZwGetNotificationResourceManager non restituisce finché non è disponibile una notifica delle transazioni. Se viene specificato un valore di tempo, ZwGetNotificationResourceManager restituisce quando una notifica è disponibile o dopo l'intervallo di tempo specificato.

Un valore negativo specifica un'ora relativa all'ora di sistema corrente. Ad esempio, un valore di tempo relativo di cinque secondi causa il timeout di ZwGetNotificationResourceManager per il timeout di cinque secondi dopo la chiamata.

Un valore positivo specifica un tempo assoluto, che è effettivamente relativo alle 00:00, 1 gennaio 1601. Se viene specificato un valore di tempo assoluto, il sistema operativo aggiunge il valore di ora assoluto al valore di ora che rappresenta 00:00, 1 gennaio 1601.

Se il chiamante specifica un valore zero (anziché un puntatore NULL ), ZwGetNotificationResourceManager restituisce immediatamente, se una notifica è disponibile o meno.

[out, optional] ReturnLength

Puntatore facoltativo a una variabile. Se questo puntatore non è NULL e se il valore del parametro NotificationLength è troppo piccolo, ZwGetNotificationResourceManager fornisce la lunghezza richiesta nella variabile e restituisce STATUS_BUFFER_TOO_SMALL.

[in] Asynchronous

Valore ULONG che deve essere zero. ZwGetNotificationResourceManager non supporta le notifiche asincrone. Usare TmEnableCallback per abilitare le notifiche asincrone.

[in, optional] AsynchronousContext

Puntatore a un valore ULONG. Questo puntatore deve essere NULL.

Valore restituito

ZwGetNotificationResourceManager restituisce STATUS_SUCCESS se l'operazione ha esito positivo e se è disponibile una notifica. In caso contrario, questa routine potrebbe restituire uno dei valori seguenti:

Codice restituito Descrizione
STATUS_TIMEOUT
Intervallo di timeout specificato dall'intervallo di timeout prima della disponibilità di una notifica.
STATUS_OBJECT_TYPE_MISMATCH
L'handle specificato non è un handle per un oggetto resource manager.
STATUS_INVALID_HANDLE
L'handle dell'oggetto non è valido.
STATUS_ACCESS_DENIED
Il chiamante non dispone dell'accesso appropriato all'oggetto resource manager.
STATUS_BUFFER_TOO_SMALL
Il valore del parametro NotificationLength è troppo piccolo.
 

La routine potrebbe restituire altri valori NTSTATUS.

Commenti

Usare la routine ZwGetNotificationResourceManager per ottenere notifiche sincrone. Usare la routine TmEnableCallbacks per abilitare le notifiche asincrone.

La struttura di TRANSACTION_NOTIFICATION ricevuta contiene la chiave di inserimento specificata dal gestore risorse quando viene chiamata ZwCreateEnlistment. È possibile usare la chiave di inserimento per identificare l'elenco a cui si applica la notifica.

Per altre informazioni sulla routine ZwGetNotificationResourceManager, vedere Creazione di un Resource Manager.

NtGetNotificationResourceManager e ZwGetNotificationResourceManager sono due versioni della stessa routine di Windows Native System Services.

Per le chiamate dai driver in modalità kernel, le versioni NtXxx e ZwXxx di una routine di Windows Native System Services possono comportarsi in modo diverso nel modo in cui gestiscono e interpretano i parametri di input. Per altre informazioni sulla relazione tra le versioni NtXxx e ZwXxx di una routine, vedere Uso di nt e zw versioni delle routine di Servizi di sistema nativo.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive del sistema operativo.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL = PASSIVE_LEVEL
Regole di conformità DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Vedi anche

TRANSACTION_NOTIFICATION

TmEnableCallbacks

Uso di nt e zw versioni delle routine di Servizi di sistema nativo

ZwCreateEnlistment

ZwCreateResourceManager

ZwOpenResourceManager