Fungsi FltDecodeParameters (fltkernel.h)
FltDecodeParameters mengembalikan pointer ke alamat daftar deskriptor memori (MDL), penunjuk buffer, panjang buffer, dan parameter akses yang diinginkan untuk operasi I/O. Ini menghemat driver minifilter dari memiliki pernyataan switch untuk menemukan posisi parameter ini dalam rutinitas pembantu yang mengakses alamat MDL, penunjuk buffer, panjang buffer, dan akses yang diinginkan untuk beberapa jenis operasi.
Sintaks
NTSTATUS FLTAPI FltDecodeParameters(
[in] PFLT_CALLBACK_DATA CallbackData,
[out] PMDL **MdlAddressPointer,
[out] PVOID **Buffer,
[out] PULONG *Length,
[out, optional] LOCK_OPERATION *DesiredAccess
);
Parameter
[in] CallbackData
Arahkan ke struktur data panggilan balik (FLT_CALLBACK_DATA) untuk operasi I/O.
[out] MdlAddressPointer
Penunjuk ke variabel yang disediakan penelepon yang menerima penunjuk ke anggota MdlAddress (atau OutputMdlAddress) dari struktur parameter data panggilan balik (FLT_PARAMETERS) (perhatikan bahwa anggota ini sendiri adalah penunjuk). Parameter ini bersifat opsional dan dapat berupa NULL. Jika operasi I/O tidak memiliki bidang MDL, parameter ini menerima NULL.
[out] Buffer
Penunjuk ke variabel yang disediakan penelepon yang menerima penunjuk ke anggota buffer yang sesuai (tergantung pada kode fungsi utama) dalam struktur parameter data panggilan balik (perhatikan bahwa anggota ini sendiri adalah penunjuk).
[out] Length
Penunjuk ke variabel yang disediakan penelepon yang menerima penunjuk ke anggota panjang buffer dalam struktur parameter data panggilan balik. Jika operasi tidak memiliki bidang panjang, parameter ini menerima NULL.
[out, optional] DesiredAccess
Penunjuk ke variabel yang disediakan penelepon yang menerima jenis akses yang sesuai untuk jenis operasi I/O ini, salah satu IoReadAccess, IoWriteAccess, atau IoModifyAccess. IoReadAccess berarti bahwa driver minifilter dapat memeriksa konten buffer tetapi tidak dapat mengubah konten di tempat. IoWriteAccess dan IoModifyAccess, yang setara, berarti bahwa driver minifilter telah membaca dan menulis akses ke buffer.
Nilai kembali
FltDecodeParameters mengembalikan STATUS_SUCCESS atau nilai NTSTATUS yang sesuai seperti berikut ini:
Menampilkan kode | Deskripsi |
---|---|
STATUS_INVALID_PARAMETER | Struktur data panggilan balik (FLT_CALLBACK_DATA) mewakili operasi I/O yang tidak memiliki parameter buffer. Ini adalah kode kesalahan. |
Keterangan
FltDecodeParameters mengembalikan pointer ke parameter untuk operasi I/O, bukan nilai parameter, sehingga pemanggil dapat memodifikasi nilai parameter jika diinginkan.
FltDecodeParameters dapat digunakan untuk operasi I/O yang cepat serta operasi berbasis IRP. Ini tidak bermakna untuk operasi panggilan balik filter sistem file (FSFilter), karena operasi tersebut tidak memiliki parameter buffer.
Operasi IOCTL dan FSCTL dapat memiliki satu atau dua buffer, tergantung pada metode buffering yang digunakan. Dalam kasus di mana operasi memiliki dua buffer (dan dua bidang panjang), FltDecodeParameters mengembalikan bidang OutputBuffer, OutputBufferLength, dan/atau OutputMdlAddress yang sesuai.
Tidak semua dari empat parameter dikembalikan untuk setiap operasi I/O. Misalnya, untuk permintaan IRP_MJ_READ, FltDecodeParameters menetapkan parameter output sebagai berikut.
Parameter | Nilai |
---|---|
MdlAddressPointer | &(CallbackData-Iopb-Parameters.Read.MdlAddress>>) |
Buffer | &(CallbackData-Iopb-Parameters.Read.ReadBuffer>>) |
Panjang | &(CallbackData-Iopb-Parameters.Read.Length>>) |
DesiredAccess | IoWriteAccess |
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | fltkernel.h (termasuk Fltkernel.h) |
Pustaka | FltMgr.lib |
IRQL | Tingkat apa pun |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk