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 结构的成员 (不包括 Size 成员) 函数作为 IoCreateFileEx 和 FltCreateFileEx2 例程的附加参数。 相对于 IoCreateFileEx 和 FltCreateFileEx2 例程的接口,以下信息可能有所帮助:
ECP_LIST 结构包含 ECP) 条目 (额外创建参数的列表。 ECP 列表中的每个 ECP 条目 (ECP 上下文结构) (ECP_LIST 结构) 函数作为 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 例程返回的值。
要求
要求 | 值 |
---|---|
Header | ntddk.h (包括 Ntddk.h、Ntifs.h、Fltkernel.h) |
另请参阅
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList
FltFreeExtraCreateParameterList
FsRtlAllocateExtraCreateParameterList
FsRtlFreeExtraCreateParameterList
IoCreateFileSpecifyDeviceObjectHint