Bagikan melalui


Fungsi FsRtlAllocateExtraCreateParameter (ntifs.h)

Rutinitas FsRtlAllocateExtraCreateParameter mengalokasikan memori untuk struktur konteks parameter buat ekstra (ECP) dan menghasilkan penunjuk ke struktur tersebut.

Sintaks

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

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

[in] SizeOfContext

Ukuran, dalam byte, dari struktur konteks.

[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 FsRtlAllocateExtraCreateParameter akan dikenakan biaya 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 yang ditentukan filter dari jenis PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK. Rutinitas panggilan balik pembersihan dipanggil ketika struktur ECP (dibuat oleh rutinitas FsRtlAllocateExtraCreateParameter ) 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, nilai yang diarahkan oleh EcpContext adalah NULL dan FsRtlAllocateExtraCreateParameter akan mengembalikan kode status STATUS_INSUFFICIENT_RESOURCES.

Nilai kembali

FltAllocateExtraCreateParameter mengembalikan kode status seperti salah satu hal berikut:

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

Keterangan

Secara default, rutinitas FsRtlAllocateExtraCreateParameter mengalokasikan kumpulan memori halaman untuk struktur konteks ECP. Jika bitmask FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL digunakan seperti yang dijelaskan dalam parameter Bendera , 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 (ECP_LIST).

Jika penelepon mengalokasikan ECP_LIST dan satu atau beberapa ECP digunakan dalam panggilan ke IoCreateFileEx, deskripsi sebelumnya sudah benar. Dalam hal ini, sistem tidak membebaskan salah satu ECP, sehingga pemanggil dapat melakukan beberapa panggilan ke IoCreateFileEx dengan set ECP yang sama. 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
Klien minimum yang didukung Rutinitas FsRtlAllocateExtraCreateParameter 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

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK