Функция 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) |