FltAllocateExtraCreateParameterList - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// fltkernel.h

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

View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (nf-fltkernel-fltallocateextracreateparameterlist)

FltAllocateExtraCreateParameterList function

Description

The FltAllocateExtraCreateParameterList routine allocates paged pool memory for an extra create parameter (ECP) list structure and generates a pointer to that structure.

Parameters

Filter [in]

Opaque filter pointer for the minifilter driver. This pointer uniquely identifies the minifilter driver and remains constant as long as the minifilter driver is loaded.

Flags [in]

Defines pool allocation options. If the FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA flag is combined with the Flags parameter by using a bitwise OR operation, any pool allocated by the routine will be charged against the current process' memory quota.

EcpList [out]

Receives a pointer to an initialized ECP list structure. If the routine failed to allocate sufficient pool, *EcpList will be NULL and the routine will return status code STATUS_INSUFFICIENT_RESOURCES.

Return value

FltAllocateExtraCreateParameterList can return one of the following values:

Return code Description
STATUS_INSUFFICIENT_RESOURCES FltAllocateExtraCreateParameterList was unable to allocate sufficient memory for an ECP list structure. In this case, *EcpList will be NULL.
STATUS_SUCCESS The ECP list structure was successfully allocated and initialized. In this case, a pointer to the initialized list structure is returned in the *EcpList parameter.

Remarks

Whether the operating system automatically frees memory that FltAllocateExtraCreateParameterList allocates depends on when FltAllocateExtraCreateParameterList is called, as shown in the following situations:

If the FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA flag is used with the Flags parameter, as described above, a normal pageable pool is allocated. Otherwise, a pageable pool is allocated by using an internal lookaside list.

ECP_LIST structure

ECP_LIST is an opaque structure that is declared by the operating system. ECP_LIST contains a list of extra create parameter (ECP) entries.

The FltAllocateExtraCreateParameterList routine must be used to allocate memory for the ECP_LIST structure. The memory allocated by FltAllocateExtraCreateParameterList is not automatically freed by the operating system; it must be explicitly deallocated by calling the FltFreeExtraCreateParameterList routine. Note that any remaining ECP list elements will be automatically freed when FltFreeExtraCreateParameterList is called.

The PECP_LIST data type is used to declare a pointer to a variable of type ECP_LIST.

Syntax

struct ECP_LIST {
  ;      // Reserved.
};

The ECP_LIST structure is declared in Ntifs.h (include Ntifs.h).

See also

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx