Функция 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 |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по