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


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

Подпрограмма ZwOpenFile открывает существующий файл, каталог, устройство или том.

Синтаксис

NTSYSAPI NTSTATUS ZwOpenFile(
  [out] PHANDLE            FileHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes,
  [out] PIO_STATUS_BLOCK   IoStatusBlock,
  [in]  ULONG              ShareAccess,
  [in]  ULONG              OpenOptions
);

Параметры

[out] FileHandle

Указатель на переменную HANDLE, которая получает дескриптор файла.

[in] DesiredAccess

Задает значение ACCESS_MASK , определяющее запрошенный доступ к объекту. Дополнительные сведения см. в разделе Параметр DesiredAccessдля ZwCreateFile.

[in] ObjectAttributes

Указатель на структуру OBJECT_ATTRIBUTES , указывающую имя объекта и другие атрибуты. Используйте InitializeObjectAttributes для инициализации этой структуры. Если вызывающий объект не выполняется в контексте системного потока, он должен задать атрибут OBJ_KERNEL_HANDLE при вызове InitializeObjectAttributes.

[out] IoStatusBlock

Указатель на структуру IO_STATUS_BLOCK , которая получает окончательное состояние завершения и сведения о запрошенной операции.

[in] ShareAccess

Указывает тип доступа к общей папке для файла. Дополнительные сведения см. в разделе Параметр ShareAccessдля ZwCreateFile.

[in] OpenOptions

Указывает параметры, применяемые при открытии файла. Дополнительные сведения см. в разделе Параметр CreateOptionsдля ZwCreateFile.

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

ZwOpenFile возвращает STATUS_SUCCESS или соответствующий код ошибки NTSTATUS. В последнем случае вызывающий объект может найти дополнительные сведения о причине сбоя, проверив параметр IoStatusBlock .

Комментарии

ZwOpenFile предоставляет дескриптор, который вызывающий объект может использовать для управления данными файла или состоянием и атрибутами файлового объекта. ZwOpenFile предоставляет подмножество функций, предоставляемых ZwCreateFile. Дополнительные сведения см. в разделе Использование файлов в драйвере.

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

Если вызывающий объект не выполняется в контексте системного потока, он должен убедиться, что все создаваемые дескрипторы являются частными. В противном случае дескриптор может получить доступ к процессу, в контексте которого выполняется драйвер. Дополнительные сведения см. в разделе Дескрипторы объектов.

Вызывающие файлы ZwOpenFile должны выполняться в среде IRQL = PASSIVE_LEVEL и с включенными специальными api ядра.

Если вызов этой функции выполняется в пользовательском режиме, следует использовать имя "NtOpenFile" вместо "ZwOpenFile".

Для вызовов из драйверов режима ядра версии NtXxx и ZwXxx подпрограммы Собственные системные службы Windows могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями подпрограмм NtXxx и ZwXxx см. в разделе Использование версий NT и Zw подпрограмм собственных системных служб.

Требования

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

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

ACCESS_MASK

InitializeObjectAttributes

Использование версий nt и Zw собственных системных служб

ZwCreateFile