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 |
---|---|
|
OpenOptions 參數會指定無效的選項。 |
|
物件屬性中的登錄路徑無效。 |
|
找不到物件屬性中的登錄機碼名稱。 |
|
具名登錄機碼是符號連結,但未在 OpenOptions中設定REG_OPTION_OPEN_LINK旗標位。 |
|
呼叫端沒有開啟具名登錄機碼句柄的必要訪問許可權。 |
|
記憶體配置作業失敗。 |
備註
此例程提供呼叫端可以存取登錄機碼的句柄。 如果指定的索引鍵不存在,例程會傳回錯誤狀態值,而且不提供密鑰句柄。
ZwOpenKey 例程類似於 ZwOpenKeyEx,但不接受 OpenOptions 參數。 ZwOpenKeyEx 的 OpenOptions 參數可讓呼叫端開啟符號連結的密鑰,或開啟用於備份和還原作業的密鑰。 使用 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) |