共用方式為


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

要註冊通知例程的金鑰句柄。 這個句柄是透過成功 呼叫 ZwCreateKeyZwOpenKey所建立。 呼叫端必須已指定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”。

對於內核模式驅動程式的呼叫,NtXxxZwXxx 版本的 Windows 原生系統服務例程,在處理和解譯輸入參數的方式上可能會有不同的行為。 如需 nt NtXxxZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程

要求

要求 價值
最低支援的用戶端 Windows 2000
目標平臺 普遍
標頭 ntifs.h (include Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDIs(storport)PowerIrpDDis(wdm)

另請參閱

IO_STATUS_BLOCK

WORK_QUEUE_ITEM

WORK_QUEUE_TYPE

ZwCreateKey

ZwOpenKey