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所建立。 呼叫端必須已指定KEY_NOTIFY存取權。
[in, optional] Event
作業完成時,要設定為 Signaled 狀態之呼叫端所建立事件的選擇性句柄。 如果不是 NULL,呼叫端會進入等候狀態,直到作業成功為止,此時事件會設定為 Signaled 狀態。
[in, optional] ApcRoutine
呼叫端提供的 APC 例程指標,以在作業完成之後執行。 這個參數是選擇性的,而且可以是 NULL。
[in, optional] ApcContext
要當做自變數傳遞至 APC 例程的指標,ApcRoutine 指向 。 如果 ApcRoutine 不是 NULL,而且必須轉換成 PVOID 類型,則需要此自變數。 否則,如果 ApcRoutine 為 NULL,則此參數也會設定為 NULL。
此參數的意義取決於例程是從核心模式還是從使用者模式呼叫:
針對內核模式呼叫,請將此參數設定為下列其中一個 WORK_QUEUE_TYPE 列舉值:
- CriticalWorkQueue
- DelayedWorkQueue
針對使用者模式呼叫,此參數會指向 APC 例程的呼叫端指定內容。
[out] IoStatusBlock
IO_STATUS_BLOCK 結構的指標,其中包含作業的最終狀態和相關信息。 對於傳回數據的成功呼叫,會提供寫入至 Buffer 的位元元組數目,IoStatusBlock->Information。
[in] CompletionFilter
導致驅動程式收到通知的作業位掩碼。 指定下列一或多個旗標:
價值 | 意義 |
---|---|
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
保留。 指定零。
[in] Asynchronous
如果為 FALSE,則例程在發生指定的事件之前不會傳回。 如果為TRUE,則例程會立即傳回。
傳回值
ZwNotifyChangeKey 例程會在成功時傳回STATUS_SUCCESS,否則會傳回適當的 NTSTATUS 值。 如果呼叫端為 異步 參數指定 TRUE,而且事件尚未發生,則例程會傳回STATUS_PENDING。
言論
如果在使用者模式中呼叫 ZwNotifyChangeKey 函式,您應該使用名稱 “NtNotifyChangeKey” 而不是 “ZwNotifyChangeKey”。
對於內核模式驅動程式的呼叫,NtXxx 和 ZwXxx 版本的 Windows 原生系統服務例程,在處理和解譯輸入參數的方式上可能會有不同的行為。 如需 nt NtXxx 與 ZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 |
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIs(storport),PowerIrpDDis(wdm) |