Uso degli ECP per elaborare le operazioni di IRP_MJ_CREATE in un driver di filtro del file system

È possibile usare parametri di creazione aggiuntivi (ECP) nel driver di filtro del file system per elaborare IRP_MJ_CREATE operazioni. Il driver di filtro del file system può chiamare le routine nelle sezioni seguenti per recuperare, impostare (aggiungere), confermare e rimuovere gli ECP per l'operazione di IRP_MJ_CREATE . È anche possibile determinare lo spazio del sistema operativo da cui hanno avuto origine gli ECP.

Recupero di ECP

Per recuperare gli ECP per l'operazione di IRP_MJ_CREATE :

  1. Chiamare FltGetEcpListFromCallbackData (o FsRtlGetEcpListFromIrp) per recuperare un puntatore al ECP_LIST associato all'operazione di creazione.

  2. Eseguire una delle operazioni seguenti:

Impostazione degli ECP

Per impostare gli ECP per l'operazione di IRP_MJ_CREATE , il driver di filtro del file system:

  • Impostare gli ECP in un ECP_LIST esistente.

  • Impostare gli ECP in un ECP_LIST appena creato.

Impostazione degli ECP in un ECP_LIST esistente

Per impostare gli ECP in un ECP_LIST esistente associato all'operazione di creazione:

  1. Chiamare FltGetEcpListFromCallbackData (o FsRtlGetEcpListFromIrp) per recuperare un puntatore al ECP_LIST associato all'operazione di creazione.

  2. Chiamare FltAllocateExtraCreateParameter (o FsRtlAllocateExtraCreateParameter) per allocare un pool di memoria di paging per una struttura di contesto ECP e generare un puntatore a tale struttura.

  3. Chiamare FltInsertExtraCreateParameter (o FsRtlInsertExtraCreateParameter) per inserire strutture di contesto ECP nella struttura ECP_LIST .

Impostazione degli ECP in un ECP_LIST appena creato

Se un ECP_LIST non è attualmente associato all'operazione di creazione, è necessario crearne uno e quindi impostarne uno:

  1. Chiamare FltAllocateExtraCreateParameterList (o FsRtlAllocateExtraCreateParameterList) per allocare memoria per una struttura ECP_LIST .

  2. Chiamare FltAllocateExtraCreateParameter (o FsRtlAllocateExtraCreateParameter) per allocare un pool di memoria di paging per una struttura di contesto ECP e generare un puntatore a tale struttura.

  3. Chiamare FltInsertExtraCreateParameter (o FsRtlInsertExtraCreateParameter) per inserire le strutture di contesto ECP nel ECP_LIST.

  4. Chiamare FltSetEcpListIntoCallbackData (o FsRtlSetEcpListIntoIrp) per collegare un elenco ECP all'operazione di creazione.

Rimozione di ECP

Per rimuovere gli ECP per l'operazione di IRP_MJ_CREATE :

  1. Chiamare FltRemoveExtraCreateParameter (o FsRtlRemoveExtraCreateParameter) per cercare un elenco ECP per una struttura di contesto ECP. Se viene trovata la struttura del contesto ECP, la routine scollega la struttura del contesto ECP dall'elenco ECP.

  2. Per liberare la memoria per la struttura di contesto ECP scollegata, chiamare FltFreeExtraCreateParameter (o FsRtlFreeExtraCreateParameter). È possibile chiamare queste routine per liberare memoria per la struttura del contesto ECP se la memoria è stata allocata in uno dei modi seguenti:

Contrassegnare gli ECP come riconosciuti o determinare lo stato di conferma

Chiamare le routine seguenti per contrassegnare gli ECP come riconosciuti o determinare se gli ECP sono contrassegnati come riconosciuti:

Determinazione della modalità di origine

Chiamare FltIsEcpFromUserMode (o FsRtlIsEcpFromUserMode) per determinare se una struttura di contesto ECP ha avuto origine dalla modalità utente. Un driver di filtro del file system può rifiutare di accettare una struttura di contesto ECP originata dalla modalità utente.

Uso degli elenchi lookaside per allocare gli ECP

Chiamare le routine seguenti per allocare gli ECP dagli elenchi lookaside e per gestire gli elenchi lookaside e gli ECP: