Freigeben über


FltAllocateExtraCreateParameterList-Funktion (fltkernel.h)

Die FltAllocateExtraCreateParameterList Routine weist seitenseitigen Poolspeicher für eine zusätzliche Create-Parameter-Listenstruktur (ECP) 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 Poolzuordnungsoptionen. Wenn das FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA-Flag mit dem Flags Parameter kombiniert wird, indem ein bitweiser OR-Vorgang verwendet wird, wird jeder von der Routine zugewiesene Pool mit dem Speicherkontingent des aktuellen Prozesses belastet.

[out] EcpList

Empfängt einen Zeiger auf eine initialisierte ECP-Listenstruktur. Wenn die Routine nicht genügend Pool zuordnen konnte, wird *EcpList-NULL-, und die Routine gibt statuscode 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 zuordnen. In diesem Fall ist *EcpList-NULL-.
STATUS_SUCCESS Die ECP-Listenstruktur wurde erfolgreich zugeordnet und initialisiert. In diesem Fall wird ein Zeiger auf die initialisierte Listenstruktur im *EcpList-Parameter zurückgegeben.

Bemerkungen

Gibt an, ob das Betriebssystem automatisch Arbeitsspeicher freigibt, der FltAllocateExtraCreateParameterList zugeordnet wird, hängt davon ab, wann FltAllocateExtraCreateParameterList aufgerufen wird, wie in den folgenden Situationen gezeigt:

  • Ein Aufrufer kann FltAllocateExtraCreateParameterList aufrufen, um die ECP_LIST zuzuweisen und eine oder mehrere ECP-Kontextstrukturen hinzuzufügen, bevor der Aufrufer die FltCreateFileEx2 Routine aufruft. In dieser Situation befreit das Betriebssystem keine der ECP-Kontextstrukturen. Daher kann der Aufrufer mehrere Aufrufe an FltCreateFileEx2 mit demselben ECP-Satz durchführen. Wenn der Aufrufer mit dem ECP_LIST abgeschlossen ist, muss der Aufrufer die FltFreeExtraCreateParameterList Routine aufrufen, um die ECP_LIST freizurufen.

  • 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 Vorgang müssen möglicherweise mehrere IRP_MJ_CREATE Anforderungen generiert werden.

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

ECP_LIST Struktur

ECP_LIST ist eine undurchsichtige 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 Speicher für die ECP_LIST Struktur zuzuweisen. Der von FltAllocateExtraCreateParameterList zugeordnete Speicher wird vom Betriebssystem nicht automatisch freigegeben; sie muss explizit durch Aufrufen der FltFreeExtraCreateParameterList Routine behandelt werden. 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 (einschließlich Ntifs.h).

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Diese Routine ist ab Windows Vista verfügbar.
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
IRQL- <= APC_LEVEL

Siehe auch

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx-