Функция 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 в документации по Microsoft Windows SDK.

[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