Функция 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, см. .
Метод может возвращать другие значения 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) |