FltDeviceIoControlFile 函数 (fltkernel.h)

FltDeviceIoControlFile 将控制代码直接发送到指定的设备驱动程序,从而导致相应的驱动程序执行指定的作。

语法

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

参数

[in] Instance

调用方不透明实例指针。 此参数是必需的,不能 NULL

[in] FileObject

作为此请求目标的文件或设备的文件对象指针。 此参数是必需的,不能 NULL

[in] IoControlCode

IOCTL_XXX 代码,用于指示要执行哪些设备 I/O作。此参数的值确定 InputBufferOutputBuffer的格式和所需长度,并确定以下参数对中的哪一个(InputB) 需要InputBufferLengthOutputBufferOutputBufferLength)。

[in, optional] InputBuffer

指向调用方分配的输入缓冲区的指针,该缓冲区包含要提供给目标驱动程序的设备特定信息。 如果 IoControlCode 参数指定不需要输入数据的作,则此参数是可选的,并且可以 NULL

[in] InputBufferLength

InputBuffer处缓冲区的大小(以字节为单位)。 如果 InputBufferNULL,则忽略此值。

[out] OutputBuffer

指向调用方分配的输出缓冲区的指针,在该缓冲区中从目标驱动程序返回信息。 如果 IoControlCode 参数指定不需要输出数据的作,则此参数是可选的,并且可以 NULL

[in] OutputBufferLength

OutputBuffer处缓冲区的大小(以字节为单位)。 如果 outputBufferNULL,则忽略此值。

[out, optional] LengthReturned

指向调用方分配的变量的指针,该变量接收 OutputBuffer缓冲区中返回的信息的大小(以字节为单位)。 此参数是可选的,可以 NULL

返回值

FltDeviceIoControlFile 返回STATUS_SUCCESS或适当的 NTSTATUS 值。

言论

有关系统定义IOCTL_XXX 代码的详细信息,请参阅 Microsoft Windows SDK 文档中 DeviceIoControl 参考条目的“备注”部分。

要求

要求 价值
目标平台 普遍
标头 fltkernel.h (包括 Fltkernel.h)
FltMgr.lib
IRQL PASSIVE_LEVEL

另请参阅

FltFsControlFile