Funzione FltAllocateExtraCreateParameterList (fltkernel.h)
Il FltAllocateExtraCreateParameterList routine alloca la memoria del pool di paging per una struttura di elenco ECP (Create Parameter) aggiuntiva e genera un puntatore a tale struttura.
Sintassi
NTSTATUS FLTAPI FltAllocateExtraCreateParameterList(
[in] PFLT_FILTER Filter,
[in] FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
[out] PECP_LIST *EcpList
);
Parametri
[in] Filter
Puntatore di filtro opaco per il driver minifiltro. Questo puntatore identifica in modo univoco il driver minifiltro e rimane costante finché il driver minifiltro viene caricato.
[in] Flags
Definisce le opzioni di allocazione del pool. Se il flag FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA viene combinato con il parametro flag tramite un'operazione OR bit per bit, qualsiasi pool allocato dalla routine verrà addebitato in base alla quota di memoria del processo corrente.
[out] EcpList
Riceve un puntatore a una struttura di elenco ECP inizializzata. Se la routine non è riuscita ad allocare un pool sufficiente, *EcpList verrà NULL e la routine restituirà il codice di stato STATUS_INSUFFICIENT_RESOURCES.
Valore restituito
FltAllocateExtraCreateParameterList può restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
STATUS_INSUFFICIENT_RESOURCES | FltAllocateExtraCreateParameterList non è stato in grado di allocare memoria sufficiente per una struttura di elenco ECP. In questo caso, *EcpList verrà NULL. |
STATUS_SUCCESS | La struttura di elenco ECP è stata allocata e inizializzata correttamente. In questo caso, viene restituito un puntatore alla struttura dell'elenco inizializzato nel parametro *EcpList. |
Osservazioni
Se il sistema operativo libera automaticamente la memoria che FltAllocateExtraCreateParameterList alloca dipende dal momento in cui viene chiamato FltAllocateExtraCreateParameterList, come illustrato nelle situazioni seguenti:
Un chiamante può richiamare FltAllocateExtraCreateParameterList per allocare il ECP_LIST e aggiungere una o più strutture di contesto ECP prima che il chiamante richiami la routine FltCreateFileEx2. In questa situazione, il sistema operativo non libera alcuna delle strutture di contesto ECP. Pertanto, il chiamante può effettuare più chiamate a FltCreateFileEx2 con lo stesso set ECP. Quando il chiamante viene eseguito con il ECP_LIST, il chiamante deve chiamare la routine FltFreeExtraCreateParameterList per liberare il ECP_LIST.
Mentre un driver di filtro del file system elabora una richiesta di IRP_MJ_CREATE, il driver di filtro del file system può chiamare FltInsertExtraCreateParameter per collegare un ECP a un ECP_LIST esistente. Se il ECP_LIST non esiste, il chiamante deve chiamare FltAllocateExtraCreateParameterList per creare il ECP_LIST. In questo caso, il ECP_LIST e la struttura del contesto ECP vengono puliti automaticamente dal gestore di I/O al termine dell'operazione di creazione. In questo modo, l'ECP di un driver di filtro viene propagato correttamente attraverso l'elaborazione dei punti di controllo. Questo processo potrebbe richiedere la generazione di più richieste di IRP_MJ_CREATE.
Se il flag FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA viene usato con il parametro flag, come descritto in precedenza, viene allocato un normale pool di paging. In caso contrario, un pool di paging viene allocato usando un elenco lookaside interno.
struttura ECP_LIST
ECP_LIST è una struttura opaca dichiarata dal sistema operativo. ECP_LIST contiene un elenco di voci aggiuntive di parametri di creazione (ECP).
La routine FltAllocateExtraCreateParameterList deve essere utilizzata per allocare memoria per la struttura ECP_LIST. La memoria allocata da FltAllocateExtraCreateParameterList non viene liberata automaticamente dal sistema operativo; deve essere deallocata in modo esplicito chiamando la routine FltFreeExtraCreateParameterList. Si noti che tutti gli elementi dell'elenco ECP rimanenti verranno liberati automaticamente quando viene chiamato FltFreeExtraCreateParameterList.
Il tipo di dati PECP_LIST viene usato per dichiarare un puntatore a una variabile di tipo ECP_LIST.
Sintassi
struct ECP_LIST {
; // Reserved.
};
La struttura ECP_LIST è dichiarata in Ntifs.h (include Ntifs.h).
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Questa routine è disponibile a partire da Windows Vista. |
piattaforma di destinazione | Universale |
intestazione | fltkernel.h (include Fltkernel.h) |
libreria | FltMgr.lib |
IRQL | <= APC_LEVEL |
Vedere anche
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterFromLookasideList