共用方式為


WdfDeviceOpenRegistryKey 函式 (wdfdevice.h)

[適用於 KMDF 和 UMDF]

WdfDeviceOpenRegistryKey 方法會在登錄中開啟裝置的硬體密鑰或驅動程式的軟體密鑰,並建立代表登錄機碼的架構登錄機碼物件。

語法

NTSTATUS WdfDeviceOpenRegistryKey(
  [in]           WDFDEVICE              Device,
  [in]           ULONG                  DeviceInstanceKeyType,
  [in]           ACCESS_MASK            DesiredAccess,
  [in, optional] PWDF_OBJECT_ATTRIBUTES KeyAttributes,
  [out]          WDFKEY                 *Key
);

參數

[in] Device

架構裝置物件的句柄。

[in] DeviceInstanceKeyType

指定要開啟的索引鍵或子機碼。

注意

UMDF 不支援建立子機碼。

這是下列旗標的位 OR(定義於 Wdm.h中)。

DeviceInstanceKeyType 旗標 意義 框架
PLUGPLAY_REGKEY_DEVICE 開啟裝置的硬體金鑰。 KMDF/UMDF
PLUGPLAY_REGKEY_DRIVER 開啟驅動程式的軟體金鑰。 設定此旗標的 UMDF 驅動程式必須將 DesiredAccess 設定為 KEY_READ。 否則,這個方法會傳回 STATUS_ACCESS_DENIED KMDF/UMDF
PLUGPLAY_REGKEY_CURRENT_HWPROFILE KMDF 驅動程式會使用此旗標開啟目前硬體配置檔中的硬體或軟體密鑰複本。 KMDF
PLUGPLAY_REGKEY_DRIVER |WDF_REGKEY_DRIVER_SUBKEY UMDF 驅動程式會使用這些旗標來開啟驅動程式軟體密鑰的 ServiceName 子機碼以進行讀取/寫入存取。 UMDF
PLUGPLAY_REGKEY_DEVICE |WDF_REGKEY_DEVICE_SUBKEY 同樣地,UMDF 驅動程式會使用這些旗標來開啟裝置硬體密鑰的 ServiceName 子機碼以進行讀取/寫入存取。 UMDF

[in] DesiredAccess

ACCESS_MASK型別值,指定驅動程式要求指定登錄機碼的訪問許可權。

KMDF 驅動程式通常會要求 KEY_READKEY_WRITEKEY_READ |KEY_WRITE

如果您要撰寫 UMDF 驅動程式,請使用下表。

DeviceInstanceKeyType DesiredAccess
PLUGPLAY_REGKEY_DEVICE KEY_READ
PLUGPLAY_REGKEY_DEVICE |WDF_REGKEY_DEVICE_SUBKEY KEY_READKEY_READ |KEY_SET_VALUE
PLUGPLAY_REGKEY_DRIVER KEY_READ
PLUGPLAY_REGKEY_DRIVER |WDF_REGKEY_DRIVER_SUBKEY KEY_READKEY_READ |KEY_SET_VALUE
 

最佳做法是只要求驅動程式所需的存取類型。

[in, optional] KeyAttributes

WDF_OBJECT_ATTRIBUTES 結構的指標,其中包含新登錄機碼對象的驅動程式提供屬性。 這個參數是選擇性的,而且可以WDF_NO_OBJECT_ATTRIBUTES。

[out] Key

接收新登錄機碼物件句柄之位置的指標。

傳回值

如果作業成功,WdfDeviceOpenRegistryKey 會傳回STATUS_SUCCESS。 否則,方法可能會傳回下列其中一個值:

傳回碼 描述
STATUS_INVALID_DEVICE_REQUEST

未在 IRQL = PASSIVE_LEVEL呼叫 WdfDeviceOpenRegistryKey

STATUS_INVALID_PARAMETER
指定了無效的參數。 針對UMDF,這個傳回值可能表示訪問許可權不足。
STATUS_INSUFFICIENT_RESOURCES
無法設定登錄機碼物件。
STATUS_OBJECT_NAME_NOT_FOUND
指定的登錄機碼不存在。
 

如需 WdfDeviceOpenRegistryKey 方法可能會傳回的其他傳回值清單,請參閱 Framework 物件建立錯誤

方法可能會 傳回其他NTSTATUS 值。

如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。

言論

如果您的驅動程式必須在呼叫 WdfDeviceCreate之前開啟硬體或軟體密鑰,則必須呼叫 WdfFdoInitOpenRegistryKey,而不是 WdfDeviceOpenRegistryKey

當驅動程式使用以 WdfDeviceOpenRegistryKey開啟的登入機碼完成時,驅動程式必須呼叫 WdfRegistryClose

如需登錄、硬體和軟體密鑰和登錄物件的詳細資訊,請參閱在 Framework-Based Drivers 中使用登錄

例子

如需使用 WdfDeviceOpenRegistryKey的程式代碼範例,請參閱 WdfRegistryCreateKeyWdfRegistryOpenKeyWdfRegistryQueryValue

要求

要求 價值
目標平臺 普遍
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
標頭 wdfdevice.h (包括 Wdf.h)
連結庫 Wdf01000.sys (KMDF):WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI 合規性規則 AccessHardwareKey(kmdf)DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf)

另請參閱

WdfFdoInitOpenRegistryKey