共用方式為


IoOpenDeviceRegistryKey 函式 (wdm.h)

IoOpenDeviceRegistryKey 例程會傳回特定裝置實例登錄狀態位置的句柄。

語法

NTSTATUS IoOpenDeviceRegistryKey(
  [in]  PDEVICE_OBJECT DeviceObject,
  [in]  ULONG          DevInstKeyType,
  [in]  ACCESS_MASK    DesiredAccess,
  [out] PHANDLE        DeviceRegKey
);

參數

[in] DeviceObject

要開啟登錄狀態位置之裝置實例的 實體裝置物件 (PDO) 指標

[in] DevInstKeyType

指定旗標,指出是否要開啟裝置特定的硬體密鑰或驅動程式特定的軟體密鑰。 旗標也會指出金鑰是否相對於目前的硬體配置檔。 如需硬體和軟體金鑰的詳細資訊,請參閱 驅動程式登入機碼簡介

旗標的定義如下:

PLUGPLAY_REGKEY_DEVICE

開啟裝置的硬體密鑰,這是包含裝置相關信息的裝置特定登錄狀態位置。 無法使用 PLUGPLAY_REGKEY_DRIVER 指定此旗標。

PLUGPLAY_REGKEY_DRIVER

開啟裝置的軟體密鑰,這是儲存驅動程式特定資訊的裝置特定登錄狀態位置。 無法使用 PLUGPLAY_REGKEY_DEVICE 指定此旗標。

PLUGPLAY_REGKEY_CURRENT_HWPROFILE

硬體配置檔已被取代,且狀態不應與硬體配置檔相對儲存。

針對裝置或驅動程式資訊,開啟相對於目前硬體配置檔的金鑰。 這可讓驅動程式存取硬體配置檔特定的組態資訊。 呼叫端必須使用這個旗標來指定PLUGPLAY_REGKEY_DEVICE或PLUGPLAY_REGKEY_DRIVER。

[in] DesiredAccess

指定 ACCESS_MASK 值,表示呼叫端對索引鍵所需的存取。 如需每個 KEY_XXX 訪問許可權的描述,請參閱 ZwCreateKey 例程。

[out] DeviceRegKey

呼叫端配置的緩衝區指標,在成功傳回時,包含所要求登錄狀態位置的句柄。

傳回值

如果呼叫成功,IoOpenDeviceRegistryKey 會傳回STATUS_SUCCESS。 可能的錯誤傳回值包括下列專案:

傳回碼 描述
STATUS_INVALID_PARAMETER 可能表示呼叫端指定了一組不合法的 DevInstKeyType 旗標,或提供不是有效 PDO 的 DeviceObject

言論

驅動程式必須呼叫 ZwClose,才能在不再需要存取時關閉從這個例程傳回的句柄。

這個例程所開啟的登錄機碼為非volatile。

使用者模式設定應用程式可以使用 CM_Open_DevNode_Key裝置資訊功能來存取這些登錄機碼, 例如 SetupDiOpenDevRegKeySetupDiCreateDevRegKey

若要在驅動程式套件安裝期間預先填入這些登錄狀態位置的狀態,請在 INF 檔案中使用 INF AddReg 指示詞

IoOpenDeviceRegistryKey 的呼叫者 必須在系統線程的內容中於 IRQL = PASSIVE_LEVEL執行。

要求

要求 價值
目標平臺 普遍
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (請參閱一節)
DDI 合規性規則 HwStorPortProhibitedDIs(storport)PowerIrpDDis(wdm)

另請參閱

驅動程式登錄機碼簡介

ACCESS_MASK

ZwCreateKey

ZwClose

裝置節點和裝置堆疊