将 ECP 附加到内核模式驱动程序发起IRP_MJ_CREATE操作
必须按照以下步骤设置 ECP 并将 ECP 附加到对文件的 IRP_MJ_CREATE 操作:
调用 FltAllocateExtraCreateParameterList 或 FsRtlAllocateExtraCreateParameterList 为 ECP_LIST 结构分配内存。 操作系统不会自动释放 ECP_LIST 结构。 相反,微筛选器驱动程序必须最终调用 FltFreeExtraCreateParameterList 或 FsRtlFreeExtraCreateParameterList ,以解除分配为 ECP_LIST分配的内存。
调用 FltAllocateExtraCreateParameter 或 FsRtlAllocateExtraCreateParameter 为 ECP 上下文结构分配分页内存池,并生成指向该结构的指针。
调用 FltInsertExtraCreateParameter 或 FsRtlInsertExtraCreateParameter 以将 ECP 上下文结构插入 到 ECP_LIST 结构中。
调用 IoInitializeDriverCreateContext 以初始化 IO_DRIVER_CREATE_CONTEXT 结构。
定义 IO_DRIVER_CREATE_CONTEXT 结构。 在此定义中,将 IO_DRIVER_CREATE_CONTEXT 的 ExtraCreateParameter 成员指向ECP_LIST结构。
调用 FltCreateFileEx2 或 IoCreateFileEx ,将 ECP 附加到文件上的 IRP_MJ_CREATE 操作。 在此调用中,将指向 IO_DRIVER_CREATE_CONTEXT 结构的指针传递给 DriverContext 参数。
调用 FltFreeExtraCreateParameterList 或 FsRtlFreeExtraCreateParameterList 以释放 ECP_LIST 结构。 这些函数还将自动释放任何剩余的 ECP 列表元素。