Freigeben über


FsRtlAllocateExtraCreateParameterList-Funktion (ntifs.h)

Die FsRtlAllocateExtraCreateParameterList Routine weist seitenseitigen 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 Poolzuordnungsoptionen. Wenn das FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA Flag mit dem Flags Parameter kombiniert wird, indem ein bitweiser OR-Vorgang verwendet wird, werden alle pools, die von FsRtlAllocateExtraCreateParameterList zugeordnet werden, dem Speicherkontingent des aktuellen Prozesses in Rechnung gestellt.

[out] EcpList

Empfängt einen Zeiger auf eine initialisierte ECP-Listenstruktur. Wenn FsRtlAllocateExtraCreateParameterList nicht genügend Pool zuordnen konnte, *EcpList- ist NULL und FsRtlAllocateExtraCreateParameterList gibt Statuscode 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 zuordnen. In diesem Fall ist *EcpList- NULL.
STATUS_SUCCESS Der Speicher für die ECP_LIST-Struktur 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 FsRtlAllocateExtraCreateParameterList zugeordnet wird, hängt davon ab, wann FsRtlAllocateExtraCreateParameterList aufgerufen wird, wie in den folgenden Situationen gezeigt:

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

  • 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. Auf diese Weise kann das ECP eines Dateisystems oder eines Filtertreibers über die Verarbeitung von Analysepunkten ordnungsgemäß 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 parameter Flags verwendet wird, wird ein ausgelagerter Pool zugewiesen. Andernfalls wird ein ausgelagerter Pool mithilfe einer internen Lookaside-Liste zugewiesen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= APC_LEVEL

Siehe auch

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2-

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData-

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx-