Функция ZwOpenKey (wdm.h)
Подпрограмма ZwOpenKey открывает существующий раздел реестра.
Синтаксис
NTSYSAPI NTSTATUS ZwOpenKey(
[out] PHANDLE KeyHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes
);
Параметры
[out] KeyHandle
Указатель на переменную HANDLE, которая получает дескриптор ключа.
[in] DesiredAccess
Задает значение ACCESS_MASK , определяющее запрошенный доступ к объекту. Дополнительные сведения см. в разделе Параметр DesiredAccessдля ZwCreateKey.
[in] ObjectAttributes
Указатель на структуру OBJECT_ATTRIBUTES , указывающую имя объекта и другие атрибуты. Используйте InitializeObjectAttributes для инициализации этой структуры. Если вызывающий объект не выполняется в контексте системного потока, он должен задать атрибут OBJ_KERNEL_HANDLE при вызове InitializeObjectAttributes.
Возвращаемое значение
ZwOpenKey возвращает STATUS_SUCCESS, если был открыт заданный ключ. В противном случае он может вернуть состояние ошибки, в том числе следующее:
STATUS_INVALID_HANDLE
STATUS_ACCESS_DENIED
Комментарии
ZwOpenKey предоставляет дескриптор, который вызывающий объект может использовать для управления разделом реестра. Подпрограмма предоставляет подмножество функций ZwCreateKey. Дополнительные сведения см. в статье Использование реестра в драйвере.
Если указанный ключ не существует, функция ZwOpenKey возвращает состояние ошибки и не возвращает дескриптор ключа.
Когда дескриптор, на который указывает KeyHandle , больше не используется, драйвер должен вызвать ZwClose , чтобы закрыть его.
ZwOpenKey игнорирует сведения о безопасности в структуре, на которую указывает параметр ObjectAttributes .
Если вызывающий объект не выполняется в контексте системного потока, он должен убедиться, что все создаваемые дескрипторы являются частными. В противном случае дескриптор может получить доступ к процессу, в контексте которого выполняется драйвер. Дополнительные сведения см. в разделе Дескрипторы объектов.
Дополнительные сведения о работе с разделами реестра см. в статье Использование реестра в драйвере.
Если вызов этой функции выполняется в пользовательском режиме, следует использовать имя NtOpenKey вместо ZwOpenKey.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlZwPassive(wdm), PowerIrpDDis(wdm), ZwRegistryCreate(storport), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen(wdm) |