Funzione FltAllocateExtraCreateParameterList (fltkernel.h)
La routine FltAllocateExtraCreateParameterList alloca la memoria del pool impaginata per una struttura di elenco di parametri di creazione aggiuntiva (ECP) 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 filtro opaco per il driver minifilter. Questo puntatore identifica in modo univoco il driver minifilter e rimane costante finché viene caricato il driver minifilter.
[in] Flags
Definisce le opzioni di allocazione del pool. Se il flag FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA viene combinato con il parametro Flags usando un'operazione OR bit per bit, qualsiasi pool allocato dalla routine verrà addebitato sulla quota di memoria del processo corrente.
[out] EcpList
Riceve un puntatore a una struttura di elenco ECP inizializzata. Se la routine non è riuscita a allocare un pool sufficiente, *EcpList sarà 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 sarà NULL. |
STATUS_SUCCESS | La struttura dell'elenco ECP è stata allocata e inizializzata correttamente. In questo caso, viene restituito un puntatore alla struttura dell'elenco inizializzato nel parametro *EcpList . |
Commenti
Se il sistema operativo libera automaticamente la memoria che FltAllocateExtraCreateParameterList dipende dal momento in cui fltAllocateExtraCreateParameterList viene chiamato, come illustrato nelle situazioni seguenti:
Un chiamante può richiamare FltAllocateExtraCreateParameterList per allocare la ECP_LIST e aggiungere una o più strutture di contesto ECP prima che il chiamante richiama 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 la ECP_LIST non esiste, il chiamante deve chiamare FltAllocateExtraCreateParameterList per creare la ECP_LIST. In questa situazione, la ECP_LIST e la struttura del contesto ECP vengono automaticamente puliti dal gestore di I/O al termine dell'operazione di creazione. Ciò consente a un driver di filtro di propagarsi correttamente attraverso l'elaborazione di punti di ripristino. 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 Flags , come descritto in precedenza, viene allocato un normale pool di pagine. In caso contrario, un pool paginabile viene allocato usando un elenco lookaside interno.
ECP_LIST struttura
ECP_LIST è una struttura opaca dichiarata dal sistema operativo. ECP_LIST contiene un elenco di voci di parametri di creazione aggiuntivi (ECP).
La routine FltAllocateExtraCreateParameterList deve essere usata per allocare memoria per la struttura di 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 di 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).
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Questa routine è disponibile a partire da Windows Vista. |
Piattaforma di destinazione | Universale |
Intestazione | fltkernel.h (includere Fltkernel.h) |
Libreria | FltMgr.lib |
IRQL | <= APC_LEVEL |
Vedi anche
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterFromLookasideList