Bagikan melalui


Menggunakan ECP untuk memproses operasi IRP_MJ_CREATE dalam driver filter sistem file

Anda dapat menggunakan parameter buat ekstra (ECP) di driver filter sistem file Anda untuk memproses operasi IRP_MJ_CREATE. Driver filter sistem file Anda dapat memanggil rutinitas di bagian berikut untuk mengambil, mengatur (menambahkan), mengakui, dan menghapus ECP untuk operasi IRP_MJ_CREATE . Anda juga dapat menentukan ruang sistem operasi tempat ECP berasal.

Mengambil EKP

Untuk mengambil ECP untuk operasi IRP_MJ_CREATE:

  1. Panggil FltGetEcpListFromCallbackData (atau FsRtlGetEcpListFromIrp) untuk mengambil pointer ke ECP_LIST yang terkait dengan operasi pembuatan.

  2. Lakukan salah satu operasi berikut:

Mengatur ECP

Untuk mengatur ECP untuk operasi IRP_MJ_CREATE , driver filter sistem file Anda akan:

  • Atur ECP di ECP_LIST yang sudah ada.

  • Atur ECP dalam ECP_LIST yang baru dibuat.

Mengatur ECP di ECP_LIST yang sudah ada

Untuk mengatur ECP di ECP_LIST yang sudah ada yang terkait dengan operasi buat:

  1. Panggil FltGetEcpListFromCallbackData (atau FsRtlGetEcpListFromIrp) untuk mengambil pointer ke ECP_LIST yang terkait dengan operasi pembuatan.

  2. Panggil FltAllocateExtraCreateParameter (atau FsRtlAllocateExtraCreateParameter) untuk mengalokasikan kumpulan memori halaman untuk struktur konteks ECP dan untuk menghasilkan penunjuk ke struktur tersebut.

  3. Panggil FltInsertExtraCreateParameter (atau FsRtlInsertExtraCreateParameter) untuk menyisipkan struktur konteks ECP ke dalam struktur ECP_LIST.

Mengatur ECP di ECP_LIST yang baru dibuat

Jika ECP_LIST saat ini tidak terkait dengan operasi pembuatan, Anda harus membuatnya lalu mengatur ECP di dalamnya:

  1. Panggil FltAllocateExtraCreateParameterList (atau FsRtlAllocateExtraCreateParameterList) untuk mengalokasikan memori untuk struktur ECP_LIST.

  2. Panggil FltAllocateExtraCreateParameter (atau FsRtlAllocateExtraCreateParameter) untuk mengalokasikan kumpulan memori halaman untuk struktur konteks ECP dan untuk menghasilkan penunjuk ke struktur tersebut.

  3. Panggil FltInsertExtraCreateParameter (atau FsRtlInsertExtraCreateParameter) untuk menyisipkan struktur konteks ECP ke dalam ECP_LIST.

  4. Panggil FltSetEcpListIntoCallbackData (atau FsRtlSetEcpListIntoIrp) untuk melampirkan daftar ECP ke operasi buat.

Menghapus ECP

Untuk menghapus ECP untuk operasi IRP_MJ_CREATE:

  1. Panggil FltRemoveExtraCreateParameter (atau FsRtlRemoveExtraCreateParameter) untuk mencari daftar ECP untuk struktur konteks ECP. Jika struktur konteks ECP ditemukan, rutin melepaskan struktur konteks ECP dari daftar ECP.

  2. Untuk membebaskan memori untuk struktur konteks ECP yang terlepas, panggil FltFreeExtraCreateParameter (atau FsRtlFreeExtraCreateParameter). Anda dapat memanggil rutinitas ini untuk membebaskan memori untuk struktur konteks ECP jika Anda mengalokasikan memori dengan salah satu cara berikut:

Menandai ECP sebagai diakui, atau menentukan status pengakuan

Panggil rutinitas berikut untuk menandai EKP sebagai diakui atau tentukan apakah ECP ditandai sebagai diakui:

Menentukan mode asal

Panggil FltIsEcpFromUserMode (atau FsRtlIsEcpFromUserMode) untuk menentukan apakah struktur konteks ECP berasal dari mode pengguna. Driver filter sistem file dapat menolak untuk menerima struktur konteks ECP yang berasal dari mode pengguna.

Menggunakan daftar lookaside untuk mengalokasikan ECP

Panggil rutinitas berikut untuk mengalokasikan ECP dari daftar lookaside dan untuk mengelola daftar lookaside dan ECP: