次の方法で共有


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

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 ポインターではなく) 0 の値を指定した場合、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の作成」を参照してください。

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降のオペレーティング システム バージョンで使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL = PASSIVE_LEVEL
DDI コンプライアンス規則 する HwStorPortProhibitedDIs、PowerIrpDDis

関連項目

TRANSACTION_NOTIFICATION

TmEnableCallbacks

ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンを使用した

ZwCreateEnlistment

ZwCreateResourceManager

ZwOpenResourceManager