Функция IoOpenDeviceRegistryKey (wdm.h)

Подпрограмма IoOpenDeviceRegistryKey возвращает дескриптор в расположение состояния реестра для определенного экземпляра устройства.

Синтаксис

NTSTATUS IoOpenDeviceRegistryKey(
  [in]  PDEVICE_OBJECT DeviceObject,
  [in]  ULONG          DevInstKeyType,
  [in]  ACCESS_MASK    DesiredAccess,
  [out] PHANDLE        DeviceRegKey
);

Параметры

[in] DeviceObject

Указатель на объект физического устройства (PDO) экземпляра устройства, для которого необходимо открыть расположение состояния реестра.

[in] DevInstKeyType

Задает флаги, указывающие, следует ли открыть аппаратный ключ устройства или программный ключ для конкретного драйвера. Флаги также указывают, является ли ключ относительным к текущему профилю оборудования. Дополнительные сведения об аппаратных и программных ключах см. в статье Общие сведения о разделах реестра для драйверов.

Флаги определяются следующим образом:

PLUGPLAY_REGKEY_DEVICE

Откройте аппаратный ключ устройства— расположение состояния реестра, которое содержит сведения об устройстве. Этот флаг нельзя указать с помощью PLUGPLAY_REGKEY_DRIVER.

PLUGPLAY_REGKEY_DRIVER

Откройте программный ключ устройства, расположение состояния реестра для конкретного устройства для хранения сведений о драйвере. Этот флаг нельзя указать с помощью PLUGPLAY_REGKEY_DEVICE.

PLUGPLAY_REGKEY_CURRENT_HWPROFILE

Профили оборудования являются устаревшими, и состояние не должно храниться относительно профиля оборудования.

Откройте ключ относительно текущего профиля оборудования для сведений об устройстве или драйвере. Это позволяет драйверу получать доступ к сведениям о конфигурации, которые относятся к профилю оборудования. Вызывающий объект должен указать PLUGPLAY_REGKEY_DEVICE или PLUGPLAY_REGKEY_DRIVER с этим флагом.

[in] DesiredAccess

Задает значение ACCESS_MASK , представляющее доступ, необходимый вызывающему объекту к ключу. Описание каждого права доступа KEY_XXX см. в подпрограмме ZwCreateKey.

[out] DeviceRegKey

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

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

IoOpenDeviceRegistryKey возвращает STATUS_SUCCESS, если вызов был выполнен успешно. Возможные возвращаемые значения ошибок:

Код возврата Описание
STATUS_INVALID_PARAMETER Возможно, указывает, что вызывающий объект указал недопустимый набор флагов DevInstKeyType или предоставил DeviceObject , который не является допустимым PDO.

Комментарии

Драйвер должен вызвать ZwClose , чтобы закрыть дескриптор, возвращенный этой подпрограммой, если доступ больше не требуется.

Разделы реестра, открытые этой подпрограммой, являются неизменяемы.

Приложения установки в пользовательском режиме могут получить доступ к этим разделам реестра с помощью функций CM_Open_DevNode_Key или сведений об устройстве , таких как SetupDiOpenDevRegKey или SetupDiCreateDevRegKey.

Чтобы предварительно заполнить состояние в этих расположениях состояния реестра во время установки пакета драйвера, используйте директивы INF AddReg в INF-файле.

Вызывающие функции IoOpenDeviceRegistryKey должны выполняться в IRQL = PASSIVE_LEVEL в контексте системного потока.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (см. раздел "Примечания")
Правила соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также раздел

Общие сведения о разделах реестра для драйверов

ACCESS_MASK

ZwCreateKey

ZwClose

Узлы устройств и стеки устройств