Compartir a través de


Uso de ECP para procesar operaciones de IRP_MJ_CREATE en un controlador de filtro del sistema de archivos

Puede usar parámetros de creación adicionales (ECP) en el controlador de filtro del sistema de archivos para procesar IRP_MJ_CREATE operaciones. El controlador de filtro del sistema de archivos puede llamar a las rutinas de las secciones siguientes para recuperar, establecer (agregar), confirmar y quitar ECP para la operación de IRP_MJ_CREATE . También puede determinar el espacio del sistema operativo desde el que se originaron las ECP.

Recuperación de ECP

Para recuperar ECP para la operación de IRP_MJ_CREATE :

  1. Llame a FltGetEcpListFromCallbackData (o FsRtlGetEcpListFromIrp) para recuperar un puntero a la ECP_LIST asociada a la operación de creación.

  2. Realice cualquiera de las siguientes operaciones:

Configuración de ECP

Para establecer ECP para la operación de IRP_MJ_CREATE , el controlador de filtro del sistema de archivos hará lo siguiente:

  • Establezca ECP en un ECP_LIST existente.

  • Establezca ECP en un ECP_LIST recién creado.

Establecimiento de ECP en un ECP_LIST existente

Para establecer ECP en una ECP_LISTexistente asociada a la operación de creación:

  1. Llame a FltGetEcpListFromCallbackData (o FsRtlGetEcpListFromIrp) para recuperar un puntero a la ECP_LIST asociada a la operación de creación.

  2. Llame a FltAllocateExtraCreateParameter (o FsRtlAllocateExtraCreateParameter) para asignar un grupo de memoria paginada para una estructura de contexto ECP y generar un puntero a esa estructura.

  3. Llame a FltInsertExtraCreateParameter (o FsRtlInsertExtraCreateParameter) para insertar estructuras de contexto ECP en la estructura ECP_LIST .

Configuración de ECP en una ECP_LIST recién creada

Si un ECP_LIST no está asociado actualmente a la operación de creación, deberá crear uno y, a continuación, establecer ECP en él:

  1. Llame a FltAllocateExtraCreateParameterList (o FsRtlAllocateExtraCreateParameterList) para asignar memoria para una estructura de ECP_LIST .

  2. Llame a FltAllocateExtraCreateParameter (o FsRtlAllocateExtraCreateParameter) para asignar un grupo de memoria paginada para una estructura de contexto ECP y generar un puntero a esa estructura.

  3. Llame a FltInsertExtraCreateParameter (o FsRtlInsertExtraCreateParameter) para insertar estructuras de contexto ECP en el ECP_LIST.

  4. Llame a FltSetEcpListIntoCallbackData (o FsRtlSetEcpListIntoIrp) para adjuntar una lista ECP a la operación de creación.

Eliminación de ECP

Para quitar ECP para la operación de IRP_MJ_CREATE :

  1. Llame a FltRemoveExtraCreateParameter (o FsRtlRemoveExtraCreateParameter) para buscar una lista ECP para obtener una estructura de contexto ECP. Si se encuentra la estructura de contexto ecp, la rutina desasocia la estructura de contexto ecp de la lista ecp.

  2. Para liberar la memoria de la estructura de contexto ECP desasociada, llame a FltFreeExtraCreateParameter (o FsRtlFreeExtraCreateParameter). Puede llamar a estas rutinas para liberar memoria para la estructura de contexto ecp si ha asignado la memoria de una de las maneras siguientes:

Marcar los ECP como confirmados o determinar el estado de confirmación

Llame a las siguientes rutinas para marcar ECP como confirmadas o determinar si los ECP se marcan como confirmados:

Determinar el modo de origen

Llame a FltIsEcpFromUserMode (o FsRtlIsEcpFromUserMode) para determinar si una estructura de contexto ECP se originó en el modo de usuario. Un controlador de filtro del sistema de archivos puede rechazar aceptar una estructura de contexto ECP que se originó en el modo de usuario.

Uso de listas de búsqueda para asignar ECP

Llame a las siguientes rutinas para asignar ECP desde listas de búsqueda y para administrar las listas y ECP de búsqueda: