Функция ZwOpenKeyEx (wdm.h)
Подпрограмма ZwOpenKeyEx открывает существующий раздел реестра.
Синтаксис
NTSYSAPI NTSTATUS ZwOpenKeyEx(
[out] PHANDLE KeyHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in] ULONG OpenOptions
);
Параметры
[out] KeyHandle
Указатель на переменную HANDLE, в которую подпрограмма записывает дескриптор в ключ.
[in] DesiredAccess
Указывает тип доступа к ключу, который запрашивает вызывающий объект. Этот параметр является ACCESS_MASK значением. Дополнительные сведения см. в описании параметра DesiredAccess подпрограммы ZwCreateKey .
[in] ObjectAttributes
Указатель на атрибуты объекта открываемого ключа. Этот параметр указывает на структуру OBJECT_ATTRIBUTES , которая должна быть ранее инициализирована подпрограммой InitializeObjectAttributes . Вызывающий объект должен указать имя раздела реестра в качестве параметра ObjectName в вызове InitializeObjectAttributes. Если вызывающий объект не выполняется в контексте системного потока, он должен задать атрибут OBJ_KERNEL_HANDLE при вызове InitializeObjectAttributes.
[in] OpenOptions
Задает параметры, применяемые при открытии ключа. Присвойте этому параметру значение ноль или побитовое ЗНАЧЕНИЕ ИЛИ одного или нескольких следующих битов флага REG_OPTION_XXX :
Флаг OpenOptions | Описание |
---|---|
REG_OPTION_OPEN_LINK | Ключ является символьной ссылкой. Этот флаг не используется драйверами устройств и промежуточными драйверами. |
REG_OPTION_BACKUP_RESTORE | Ключ должен быть открыт с особыми привилегиями, которые разрешают операции резервного копирования и восстановления. Этот флаг не используется драйверами устройств и промежуточными драйверами. |
Возвращаемое значение
ZwOpenKeyEx возвращает STATUS_SUCCESS, если вызов успешно открывает ключ. Возможные возвращаемые значения ошибок:
Код возврата | Описание |
---|---|
|
Параметр OpenOptions указывает недопустимые параметры. |
|
Недопустимый путь реестра в атрибутах объекта. |
|
Имя раздела реестра в атрибутах объекта не найдено. |
|
Именованный раздел реестра является символьной ссылкой, но бит флага REG_OPTION_OPEN_LINK не задан в OpenOptions. |
|
У вызывающего не было прав доступа, необходимых для открытия дескриптора для именованного раздела реестра. |
|
Сбой операции выделения памяти. |
Комментарии
Эта подпрограмма предоставляет дескриптор, с помощью которого вызывающий объект может получить доступ к разделу реестра. Если указанный ключ не существует, подпрограмма возвращает значение состояния ошибки и не предоставляет дескриптор ключа.
Подпрограмма ZwOpenKey похожа на ZwOpenKeyEx , но не принимает параметр OpenOptions . Параметр OpenOptionsобъекта ZwOpenKeyEx позволяет вызывающей объекту открыть ключ, представляющий собой символьную ссылку, или открыть ключ для операций резервного копирования и восстановления. Вызов ZwOpenKeyEx с OpenOptions = 0 эквивалентен вызову ZwOpenKey.
После того как дескриптор, на который указывает KeyHandle , больше не используется, драйвер должен вызвать ZwClose , чтобы закрыть его.
ZwOpenKeyEx игнорирует сведения о безопасности в структуре, на которую указывает параметр ObjectAttributes .
Если вызывающий объект режима ядра не выполняется в контексте системного потока, он должен убедиться, что все создаваемые дескрипторы являются дескрипторами ядра. В противном случае дескриптор может получить доступ к процессу, в контексте которого выполняется драйвер. Дополнительные сведения см. в разделе Дескрипторы объектов.
Дополнительные сведения о работе с разделами реестра в режиме ядра см. в разделе Использование реестра в драйвере.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows 7 и более поздних версиях Windows. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |