ZwOpenKeyEx 函式 (wdm.h)

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

語法

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

參數

[out] KeyHandle

HANDLE 變數的指標,例程會將句柄寫入索引鍵。

[in] DesiredAccess

指定呼叫端要求之金鑰的存取類型。 此參數是 ACCESS_MASK 值。 如需詳細資訊,請參閱 ZwCreateKey 例程的 DesiredAccess 參數描述。

[in] ObjectAttributes

要開啟之索引鍵之物件屬性的指標。 此參數指向先前必須由 InitializeObjectAttributes 例程初始化的OBJECT_ATTRIBUTES結構。 呼叫端必須將登錄機碼的名稱指定為 InitializeObjectAttributes 呼叫中的 ObjectName 參數。 如果呼叫端未在系統線程內容中執行,它必須在呼叫 InitializeObjectAttributes 時設定OBJ_KERNEL_HANDLE屬性。

[in] OpenOptions

指定開啟索引鍵時要套用的選項。 將此參數設定為零或下列一或多個REG_OPTION_XXX 旗標位的位 OR:

OpenOptions 旗標 Description
REG_OPTION_OPEN_LINK 索引鍵是符號連結。 裝置和中繼驅動程式不會使用此旗標。
REG_OPTION_BACKUP_RESTORE 密鑰應以允許備份和還原作業的特殊許可權開啟。 裝置和中繼驅動程式不會使用此旗標。

傳回值

如果呼叫成功開啟密鑰,ZwOpenKeyEx 會傳回STATUS_SUCCESS。 可能的錯誤傳回值包括下列各項:

傳回碼 Description
STATUS_INVALID_PARAMETER_4
OpenOptions 參數會指定無效的選項。
STATUS_OBJECT_PATH_SYNTAX_BAD
物件屬性中的登錄路徑無效。
STATUS_OBJECT_NAME_NOT_FOUND
找不到物件屬性中的登錄機碼名稱。
STATUS_OBJECT_TYPE_MISMATCH
具名登錄機碼是符號連結,但未在 OpenOptions中設定REG_OPTION_OPEN_LINK旗標位。
STATUS_ACCESS_DENIED
呼叫端沒有開啟具名登錄機碼句柄的必要訪問許可權。
STATUS_INSUFFICIENT_RESOURCES
記憶體配置作業失敗。

備註

此例程提供呼叫端可以存取登錄機碼的句柄。 如果指定的索引鍵不存在,例程會傳回錯誤狀態值,而且不提供密鑰句柄。

ZwOpenKey 例程類似於 ZwOpenKeyEx,但不接受 OpenOptions 參數。 ZwOpenKeyExOpenOptions 參數可讓呼叫端開啟符號連結的密鑰,或開啟用於備份和還原作業的密鑰。 使用 OpenOptions = 0 呼叫 ZwOpenKeyEx 相當於對 ZwOpenKey 的呼叫。

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

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

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

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

規格需求

需求
最低支援的用戶端 可在 Windows 7 和更新版本的 Windows 中使用。
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs (storport) PowerIrpDDis (wdm)

另請參閱

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

ZwClose

ZwOpenKey