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

ZwCreateResourceManager または ZwOpenResourceManager の以前の呼び出しによって取得されたリソース マネージャー オブジェクトへのハンドル。 ハンドルには、 オブジェクトへのRESOURCEMANAGER_GET_NOTIFICATIONアクセス権が必要です。

[out] TransactionNotification

取得した通知に関する情報を受信する呼び出し元によって割り当てられたバッファーへのポインター。 バッファーは、 TRANSACTION_NOTIFICATION 構造体と追加の通知固有の引数を格納するのに十分な大きさである必要があります。

[in] NotificationLength

TransactionNotification パラメーターが指すバッファーの長さ (バイト単位)。

[in] Timeout

相対時間または絶対時間を 100 ナノ秒単位で指定する値へのポインター。 このポインターは省略可能であり、 NULL にすることができます。

ポインターが NULL の場合、 ZwGetNotificationResourceManager はトランザクション通知が使用可能になるまで戻りません。 時刻値が指定されている場合、 ZwGetNotificationResourceManager は通知が使用可能な場合、または指定した時間が経過した後のどちらか早い方を返します。

負の値は、現在のシステム時刻を基準とした時間を指定します。 たとえば、相対時間値が 5 秒の場合、 ZwGetNotificationResourceManager が呼び出されてから 5 秒後にタイムアウトになります。

正の値は、実際には 1601 年 1 月 1 日の 00:00 を基準とした絶対時間を指定します。 絶対時間値を指定すると、オペレーティング システムは、1601 年 1 月 1 日の 00:00 を表す時刻値に絶対時間値を追加します。

呼び出し元が NULL ポインターではなくゼロ値を指定した場合、通知が使用可能かどうかに関係なく、 ZwGetNotificationResourceManager は直ちに返します。

[out, optional] ReturnLength

変数への省略可能なポインター。 このポインターが NULL ではなく、 NotificationLength パラメーターの値が小さすぎる場合、 ZwGetNotificationResourceManager は 変数に必要な長さを指定し、STATUS_BUFFER_TOO_SMALLを返します。

[in] Asynchronous

0 にする必要がある ULONG 値。 ZwGetNotificationResourceManager では、非同期通知はサポートされていません。 TmEnableCallbacks を使用して非同期通知を有効にします。

[in, optional] AsynchronousContext

ULONG 値へのポインター。 このポインターは NULL である必要があります。

戻り値

操作が成功し、通知が使用可能な場合、ZwGetNotificationResourceManager はSTATUS_SUCCESSを返します。 それ以外の場合、このルーチンは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_TIMEOUT
通知が使用可能になる前に タイムアウト が経過したことを指定するタイムアウト間隔。
STATUS_OBJECT_TYPE_MISMATCH
指定されたハンドルは、リソース マネージャー オブジェクトへのハンドルではありません。
STATUS_INVALID_HANDLE
オブジェクト ハンドルが無効です。
STATUS_ACCESS_DENIED
呼び出し元には、リソース マネージャー オブジェクトへの適切なアクセス権がありません。
STATUS_BUFFER_TOO_SMALL
NotificationLength パラメーターの値が小さすぎます。
 

ルーチンは、他の NTSTATUS 値を返す場合があります。

注釈

通知を同期的に取得するには、 ZwGetNotificationResourceManager ルーチンを使用します。 TmEnableCallbacks ルーチンを使用して、非同期通知を有効にします。

受信した TRANSACTION_NOTIFICATION 構造体には、リソース マネージャーが ZwCreateEnlistment を呼び出したときに指定した参加キーが含まれています。 参加キーを使用して、通知が適用される参加リストを識別できます。

ZwGetNotificationResourceManager ルーチンの詳細については、「Resource Managerの作成」を参照してください。

NtGetNotificationResourceManagerZwGetNotificationResourceManager は、同じ Windows ネイティブ システム サービス ルーチンの 2 つのバージョンです。

カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista 以降のオペレーティング システム バージョンで使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL = PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

TRANSACTION_NOTIFICATION

TmEnableCallbacks

Nt および Zw バージョンのネイティブ システム サービス ルーチンの使用

ZwCreateEnlistment

ZwCreateResourceManager

ZwOpenResourceManager