Freigeben über


NtGetNotificationResourceManager-Funktion (wdm.h)

Die ZwGetNotificationResourceManager Routine ruft die nächste Transaktionsbenachrichtigung aus der Benachrichtigungswarteschlange eines angegebenen Ressourcenmanagers ab.

Syntax

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

Parameter

[in] ResourceManagerHandle

Ein Handle für ein Ressourcen-Manager-Objekt, das durch einen vorherigen Aufruf von ZwCreateResourceManager oder ZwOpenResourceManagerabgerufen wurde. Das Handle muss über RESOURCEMANAGER_GET_NOTIFICATION Zugriff auf das Objekt verfügen.

[out] TransactionNotification

Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der Informationen über die abgerufene Benachrichtigung empfängt. Der Puffer muss groß genug sein, um eine TRANSACTION_NOTIFICATION Struktur sowie zusätzliche Benachrichtigungsspezifische Argumente zu enthalten.

[in] NotificationLength

Die Länge des Puffers, auf den der TransactionNotification Parameter verweist.

[in] Timeout

Ein Zeiger auf einen Wert, der eine relative oder absolute Zeit in Einheiten von 100 Nanosekunden angibt. Dieser Zeiger ist optional und kann NULL-sein.

Wenn der Zeiger NULL-ist, wird ZwGetNotificationResourceManager erst zurückgegeben, wenn eine Transaktionsbenachrichtigung verfügbar ist. Wenn ein Zeitwert angegeben wird, gibt ZwGetNotificationResourceManager zurück, wenn eine Benachrichtigung verfügbar ist oder nach Ablauf der angegebenen Zeit, je nachdem, was zuerst eintritt.

Ein negativer Wert gibt eine Zeit an, die relativ zur aktuellen Systemzeit ist. Beispielsweise verursacht ein relativer Zeitwert von fünf Sekunden ZwGetNotificationResourceManager fünf Sekunden nach dem Aufruf timeout.

Ein positiver Wert gibt eine absolute Zeit an, die tatsächlich relativ zu 00:00, 1. Januar 1601, liegt. Wenn ein absoluter Zeitwert angegeben wird, fügt das Betriebssystem den absoluten Zeitwert zum Zeitwert hinzu, der 00:00, 1. Januar 1601 darstellt.

Wenn der Aufrufer einen Nullwert angibt (anstelle eines NULL- Zeigers), gibt ZwGetNotificationResourceManager sofort zurück, ob eine Benachrichtigung verfügbar ist oder nicht.

[out, optional] ReturnLength

Ein optionaler Zeiger auf eine Variable. Wenn dieser Zeiger nicht NULL-ist und der Wert des NotificationLength Parameters zu klein ist, gibt ZwGetNotificationResourceManager die erforderliche Länge in der Variablen an und gibt STATUS_BUFFER_TOO_SMALL zurück.

[in] Asynchronous

Ein ULONG-Wert, der null sein muss. ZwGetNotificationResourceManager unterstützt keine asynchronen Benachrichtigungen. Verwenden Sie TmEnableCallbacks-, um asynchrone Benachrichtigungen zu aktivieren.

[in, optional] AsynchronousContext

Ein Zeiger auf einen ULONG-Wert. Dieser Zeiger muss NULL-sein.

Rückgabewert

ZwGetNotificationResourceManager gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist und eine Benachrichtigung verfügbar ist. Andernfalls gibt diese Routine möglicherweise einen der folgenden Werte zurück:

Rückgabecode Beschreibung
STATUS_TIMEOUT
Das Timeoutintervall, das Timeout- angibt, bevor eine Benachrichtigung verfügbar wurde.
STATUS_OBJECT_TYPE_MISMATCH
Das angegebene Handle ist kein Handle für ein Ressourcen-Manager-Objekt.
STATUS_INVALID_HANDLE
Das Objekthandle ist ungültig.
STATUS_ACCESS_DENIED
Der Aufrufer hat keinen geeigneten Zugriff auf das Ressourcen-Manager-Objekt.
STATUS_BUFFER_TOO_SMALL
Der Wert des NotificationLength- Parameters ist zu klein.
 

Die Routine gibt möglicherweise andere NTSTATUS-Wertezurück.

Bemerkungen

Verwenden Sie die ZwGetNotificationResourceManager Routine, um Benachrichtigungen synchron abzurufen. Verwenden Sie die TmEnableCallbacks Routine, um asynchrone Benachrichtigungen zu aktivieren.

Die empfangene TRANSACTION_NOTIFICATION Struktur enthält den Listenschlüssel, den der Ressourcen-Manager beim Aufrufen ZwCreateEnlistmentangegeben hat. Sie können den Listenschlüssel verwenden, um die Liste zu identifizieren, für die die Benachrichtigung gilt.

Weitere Informationen zur ZwGetNotificationResourceManager Routine finden Sie unter Creating a Resource Manager.

NtGetNotificationResourceManager und ZwGetNotificationResourceManager sind zwei Versionen derselben Windows Native System Services-Routine.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx und ZwXxx- Versionen einer Windows Native System Services-Routine anders verhalten, wie sie Eingabeparameter behandeln und interpretieren. Weitere Informationen zur Beziehung zwischen den NtXxx und ZwXxx- Versionen einer Routine finden Sie unter Using Nt and Zw Versions of the Native System Services Routines.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Betriebssystemversionen.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- = PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs, PowerIrpDDis

Siehe auch

TRANSACTION_NOTIFICATION

TmEnableCallbacks

Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienste-Routinen

ZwCreateEnlistment

ZwCreateResourceManager

ZwOpenResourceManager