Функция FltFsControlFile (fltkernel.h)

Подпрограмма FltFsControlFile отправляет управляющий код непосредственно в указанную файловую систему или драйвер фильтра файловой системы, в результате чего соответствующий драйвер будет выполнять указанное действие.

Синтаксис

NTSTATUS FLTAPI FltFsControlFile(
  [in]            PFLT_INSTANCE Instance,
  [in]            PFILE_OBJECT  FileObject,
  [in]            ULONG         FsControlCode,
  [in, optional]  PVOID         InputBuffer,
  [in]            ULONG         InputBufferLength,
  [out, optional] PVOID         OutputBuffer,
  [in]            ULONG         OutputBufferLength,
  [out, optional] PULONG        LengthReturned
);

Параметры

[in] Instance

Указатель непрозрачного экземпляра для вызывающего объекта. Этот параметр является обязательным и не может иметь значение NULL.

[in] FileObject

Указатель на объект file для файла или каталога, которые являются целевым объектом этого запроса. Этот параметр является обязательным и не может иметь значение NULL.

[in] FsControlCode

FSCTL_ кодXXX , указывающий, какая операция файловой системы должна выполняться. Значение этого параметра определяет форматы и необходимую длину InputBuffer и OutputBuffer, а также определяет, какая из следующих пар параметров (InputBuffer и InputBufferLength, OutputBuffer и OutputBufferLength) является обязательной.

[in, optional] InputBuffer

Указатель на выделенный вызывающим объектом входной буфер, содержащий сведения о конкретном устройстве, которые должны быть переданы целевому драйверу. Если параметр FsControlCode указывает операцию, которая не требует входных данных, этот параметр является необязательным и может иметь значение NULL.

[in] InputBufferLength

Размер (в байтах) буфера в InputBuffer. Это значение игнорируется, если InputBuffer имеет значение NULL.

[out, optional] OutputBuffer

Указатель на выделенный вызывающим выходной буфер, в котором данные возвращаются из целевого драйвера. Если параметр FsControlCode указывает операцию, которая не требует выходных данных, этот параметр является необязательным и может иметь значение NULL.

[in] OutputBufferLength

Размер буфера в байтах в OutputBuffer. Это значение игнорируется, если OutputBuffer имеет значение NULL.

[out, optional] LengthReturned

Указатель на переменную, выделенную вызывающим объектом, которая получает размер (в байтах) сведений, возвращаемых в буфере в OutputBuffer. Этот параметр является необязательным и может иметь значение NULL.

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

FltFsControlFile возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS.

Комментарии

Драйверы минифильтра должны вызывать эту подпрограмму вместо ZwFsControlFile.

Следующие коды FSCTL в настоящее время задокументированы для драйверов режима ядра:

FSCTL_DELETE_REPARSE_POINT

FSCTL_GET_REPARSE_POINT

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FSCTL_SET_REPARSE_POINT

Дополнительные сведения о системных кодах FSCTL_XXX см. в разделе Примечания справочной записи по DeviceIoControl в документации по Microsoft Windows SDK.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая Fltkernel.h)
Библиотека FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

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

FltDeviceIoControlFile

ZwFsControlFile