Condividi tramite


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

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx