Anexar ECPs a operações de IRP_MJ_CREATE originadas por um driver no modo kernel
Você deve seguir estas etapas para configurar ECPs e anexar os ECPs a uma operação de IRP_MJ_CREATE em um arquivo:
Chame FltAllocateExtraCreateParameterList ou FsRtlAllocateExtraCreateParameterList para alocar memória para uma estrutura ECP_LIST . O sistema operacional não libera automaticamente ECP_LIST estruturas. Em vez disso, o driver de minifiltro deve eventualmente chamar FltFreeExtraCreateParameterList ou FsRtlFreeExtraCreateParameterList para desalocar a memória alocada para o ECP_LIST.
Chame FltAllocateExtraCreateParameter ou FsRtlAllocateExtraCreateParameter para alocar o pool de memória paginado para uma estrutura de contexto ECP e gerar um ponteiro para essa estrutura.
Chame FltInsertExtraCreateParameter ou FsRtlInsertExtraCreateParameter para inserir estruturas de contexto ECP na estrutura ECP_LIST .
Chame IoInitializeDriverCreateContext para inicializar uma estrutura IO_DRIVER_CREATE_CONTEXT .
Defina a estrutura IO_DRIVER_CREATE_CONTEXT . Nessa definição, aponte o membro ExtraCreateParameter de IO_DRIVER_CREATE_CONTEXT para a estrutura ECP_LIST .
Chame FltCreateFileEx2 ou IoCreateFileEx para anexar os ECPs à operação IRP_MJ_CREATE no arquivo. Nessa chamada, passe um ponteiro para a estrutura IO_DRIVER_CREATE_CONTEXT para o parâmetro DriverContext .
Chame FltFreeExtraCreateParameterList ou FsRtlFreeExtraCreateParameterList para liberar a estrutura ECP_LIST . Essas funções também liberarão automaticamente todos os elementos de lista ECP restantes.