Fungsi FltAllocateExtraCreateParameter (fltkernel.h)

Rutinitas FltAllocateExtraCreateParameter mengalokasikan kumpulan memori halaman untuk struktur konteks parameter buat tambahan (ECP) yang ditentukan pengguna dan menghasilkan penunjuk ke struktur tersebut.

Sintaks

NTSTATUS FLTAPI FltAllocateExtraCreateParameter(
  [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]           ULONG                                          PoolTag,
  [out]          PVOID                                          *EcpContext
);

Parameter

[in] Filter

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

[in] EcpType

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

[in] SizeOfContext

Ukuran, dalam byte, dari struktur konteks yang ditentukan pengguna.

[in] Flags

Menentukan opsi alokasi kumpulan. Berikut ini menjelaskan bagaimana kumpulan akan dialokasikan ketika satu atau beberapa nilai bendera yang tercantum digabungkan dengan parameter Bendera dengan menggunakan operasi OR bitwise:

  • FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL - Kumpulan non-halaman akan dialokasikan. Jika nilai bendera ini tidak digunakan, kumpulan halaman akan dialokasikan.

  • FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA - Semua kumpulan yang dialokasikan oleh rutinitas ini akan dikenakan terhadap kuota memori proses saat ini.

Jika lebih dari satu bendera digunakan, semua efek yang terkait dengan nilai bendera yang digunakan akan terjadi.

[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 ECP (dibuat oleh rutinitas FltAllocateExtraCreateParameter ) dihapus. Atur parameter ini ke NULL jika rutinitas panggilan balik pembersihan tidak berlaku.

[in] PoolTag

Menentukan tag kumpulan untuk memori yang dialokasikan. Untuk informasi selengkapnya, lihat parameter TagExAllocatePoolWithTag.

[out] EcpContext

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

Nilai kembali

FltAllocateExtraCreateParameter dapat mengembalikan salah satu nilai berikut:

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

Keterangan

Secara default, rutinitas FltAllocateExtraCreateParameter mengalokasikan kumpulan memori halaman untuk struktur konteks ECP yang ditentukan pengguna. Jika bitmask FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL digunakan seperti yang dijelaskan di atas, kumpulan memori non-halaman dialokasikan. Setelah kumpulan ini dialokasikan dan struktur konteks ECP telah diinisialisasi, rutinitas FltInsertExtraCreateParameter digunakan untuk memasukkan struktur konteks ECP (elemen daftar ECP) ke dalam struktur daftar ECP (daftar ECP).

Kumpulan memori yang dialokasikan oleh rutinitas FltAllocateExtraCreateParameter tidak secara otomatis dikosongkan oleh sistem operasi. Kumpulan memori ini pada akhirnya harus dirilis dengan menggunakan salah satu metode berikut:

  • Panggil rutinitas FltRemoveExtraCreateParameter untuk menghapus struktur konteks ECP dari daftar ECP lalu panggil rutinitas FltFreeExtraCreateParameter untuk membebaskan struktur konteks ECP itu sendiri. Daftar ECP tetap ada.

  • Panggil rutinitas FltFreeExtraCreateParameterList - ini membebaskan daftar ECP termasuk elemen daftar apa pun (struktur konteks ECP). Daftar ECP dihancurkan.

    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.

Persyaratan

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

Lihat juga

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK