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