IO_DRIVER_CREATE_CONTEXT结构(ntddk.h)
IO_DRIVER_CREATE_CONTEXT结构用于将其他参数传递给 IoCreateFileEx 和 FltCreateFileEx2 例程。 此结构是可选的。
旧筛选器驱动程序使用 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结构(不包括 大小 成员)的成员作为 IoCreateFileEx 和 FltCreateFileEx2 例程的其他参数。 相对于 IoCreateFileEx 和 FltCreateFileEx2 例程的接口,以下信息可能会有所帮助:
ECP_LIST结构包含额外创建参数(ECP)条目的列表。 ECP 列表(ECP_LIST结构)中的每个 ECP 条目(ECP 上下文结构)都充当 IoCreateFileEx 的附加创建参数,FltCreateFileEx2。
若要将 ECP 指定为创建操作的一部分,请使用正确的例程初始化 IO_DRIVER_CREATE_CONTEXT 结构的 ExtraCreateParameter 成员:
对于旧筛选器驱动程序,必须使用 FsRtlAllocateExtraCreateParameterList 例程来分配ECP_LIST结构的内存池。 操作系统不会自动释放ECP_LIST结构。 相反,分配ECP_LIST结构后,最终必须使用 FsRtlFreeExtraCreateParameterList 例程释放该结构。
对于微型筛选器驱动程序,必须使用 FltAllocateExtraCreateParameterList 例程为ECP_LIST结构分配内存池。 操作系统不会自动释放ECP_LIST结构。 相反,分配ECP_LIST结构后,必须使用 FltFreeExtraCreateParameterList 例程释放该结构。
如果使用 ECP,则必须使用适当的例程创建、操作和释放它们。 例如,微型筛选器驱动程序使用 FltInsertExtraCreateParameter 例程将 ECP 条目插入 ECP 列表中。 以下 另请参阅 部分列出了其中许多必需的例程。
从 调用 ioCreateFileEx 或 FltCreateFileEx2返回后,ECP 列表保持不变,并且可以传递给其他 IoCreateFileEx 或 FltCreateFileEx2 调用新创建操作。
若要在事务上下文中创建或打开文件,请将IO_DRIVER_CREATE_CONTEXT结构的 TxnParameters 成员设置为 IoGetTransactionParameterBlock 例程返回的值。
要求
要求 | 价值 |
---|---|
标头 | ntddk.h (包括 Ntddk.h、Ntifs.h、Fltkernel.h) |
另请参阅
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList
FltFreeExtraCreateParameterList
FsRtlAllocateExtraCreateParameterList
FsRtlFreeExtraCreateParameterList
IoCreateFileSpecifyDeviceObjectHint