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:

  1. 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.

  2. 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.

  3. Chame FltInsertExtraCreateParameter ou FsRtlInsertExtraCreateParameter para inserir estruturas de contexto ECP na estrutura ECP_LIST .

  4. Chame IoInitializeDriverCreateContext para inicializar uma estrutura IO_DRIVER_CREATE_CONTEXT .

  5. Defina a estrutura IO_DRIVER_CREATE_CONTEXT . Nessa definição, aponte o membro ExtraCreateParameter de IO_DRIVER_CREATE_CONTEXT para a estrutura ECP_LIST .

  6. 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 .

  7. 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.