Bagikan melalui


Fungsi FsRtlAllocateExtraCreateParameterFromLookasideList (ntifs.h)

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

Sintaks

NTSTATUS FsRtlAllocateExtraCreateParameterFromLookasideList(
  [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] EcpType

Pointer ke GUID yang menunjukkan jenis ECP yang struktur konteksnya harus dialokasikan. Untuk informasi selengkapnya tentang ECP, lihat Menggunakan Parameter Buat Ekstra dengan Operasi IRP_MJ_CREATE.

[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 ditunjukkan parameter LookasideList , FsRtlAllocateExtraCreateParameterFromLookasideList mengalokasikan struktur konteks ECP 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 FsRtlAllocateExtraCreateParameterFromLookasideList dikenakan terhadap kuota memori proses saat ini. Untuk informasi selengkapnya tentang nilai bendera bit, lihat parameter BenderaFsRtlAllocateExtraCreateParameter. Dalam kasus yang lebih umum, ketika FsRtlAllocateExtraCreateParameterFromLookasideList mengalokasikan memori untuk struktur konteks ECP dari daftar lookaside, FsRtlAllocateExtraCreateParameterFromLookasideList mengabaikan bendera bit FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA.

[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

Penunjuk ke daftar lookaside yang diinisialisasi tempat FsRtlAllocateExtraCreateParameterFromLookasideList mencoba mengalokasikan kumpulan (untuk struktur konteks ECP). Untuk menginisialisasi daftar lookaside, gunakan rutinitas FsRtlInitExtraCreateParameterLookasideList .

[out] EcpContext

Arahkan ke lokasi yang menerima penunjuk ke struktur konteks ECP yang dialokasikan. Jika FsRtlAllocateExtraCreateParameterFromLookasideList gagal mengalokasikan kumpulan yang cukup untuk struktur konteks ECP, FsRtlAllocateExtraCreateParameterFromLookasideList menetapkan EcpContext ke NULL dan mengembalikan kode status STATUS_INSUFFICIENT_RESOURCES.

Nilai kembali

Rutinitas FsRtlAllocateExtraCreateParameterFromLookasideList dapat mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_INSUFFICIENT_RESOURCES Rutinitas FsRtlAllocateExtraCreateParameterFromLookasideList tidak dapat mengalokasikan memori yang cukup untuk struktur konteks ECP. Dalam hal ini, parameter EcpContext adalah NULL.
STATUS_SUCCESS Struktur konteks ECP berhasil dialokasikan. Dalam hal ini, FsRtlAllocateExtraCreateParameterFromLookasideList mengembalikan pointer ke struktur yang dialokasikan dalam parameter EcpContext .

Keterangan

Gunakan rutinitas FsRtlInitExtraCreateParameterLookasideList untuk menginisialisasi daftar lookaside kumpulan yang dipaginasi atau tidak di-halaman. Gunakan rutinitas FsRtlAllocateExtraCreateParameterFromLookasideList untuk mengalokasikan struktur konteks ECP dari daftar lookaside, dan rutinitas FsRtlFreeExtraCreateParameter untuk membatalkan alokasi struktur konteks ECP.

Gunakan rutinitas FsRtlDeleteExtraCreateParameterLookasideList 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. Ini memungkinkan ECP driver filter untuk disebarluaskan dengan benar di seluruh titik penguraian ulang, 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
Klien minimum yang didukung FsRtlAllocateExtraCreateParameterFromLookasideList tersedia dimulai dengan Windows Vista.
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Lihat juga

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK