Fungsi FltAllocateExtraCreateParameterFromLookasideList (fltkernel.h)

Rutinitas FltAllocateExtraCreateParameterFromLookasideList mengalokasikan kumpulan memori dari daftar lookaside tertentu untuk struktur konteks parameter buat tambahan (ECP) dan menghasilkan penunjuk ke struktur tersebut.

Sintaks

NTSTATUS FLTAPI FltAllocateExtraCreateParameterFromLookasideList(
  [in]           PFLT_FILTER                                    Filter,
  [in]           LPCGUID                                        EcpType,
  [in]           ULONG                                          SizeOfContext,
  [in]           FSRTL_ALLOCATE_ECP_FLAGS                       Flags,
  [in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
  [in, out]      PVOID                                          LookasideList,
  [out]          PVOID                                          *EcpContext
);

Parameter

[in] Filter

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

[in] EcpType

Penunjuk ke GUID yang menunjukkan jenis struktur konteks ECP. Lihat Menggunakan GUID di Driver untuk informasi selengkapnya.

[in] SizeOfContext

Ukuran, dalam byte, dari struktur konteks ECP.

[in] Flags

Menentukan opsi alokasi kumpulan. Jika nilai parameter SizeOfContext lebih besar dari ukuran, dalam byte, dari daftar lookaside yang diberikan, struktur konteks ECP akan dialokasikan dari kumpulan sistem alih-alih daftar lookaside. Dalam hal ini, jika parameter Bendera berisi nilai bendera bit FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA, kumpulan sistem yang dialokasikan oleh rutinitas akan dikenakan terhadap kuota memori proses saat ini. Lihat parameter BenderaFltAllocateExtraCreateParameter untuk informasi selengkapnya. Dalam kasus yang lebih umum ketika memori untuk struktur konteks ECP dialokasikan dari daftar lookaside, bendera FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA bit tidak digunakan oleh rutinitas.

[in, optional] CleanupCallback

Penunjuk opsional ke rutinitas panggilan balik pembersihan tipe PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK yang ditentukan minifilter. Rutinitas panggilan balik pembersihan dipanggil ketika struktur konteks ECP dihapus. Atur parameter ini ke NULL jika rutinitas panggilan balik pembersihan tidak berlaku.

[in, out] LookasideList

Arahkan ke daftar tampilan yang diinisialisasi untuk mencoba mengalokasikan kumpulan dari (untuk struktur konteks ECP). Untuk menginisialisasi daftar lookaside, gunakan rutinitas FltInitExtraCreateParameterLookasideList .

[out] EcpContext

Menerima penunjuk ke struktur konteks ECP yang dialokasikan. Jika rutinitas gagal mengalokasikan kumpulan yang memadai untuk struktur konteks ECP, EcpContext akan menjadi NULL dan rutinitas akan mengembalikan kode status STATUS_INSUFFICIENT_RESOURCES.

Nilai kembali

Rutinitas FltAllocateExtraCreateParameterFromLookasideList dapat mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_INSUFFICIENT_RESOURCES Rutinitas FltAllocateExtraCreateParameterFromLookasideList tidak dapat mengalokasikan memori yang cukup untuk struktur konteks ECP. Dalam hal ini, EcpContext akan menjadi NULL.
STATUS_SUCCESS Struktur konteks ECP berhasil dialokasikan. Dalam hal ini, penunjuk ke struktur yang dialokasikan dikembalikan oleh parameter EcpContext .

Keterangan

Rutinitas ini tersedia dimulai dengan Windows Vista.

Rutinitas FltAllocateExtraCreateParameterFromLookasideList mengalokasikan kumpulan memori untuk struktur konteks ECP dari daftar tampilan halaman yang diinisialisasi atau non-halaman yang diberikan. Namun, jika ukuran struktur konteks ECP (seperti yang didefinisikan oleh parameter SizeOfContext ) lebih besar dari daftar lookaside, rutinitas secara analog mengalokasikan memori dari kumpulan sistem halaman atau non-halaman.

Gunakan rutinitas FltInitExtraCreateParameterLookasideList untuk menginisialisasi daftar tampilan kumpulan halaman atau non-halaman. Gunakan rutinitas FltAllocateExtraCreateParameterFromLookasideList untuk mengalokasikan struktur konteks ECP dari daftar lookaside, dan rutinitas FltFreeExtraCreateParameter untuk membatalkan alokasi struktur konteks ECP.

Gunakan rutinitas FltDeleteExtraCreateParameterLookasideList untuk membebaskan daftar lookaside.

Driver harus membebaskan semua struktur konteks ECP dan daftar lookaside yang mereka buat sebelum membongkar. Namun, jika sistem file atau driver filter sistem file melampirkan ECP ke ECP_LIST yang sudah ada atau yang baru dibuat saat memproses permintaan IRP_MJ_CREATE, ECP ini secara otomatis dibersihkan ketika IRP selesai. Akibatnya, driver filter tidak harus membersihkan ECP yang ditambahkan secara dinamis. Hal ini memungkinkan ECP driver filter untuk disebarluaskan dengan benar di seluruh titik reparse--proses yang dapat memerlukan beberapa permintaan IRP_MJ_CREATE untuk dihasilkan.

Untuk informasi selengkapnya tentang menggunakan daftar lookaside dengan driver, lihat Menggunakan lookaside Lists.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header fltkernel.h (termasuk Fltkernel.h)
Pustaka FltMgr.lib
IRQL <= APC_LEVEL

Lihat juga

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltDeleteExtraCreateParameterLookasideList

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInitExtraCreateParameterLookasideList

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK