Поделиться через


Функция 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 не поддерживает создание вложенных ключей.

Это побитовое ИЛИ следующих флагов (которые определены в 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_READ, KEY_WRITEили KEY_READ | KEY_WRITE.

Если вы пишете драйвер UMDF, используйте следующую таблицу.

DeviceInstanceKeyType DesiredAccess
PLUGPLAY_REGKEY_DEVICE KEY_READ
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY KEY_READ или KEY_READ | KEY_SET_VALUE
PLUGPLAY_REGKEY_DRIVER KEY_READ
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY KEY_READ или KEY_READ | KEY_SET_VALUE
 

Как рекомендуется, попросите только типы доступа, необходимые вашему водителю.

[in, optional] KeyAttributes

Указатель на WDF_OBJECT_ATTRIBUTES структуру, содержащую атрибуты, предоставленные драйвером для нового объекта реестра. Этот параметр является необязательным и может быть WDF_NO_OBJECT_ATTRIBUTES.

[out] Key

Указатель на расположение, которое получает дескриптор к новому объекту раздела реестра.

Возвращаемое значение

WdfDeviceOpenRegistryKey возвращает STATUS_SUCCESS, если операция завершится успешно. В противном случае метод может вернуть одно из следующих значений:

Возвращаемый код Описание
STATUS_INVALID_DEVICE_REQUEST

WdfDeviceOpenRegistryKey не был вызван в IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Указан недопустимый параметр. Для UMDF это возвращаемое значение может указывать на недостаточные права доступа.
STATUS_INSUFFICIENT_RESOURCES
Не удалось выделить объект раздела реестра.
STATUS_OBJECT_NAME_NOT_FOUND
Указанный раздел реестра не существует.
 

Список других возвращаемых значений, возвращаемых методом WdfDeviceOpenRegistryKey, см. .

Метод может возвращать другие значения NTSTATUS.

Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Замечания

Если драйвер должен открыть аппаратный или программный ключ перед вызовом WdfDeviceCreate, он должен вызывать WdfFdoInitOpenRegistryKey вместо WdfDeviceOpenRegistryKey.

После завершения работы драйвера с помощью раздела реестра, который он открыл с помощью WdfDeviceOpenRegistryKey, драйвер должен вызвать WdfRegistryClose.

Дополнительные сведения о реестрах, аппаратных и программных разделах и объектах реестра см. в разделе Использование реестра в Framework-Based драйверах.

Примеры

Примеры кода, использующие WdfDeviceOpenRegistryKey, см. в WdfRegistryCreateKey, WdfRegistryOpenKeyи WdfRegistryQueryValue.

Требования

Требование Ценность
целевая платформа Всеобщий
минимальная версия KMDF 1.0
минимальная версия UMDF 2.0
заголовка wdfdevice.h (include Wdf.h)
библиотеки Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
правил соответствия DDI AccessHardwareKey(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

См. также

WdfFdoInitOpenRegistryKey