ZwNotifyChangeKey 関数 (ntifs.h)
ZwNotifyChangeKey ルーチンを使用すると、レジストリ キーが変更されたときにドライバーが通知を要求できます。
構文
NTSYSAPI NTSTATUS ZwNotifyChangeKey(
[in] HANDLE KeyHandle,
[in, optional] HANDLE Event,
[in, optional] PIO_APC_ROUTINE ApcRoutine,
[in, optional] PVOID ApcContext,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] ULONG CompletionFilter,
[in] BOOLEAN WatchTree,
[out, optional] PVOID Buffer,
[in] ULONG BufferSize,
[in] BOOLEAN Asynchronous
);
パラメーター
[in] KeyHandle
通知ルーチンを登録するキーを処理します。 このハンドルは、ZwCreateKey または ZwOpenKey
[in, optional] Event
操作が完了したときに Signaled 状態に設定される、呼び出し元によって作成されたイベントの省略可能なハンドル。 NULL でない場合、呼び出し元は操作が成功するまで待機状態に置かれ、その時点でイベントは Signaled 状態に設定されます。
[in, optional] ApcRoutine
操作の完了後に実行する呼び出し元が指定した APC ルーチンへのポインター。 このパラメーターは省略可能であり、NULL にすることができます。
[in, optional] ApcContext
ApcRoutine が指す APC ルーチン
このパラメーターの意味は、ルーチンがカーネル モードから呼び出されるか、ユーザー モードから呼び出されるかによって異なります。
カーネル モード呼び出しの場合は、このパラメーターを次のいずれかの WORK_QUEUE_TYPE 列挙値に設定します。
- CriticalWorkQueue
- DelayedWorkQueue
ユーザー モード呼び出しの場合、このパラメーターは、APC ルーチンの呼び出し元が指定したコンテキストを指します。
[out] IoStatusBlock
最終的な状態と操作に関する情報を含む IO_STATUS_BLOCK 構造体へのポインター。 データを返す呼び出しが成功した場合、Buffer に書き込まれたバイト数は、IoStatusBlock->Informationで指定されます。
[in] CompletionFilter
ドライバーに通知を受け取る操作のビットマスク。 次のフラグを 1 つ以上指定します。
価値 | 意味 |
---|---|
REG_NOTIFY_CHANGE_NAME | サブキーが追加または削除された場合に呼び出し元に通知します。 |
REG_NOTIFY_CHANGE_ATTRIBUTES | キーの属性の変更 (セキュリティ記述子情報など) を呼び出し元に通知します。 |
REG_NOTIFY_CHANGE_LAST_SET | キーの値に対する変更を呼び出し元に通知します。 これには、値の追加または削除、または既存の値の変更が含まれます。 (キーに書き込まれた新しい値がキーの以前の値と一致する場合、呼び出し元は通知を受け取らなくなります)。 |
REG_NOTIFY_CHANGE_SECURITY | キーのセキュリティ記述子に対する変更を呼び出し元に通知します。 |
[in] WatchTree
TRUE の場合、ドライバーには、指定したキーのすべてのサブキーへの変更に関する通知が表示されます。 FALSE の場合、ドライバーには、指定したキーの変更についてのみ通知されます。
[out, optional] Buffer
引っ込み思案。 NULL を指定します。
[in] BufferSize
引っ込み思案。 0 を指定します。
[in] Asynchronous
FALSE の場合、ルーチンは指定されたイベントが発生するまで戻りません。 TRUE の場合、ルーチンはすぐに返されます。
戻り値
ZwNotifyChangeKey ルーチンは、成功した場合はSTATUS_SUCCESSを返し、それ以外の場合は適切な NTSTATUS 値を返します。 呼び出し元が 非同期 パラメーターに TRUE を指定し、イベントがまだ発生していない場合、ルーチンはSTATUS_PENDINGを返します。
備考
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx と ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt および Zw バージョンの使用 を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 |
ターゲット プラットフォーム の |
万国 |
ヘッダー | ntifs.h (Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 を |
HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |