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を返します。 それ以外の場合、このルーチンは次のいずれかの値を返す可能性があります。
リターン コード | 形容 |
---|---|
|
タイムアウト 通知が使用可能になるまでの経過時間を指定するタイムアウト間隔。 |
|
指定されたハンドルは、リソース マネージャー オブジェクトへのハンドルではありません。 |
|
オブジェクト ハンドルが無効です。 |
|
呼び出し元には、リソース マネージャー オブジェクトへの適切なアクセス権がありません。 |
|
NotificationLength パラメーターの値が小さすぎます。 |
ルーチンは、他NTSTATUS 値を返す場合があります。
備考
ZwGetNotificationResourceManager ルーチンを使用して、通知を同期的に取得します。 TmEnableCallbacks ルーチンを使用して、非同期通知を有効にします。
受信した TRANSACTION_NOTIFICATION 構造体には、リソース マネージャーが ZwCreateEnlistment を呼び出したときに指定エンリスト キーが含まれています。 参加キーを使用して、通知が適用される参加リストを識別できます。
ZwGetNotificationResourceManager ルーチンの詳細については、「Resource Managerの作成」を参照してください。
NtGetNotificationResourceManager と ZwGetNotificationResourceManager は、同じ Windows ネイティブ システム サービス ルーチンの 2 つのバージョンです。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx と ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt および Zw バージョンの使用 を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista 以降のオペレーティング システム バージョンで使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdm.h (Wdm.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | = PASSIVE_LEVEL |
DDI コンプライアンス規則 を する | HwStorPortProhibitedDIs、PowerIrpDDis |
関連項目
TmEnableCallbacks の