Функция 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, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений:
Код возврата | Описание |
---|---|
|
WdfDeviceOpenRegistryKey не был вызван в IRQL = PASSIVE_LEVEL. |
|
Указан недопустимый параметр. Для UMDF это возвращаемое значение может указывать на недостаточные права доступа. |
|
Не удалось выделить объект раздела реестра. |
|
Указанный раздел реестра не существует. |
Список других возвращаемых значений, которые может возвращать метод 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) |