Fungsi FltAllocateExtraCreateParameterList (fltkernel.h)

Rutinitas FltAllocateExtraCreateParameterList mengalokasikan memori kumpulan halaman untuk struktur daftar parameter buat tambahan (ECP) dan menghasilkan penunjuk ke struktur tersebut.

Sintaks

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

Parameter

[in] Filter

Penunjuk filter buram untuk driver minifilter. Pointer ini secara unik mengidentifikasi driver minifilter dan tetap konstan selama driver minifilter dimuat.

[in] Flags

Menentukan opsi alokasi kumpulan. Jika bendera FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA dikombinasikan dengan parameter Bendera dengan menggunakan operasi bitwise OR, kumpulan apa pun yang dialokasikan oleh rutinitas akan dikenakan biaya terhadap kuota memori proses saat ini.

[out] EcpList

Menerima penunjuk ke struktur daftar ECP yang diinisialisasi. Jika rutinitas gagal mengalokasikan kumpulan yang cukup, *EcpList akan menjadi NULL dan rutinitas akan mengembalikan kode status STATUS_INSUFFICIENT_RESOURCES.

Nilai kembali

FltAllocateExtraCreateParameterList dapat mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_INSUFFICIENT_RESOURCES FltAllocateExtraCreateParameterList tidak dapat mengalokasikan memori yang cukup untuk struktur daftar ECP. Dalam hal ini, *EcpList akan menjadi NULL.
STATUS_SUCCESS Struktur daftar ECP berhasil dialokasikan dan diinisialisasi. Dalam hal ini, penunjuk ke struktur daftar yang diinisialisasi dikembalikan dalam parameter *EcpList .

Keterangan

Apakah sistem operasi secara otomatis membebaskan memori yang dipanggil FltAllocateExtraCreateParameterList bergantung pada kapan FltAllocateExtraCreateParameterList dipanggil, seperti yang ditunjukkan dalam situasi berikut:

  • Pemanggil dapat memanggil FltAllocateExtraCreateParameterList untuk mengalokasikan ECP_LIST dan menambahkan satu atau beberapa struktur konteks ECP sebelum pemanggil memanggil rutinitas FltCreateFileEx2 . Dalam situasi ini, sistem operasi tidak membebaskan struktur konteks ECP apa pun. Oleh karena itu, penelepon dapat melakukan beberapa panggilan ke FltCreateFileEx2 dengan set ECP yang sama. Ketika penelepon selesai dengan ECP_LIST, pemanggil harus memanggil rutinitas FltFreeExtraCreateParameterList untuk membebaskan ECP_LIST.

  • Saat driver filter sistem file memproses permintaan IRP_MJ_CREATE , driver filter sistem file dapat memanggil FltInsertExtraCreateParameter untuk melampirkan ECP ke ECP_LIST yang ada. Jika ECP_LIST tidak ada, pemanggil harus memanggil FltAllocateExtraCreateParameterList untuk membuat ECP_LIST. Dalam situasi ini, ECP_LIST dan struktur konteks ECP secara otomatis dibersihkan oleh manajer I/O ketika operasi pembuatan selesai. Hal ini memungkinkan ECP driver filter untuk disebarluaskan dengan benar di seluruh pemrosesan titik pemilah ulang. Proses ini mungkin memerlukan beberapa permintaan IRP_MJ_CREATE untuk dibuat.

Jika bendera FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA digunakan dengan parameter Bendera , seperti yang dijelaskan di atas, kumpulan yang dapat dipaginasi normal dialokasikan. Jika tidak, kumpulan yang dapat di-pageable dialokasikan dengan menggunakan daftar lookaside internal.

struktur ECP_LIST

ECP_LIST adalah struktur buram yang dideklarasikan oleh sistem operasi. ECP_LIST berisi daftar entri parameter buat ekstra (ECP).

Rutinitas FltAllocateExtraCreateParameterList harus digunakan untuk mengalokasikan memori untuk struktur ECP_LIST . Memori yang dialokasikan oleh FltAllocateExtraCreateParameterList tidak secara otomatis dibebaskan oleh sistem operasi; harus secara eksplisit dibatalkan alokasinya dengan memanggil rutinitas FltFreeExtraCreateParameterList . Perhatikan bahwa elemen daftar ECP yang tersisa akan dibebaskan secara otomatis ketika FltFreeExtraCreateParameterList dipanggil.

Jenis data PECP_LIST digunakan untuk mendeklarasikan penunjuk ke variabel jenis ECP_LIST.

Sintaks

struct ECP_LIST {
  ;      // Reserved.
};

Struktur ECP_LIST dideklarasikan dalam Ntifs.h (termasuk Ntifs.h).

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Rutinitas ini tersedia dimulai dengan Windows Vista.
Target Platform Universal
Header fltkernel.h (termasuk Fltkernel.h)
Pustaka FltMgr.lib
IRQL <= APC_LEVEL

Lihat juga

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx