IO_DRIVER_CREATE_CONTEXT结构(ntddk.h)

IO_DRIVER_CREATE_CONTEXT结构用于将其他参数传递给 IoCreateFileExFltCreateFileEx2 例程。 此结构是可选的。

旧筛选器驱动程序使用 IoCreateFileEx 例程,FltCreateFileEx2 例程由微型筛选器驱动程序使用。

语法

typedef struct _IO_DRIVER_CREATE_CONTEXT {
  CSHORT               Size;
  struct _ECP_LIST     *ExtraCreateParameter;
  PVOID                DeviceObjectHint;
  PTXN_PARAMETER_BLOCK TxnParameters;
  PESILO               SiloContext;
} IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT;

成员

Size

IoInitializeDriverCreateContext 例程初始化的只读成员。

ExtraCreateParameter

指向 ECP_LIST 结构的指针,其中包含额外创建参数 (ECP) 条目的列表。 有关重要信息,请参阅以下 备注 部分。

DeviceObjectHint

如果使用IO_DRIVER_CREATE_CONTEXT将其他创建参数传递给 FltCreateFileEx2 例程,则必须将此成员 NULL

如果使用IO_DRIVER_CREATE_CONTEXT将其他创建参数传递给 IoCreateFileEx 例程,则此成员是指向将创建请求发送到的设备对象的指针。 设备对象必须是文件系统驱动程序堆栈中文件或目录所在的卷的旧筛选器或文件系统设备对象。 在 IoCreateFileEx 示例中,此参数是可选的,可以 NULL。 如果此参数 NULL,则请求将发送到驱动程序堆栈顶部的设备对象。

TxnParameters

指向要与创建操作关联的事务的指针。 如果此成员的值是指向事务的有效指针,则创建操作将是事务的一部分。 如果此成员的值 NULL,则创建操作将不会是事务的一部分。

SiloContext

文件所在的容器。 此成员是在 Windows 10 版本 1607 中引入的。

言论

可以从分页池或非分页池分配IO_DRIVER_CREATE_CONTEXT结构。 IoInitializeDriverCreateContext 例程必须先初始化IO_DRIVER_CREATE_CONTEXT结构,然后才能使用该结构。

IO_DRIVER_CREATE_CONTEXT结构(不包括 大小 成员)的成员作为 IoCreateFileExFltCreateFileEx2 例程的其他参数。 相对于 IoCreateFileExFltCreateFileEx2 例程的接口,以下信息可能会有所帮助:

  • ECP_LIST结构包含额外创建参数(ECP)条目的列表。 ECP 列表(ECP_LIST结构)中的每个 ECP 条目(ECP 上下文结构)都充当 IoCreateFileEx 的附加创建参数,FltCreateFileEx2

    若要将 ECP 指定为创建操作的一部分,请使用正确的例程初始化 IO_DRIVER_CREATE_CONTEXT 结构的 ExtraCreateParameter 成员:

    如果使用 ECP,则必须使用适当的例程创建、操作和释放它们。 例如,微型筛选器驱动程序使用 FltInsertExtraCreateParameter 例程将 ECP 条目插入 ECP 列表中。 以下 另请参阅 部分列出了其中许多必需的例程。

    调用 ioCreateFileExFltCreateFileEx2返回后,ECP 列表保持不变,并且可以传递给其他 IoCreateFileExFltCreateFileEx2 调用新创建操作。

  • 若要在事务上下文中创建或打开文件,请将IO_DRIVER_CREATE_CONTEXT结构的 TxnParameters 成员设置为 IoGetTransactionParameterBlock 例程返回的值。

要求

要求 价值
标头 ntddk.h (包括 Ntddk.h、Ntifs.h、Fltkernel.h)

另请参阅

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

FsRtlAllocateExtraCreateParameterList

FsRtlFreeExtraCreateParameterList

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetTransactionParameterBlock

IoInitializeDriverCreateContext