FltAllocateExtraCreateParameterList-Funktion (fltkernel.h)

Die FltAllocateExtraCreateParameterList-Routine weist ausgelagerten Poolspeicher für eine zusätzliche ECP-Listenstruktur (Create Parameter) zu und generiert einen Zeiger auf diese Struktur.

Syntax

NTSTATUS FLTAPI FltAllocateExtraCreateParameterList(
  [in]  PFLT_FILTER                  Filter,
  [in]  FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
  [out] PECP_LIST                    *EcpList
);

Parameter

[in] Filter

Undurchsichtiger Filterzeiger für den Minifiltertreiber. Dieser Zeiger identifiziert den Minifiltertreiber eindeutig und bleibt konstant, solange der Minifiltertreiber geladen wird.

[in] Flags

Definiert Optionen für die Poolzuordnung. Wenn das FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA-Flag mit dem Flags-Parameter mithilfe eines bitweisen OR-Vorgangs kombiniert wird, wird jedem von der Routine zugeordneten Pool das Speicherkontingent des aktuellen Prozesses in Rechnung gestellt.

[out] EcpList

Empfängt einen Zeiger auf eine initialisierte ECP-Listenstruktur. Wenn die Routine keinen ausreichenden Pool zuordnet, ist *EcpListNULL, und die Routine gibt status Code STATUS_INSUFFICIENT_RESOURCES zurück.

Rückgabewert

FltAllocateExtraCreateParameterList kann einen der folgenden Werte zurückgeben:

Rückgabecode Beschreibung
STATUS_INSUFFICIENT_RESOURCES FltAllocateExtraCreateParameterList konnte nicht genügend Arbeitsspeicher für eine ECP-Listenstruktur zuweisen. In diesem Fall ist *EcpListNULL.
STATUS_SUCCESS Die ECP-Listenstruktur wurde erfolgreich zugeordnet und initialisiert. In diesem Fall wird im *EcpList-Parameter ein Zeiger auf die initialisierte Listenstruktur zurückgegeben.

Hinweise

Ob das Betriebssystem automatisch Arbeitsspeicher freigibt, den FltAllocateExtraCreateParameterList zuordnet, hängt davon ab, wann FltAllocateExtraCreateParameterList aufgerufen wird, wie in den folgenden Situationen gezeigt:

  • Ein Aufrufer kann FltAllocateExtraCreateParameterList aufrufen, um die ECP_LIST zuzuordnen und eine oder mehrere ECP-Kontextstrukturen hinzuzufügen, bevor der Aufrufer die FltCreateFileEx2-Routine aufruft . In dieser Situation gibt das Betriebssystem keine ecp-Kontextstrukturen frei. Daher kann der Aufrufer mehrere Aufrufe an FltCreateFileEx2 mit demselben ECP-Satz ausführen. Wenn der Aufrufer mit dem ECP_LIST fertig ist, muss der Aufrufer die FltFreeExtraCreateParameterList-Routine aufrufen, um die ECP_LIST frei zu geben.

  • Während ein Dateisystemfiltertreiber eine IRP_MJ_CREATE-Anforderung verarbeitet, kann der Dateisystemfiltertreiber FltInsertExtraCreateParameter aufrufen, um ein ECP an eine vorhandene ECP_LIST anzufügen. Wenn die ECP_LIST nicht vorhanden ist, muss der Aufrufer FltAllocateExtraCreateParameterList aufrufen, um die ECP_LIST zu erstellen. In diesem Fall werden die ECP_LIST und die ECP-Kontextstruktur automatisch vom E/A-Manager bereinigt, wenn der Erstellungsvorgang abgeschlossen ist. Dadurch kann der ECP eines Filtertreibers ordnungsgemäß über die Verarbeitung von Analysepunkten verteilt werden. Für diesen Prozess müssen möglicherweise mehrere IRP_MJ_CREATE Anforderungen generiert werden.

Wenn das FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA-Flag wie oben beschrieben mit dem Flags-Parameter verwendet wird, wird ein normaler auslagerungsfähiger Pool zugeordnet. Andernfalls wird ein ausgelagerter Pool mithilfe einer internen Lookaside-Liste zugeordnet.

ECP_LIST-Struktur

ECP_LIST ist eine nicht transparente Struktur, die vom Betriebssystem deklariert wird. ECP_LIST enthält eine Liste mit zusätzlichen ECP-Einträgen (Create Parameter).

Die FltAllocateExtraCreateParameterList-Routine muss verwendet werden, um Arbeitsspeicher für die ECP_LIST-Struktur zuzuweisen. Der von FltAllocateExtraCreateParameterList zugewiesene Arbeitsspeicher wird nicht automatisch vom Betriebssystem freigegeben. Die Zuordnung muss explizit aufgehoben werden, indem die FltFreeExtraCreateParameterList-Routine aufgerufen wird. Beachten Sie, dass alle verbleibenden ECP-Listenelemente automatisch freigegeben werden, wenn FltFreeExtraCreateParameterList aufgerufen wird.

Der PECP_LIST Datentyp wird verwendet, um einen Zeiger auf eine Variable vom Typ ECP_LIST zu deklarieren.

Syntax

struct ECP_LIST {
  ;      // Reserved.
};

Die ECP_LIST-Struktur wird in Ntifs.h deklariert (include Ntifs.h).

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Diese Routine ist ab Windows Vista verfügbar.
Zielplattform Universell
Header fltkernel.h (fltkernel.h einschließen)
Bibliothek FltMgr.lib
IRQL <= APC_LEVEL

Weitere Informationen

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx