FsRtlAllocateExtraCreateParameterList-Funktion (ntifs.h)

Die FsRtlAllocateExtraCreateParameterList-Routine weist ausgelagerten Poolspeicher für eine ECP_LIST-Struktur zu und generiert einen Zeiger auf diese Struktur.

Syntax

NTSTATUS FsRtlAllocateExtraCreateParameterList(
  [in]  FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
  [out] PECP_LIST                    *EcpList
);

Parameter

[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 pool, der von FsRtlAllocateExtraCreateParameterList zugeordnet wird, das Speicherkontingent des aktuellen Prozesses in Rechnung gestellt.

[out] EcpList

Empfängt einen Zeiger auf eine initialisierte ECP-Listenstruktur. Wenn FsRtlAllocateExtraCreateParameterList keinen ausreichenden Pool zuordnen konnte, ist *EcpList NULL, und FsRtlAllocateExtraCreateParameterList gibt status Code STATUS_INSUFFICIENT_RESOURCES zurück.

Rückgabewert

FsRtlAllocateExtraCreateParameterList kann einen der folgenden Werte zurückgeben:

Rückgabecode Beschreibung
STATUS_INSUFFICIENT_RESOURCES FsRtlAllocateExtraCreateParameterList konnte nicht genügend Arbeitsspeicher für eine ECP-Listenstruktur zuweisen. In diesem Fall ist *EcpList NULL.
STATUS_SUCCESS Der Arbeitsspeicher für die ECP_LIST-Struktur 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 FsRtlAllocateExtraCreateParameterList zuordnet, hängt davon ab, wann FsRtlAllocateExtraCreateParameterList aufgerufen wird, wie in den folgenden Situationen gezeigt:

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

  • Während ein Dateisystem- oder Dateisystemfiltertreiber eine IRP_MJ_CREATE Anforderung verarbeitet, kann der Dateisystem- oder Dateisystemfiltertreiber FltInsertExtraCreateParameter aufrufen, um ein ECP an eine vorhandene ECP_LIST anzufügen. Wenn die ECP_LIST nicht vorhanden ist, muss der Aufrufer FsRtlAllocateExtraCreateParameterList 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 Dateisystem- oder 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 mit dem Flags-Parameter verwendet wird, wird ein ausgelagerter Pool zugeordnet. Andernfalls wird ein ausgelagerter Pool mithilfe einer internen Lookaside-Liste zugeordnet.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Weitere Informationen

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx