Функция FsRtlKernelFsControlFile (ntifs.h)

Функция FsRtlKernelFsControlFile создает явный FSCTL_XXX IRP, отправляет его в стек, синхронно ожидает завершения и возвращает результат. Эта функция позволяет вызывающей функции выполнять это действие, FileObject вместо дескриптора.

Синтаксис

NTSTATUS FsRtlKernelFsControlFile(
  [in]  PFILE_OBJECT FileObject,
  [in]  ULONG        FsControlCode,
  [in]  PVOID        InputBuffer,
  [in]  ULONG        InputBufferLength,
  [out] PVOID        OutputBuffer,
  [out] ULONG        OutputBufferLength,
  [out] PULONG       RetOutputBufferSize
);

Параметры

[in] FileObject

Указатель на FILE_OBJECT для отправки операции.

[in] FsControlCode

FSCTL_XXX код, указывающий, какая операция управления файловой системой должна выполняться. Значение этого параметра определяет форматы и необходимые длины InputBuffer и OutputBuffer, а также какие из следующих пар параметров необходимы. Подробные сведения о системных кодах FSCTL_XXX см. в разделе "Примечания" справочной записи для DeviceIoControl в документации по пакету SDK для Microsoft Windows.

[in] InputBuffer

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

[in] InputBufferLength

Длина inputBuffer в байтах.

[out] OutputBuffer

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

[out] OutputBufferLength

Длина OutputBuffer в байтах.

[out] RetOutputBufferSize

Получает количество байтов, фактически записанных (возвращенных) в выходном буфере.

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

FsRtlKernelFsControlFile возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений.

Ценность Значение
STATUS_INSUFFICIENT_RESOURCES Произошел сбой выделения пула.
STATUS_INVALID_PARAMETER Указан недопустимый параметр (например, недопустимый FileObject).

Замечания

FsRtlKernelFsControlFile задает IRP_MN_KERNEL_CALL дополнительный код, который позволяет выполнять операции без необходимости управлять привилегиями тома для определенных операций.

Эта функция предполагает, что все буферы, передаваемые в него, являются буферами в режиме ядра.

Требования

Требование Ценность
заголовка ntifs.h

См. также

ZwFsControlFile