Поделиться через


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

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

ACCESS_MASK

InitializeObjectAttributes

ZwCreateKey

ZwDeleteKey

ZwEnumerateKey

ZwEnumerateValueKey

ZwFlushKey

ZwQueryKey

ZwQueryValueKey

ZwSetValueKey