FsRtlKernelFsControlFile function (ntifs.h)
The FsRtlKernelFsControlFile function builds an explicit FSCTL_XXX IRP, sends it down the stack, synchronously waits for it to complete, and returns the result. This function allows the caller to complete this action by FileObject instead of handle.
Syntax
NTSTATUS FsRtlKernelFsControlFile(
[in] PFILE_OBJECT FileObject,
[in] ULONG FsControlCode,
[in] PVOID InputBuffer,
[in] ULONG InputBufferLength,
[out] PVOID OutputBuffer,
[out] ULONG OutputBufferLength,
[out] PULONG RetOutputBufferSize
);
Parameters
[in] FileObject
Pointer to the FILE_OBJECT to send the operation on.
[in] FsControlCode
FSCTL_XXX code that indicates which file system control operation is to be carried out. The value of this parameter determines the formats and required lengths of the InputBuffer and OutputBuffer, as well as which of the following parameter pairs are required. For detailed information about the system-defined FSCTL_XXX codes, see the "Remarks" section of the reference entry for DeviceIoControl in the Microsoft Windows SDK documentation.
[in] InputBuffer
Pointer to a caller-allocated input buffer that contains device-specific information to be given to the target driver. If FsControlCode specifies an operation that does not require input data, this pointer is optional and can be NULL. Note that this buffer might be modified upon return and the caller must adapt to this. This is because this buffer might be used to hold the output data.
[in] InputBufferLength
Length of the InputBuffer in bytes.
[out] OutputBuffer
Pointer to a caller-allocated output buffer in which information is returned from the target driver. If FsControlCode specifies an operation that does not produce output data, this pointer is optional and can be NULL.
[out] OutputBufferLength
Length of the OutputBuffer in bytes.
[out] RetOutputBufferSize
Receives the number of bytes actually written (returned) in the output buffer.
Return value
FsRtlKernelFsControlFile returns STATUS_SUCCESS or an appropriate NTSTATUS value such as one of the following.
Value | Meaning |
---|---|
STATUS_INSUFFICIENT_RESOURCES | A pool allocation failure occurred. |
STATUS_INVALID_PARAMETER | An invalid parameter was provided (for example, an invalid FileObject). |
Remarks
FsRtlKernelFsControlFile sets the IRP_MN_KERNEL_CALL minor code which allows it to perform operations without requiring manage volume privilege for certain operations.
This function assumes that all buffers passed to it are kernel-mode buffers.
Requirements
Requirement | Value |
---|---|
Header | ntifs.h |