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


Функция 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 , см. в разделе Ошибки создания объекта Framework.

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

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

Комментарии

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

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

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

Примеры

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

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия 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