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 值,決定物件的要求存取權。 如需詳細資訊,請參閱 ZwCreateKey 的 DesiredAccess 參數。
[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) |