ZwOpenKey 函式 (wdm.h)

ZwOpenKey 例程會開啟現有的登錄機碼。

語法

NTSYSAPI NTSTATUS ZwOpenKey(
  [out] PHANDLE            KeyHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes
);

參數

[out] KeyHandle

接收索引鍵句柄之 HANDLE 變數的指標。

[in] DesiredAccess

指定 ACCESS_MASK 值,決定物件的要求存取權。 如需詳細資訊,請參閱 ZwCreateKeyDesiredAccess 參數。

[in] ObjectAttributes

指定物件名稱和其他屬性之 OBJECT_ATTRIBUTES 結構的指標。 使用 InitializeObjectAttributes 初始化這個結構。 如果呼叫端未在系統線程內容中執行,它必須在呼叫 InitializeObjectAttributes 時設定OBJ_KERNEL_HANDLE屬性。

傳回值

如果開啟指定的金鑰,ZwOpenKey 會傳回STATUS_SUCCESS。 否則,它可以傳回錯誤狀態,包括下列專案:

  • STATUS_INVALID_HANDLE

  • STATUS_ACCESS_DENIED

備註

ZwOpenKey 提供呼叫端可用來操作登錄機碼的句柄。 例程提供 ZwCreateKey 功能的子集。 如需詳細資訊,請參閱 在驅動程式中使用登錄

如果指定的索引鍵不存在, ZwOpenKey 會傳回錯誤狀態,而且不會傳回密鑰句柄。

KeyHandle 所指向的句柄不再使用之後,驅動程式必須呼叫 ZwClose 來關閉它。

ZwOpenKey 會忽略 ObjectAttributes 參數指向的結構中的安全性資訊。

如果呼叫端未在系統線程內容中執行,則必須確保所建立的任何句柄都是私用句柄。 否則,進程可以在其中執行驅動程序的內容中存取句柄。 如需詳細資訊,請參閱 物件句柄

如需使用登錄機碼的詳細資訊,請參閱 在驅動程式中使用登錄

如果呼叫此函式發生在使用者模式中,您應該使用名稱 「NtOpenKey」 而不是 「ZwOpenKey」。

規格需求

需求
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs (storport) IrqlZwPassive (wdm ) 、 PowerIrpDDis (wdm ) 、 ZwRegistryCreate (storport) ZwRegistry (Open) 、ZwRegistryOpen (storport) 、 ZwRegistryOpen (wdm)

另請參閱

ACCESS_MASK

InitializeObjectAttributes

ZwCreateKey

ZwDeleteKey

ZwEnumerateKey

ZwEnumerateValueKey

ZwFlushKey

ZwQueryKey

ZwQueryValueKey

ZwSetValueKey