Fungsi KsEnableEventWithAllocator (ks.h)
Fungsi KsEnableEventWithAllocator memungkinkan peristiwa yang diminta melalui IOCTL_KS_ENABLE_EVENT tetapi juga memungkinkan panggilan balik alokator opsional digunakan untuk menyediakan buffer untuk parameter. Ini merespons semua pengidentifikasi peristiwa yang ditentukan oleh set. Fungsi ini hanya dapat dipanggil pada PASSIVE_LEVEL.
Jika digunakan, filter mungkin perlu membebaskan buffer secara nonkonvensional. Perhatikan bahwa bendera IRP_BUFFERED_IO dan IRP_DEALLOCATE_BUFFER tidak diatur saat menggunakan alokator kustom.
Sintaks
KSDDKAPI NTSTATUS KsEnableEventWithAllocator(
[in] PIRP Irp,
[in] ULONG EventSetsCount,
[in] const KSEVENT_SET *EventSet,
[in, out] PLIST_ENTRY EventsList,
[in, optional] KSEVENTS_LOCKTYPE EventsFlags,
[in, optional] PVOID EventsLock,
[in, optional] PFNKSALLOCATOR Allocator,
[in, optional] ULONG EventItemSize
);
Parameter
[in] Irp
Menentukan IRP dengan permintaan pengaktifan yang sedang ditangani. Objek file yang terkait dengan IRP disimpan dengan peristiwa untuk perbandingan nanti saat menonaktifkan peristiwa.
[in] EventSetsCount
Menunjukkan jumlah struktur set peristiwa yang diteruskan.
[in] EventSet
Menentukan penunjuk ke daftar informasi kumpulan peristiwa.
[in, out] EventsList
Jika mengaktifkan KSEVENT_SET peristiwa. AddHandler untuk set peristiwa adalah NULL, itu harus menunjuk ke kepala daftar item KSEVENT_ENTRY tempat peristiwa akan ditambahkan. Fungsi ini mengasumsikan satu daftar untuk setidaknya subset peristiwa.
[in, optional] EventsFlags
Menentukan bendera KSEVENTS_LOCKTYPE yang menentukan jenis kunci pengecualian yang akan digunakan dalam mengakses daftar peristiwa, jika ada. Jika tidak ada bendera yang diatur, maka tidak ada kunci yang diambil. Jika handler sudah ditentukan, parameter ini diabaikan.
[in, optional] EventsLock
Jika KSEVENT_SET. AddHandler untuk kumpulan peristiwa yang berisi peristiwa yang diaktifkan adalah NULL, maka ini digunakan untuk menyinkronkan akses ke daftar. Nilai ini dapat berupa NULL jika tidak ada bendera yang diatur dalam EventsFlags.
[in, optional] Allocator
Secara opsional menunjuk ke fungsi alokasi yang akan digunakan untuk mengalokasikan memori untuk menyimpan parameter peristiwa.
[in, optional] EventItemSize
Secara opsional berisi ukuran setiap struktur KSEVENT_ITEM di setiap daftar peristiwa. Item peristiwa dapat diperluas untuk menyimpan informasi privat. Jika parameter ini nol, ukuran struktur diasumsikan normal. Jika lebih besar dari atau sama dengan struktur item peristiwa, makro KSEVENT_ITEM_IRP_STORAGE dapat digunakan untuk mengembalikan penunjuk ke item peristiwa sehingga data kustom dapat diambil. Pada platform 64-bit, parameter ini harus kelipatan 8.
Nilai kembali
Sama seperti KsEnableEvent, yang mengembalikan STATUS_SUCCESS jika berhasil, atau kesalahan khusus untuk peristiwa yang diaktifkan jika tidak berhasil. Fungsi ini selalu mengatur IO_STATUS_BLOCK. Bidang informasi PIRP. Elemen IoStatus dalam IRP ke nol. Ini tidak mengatur IO_STATUS_BLOCK. Bidang status, juga tidak menyelesaikan IRP.
Keterangan
Jika panggilan balik alokator opsional digunakan, filter mungkin perlu membebaskan buffer dengan cara nonkonvensional. Perhatikan bahwa bendera IRP_BUFFERED_IO dan IRP_DEALLOCATE_BUFFER tidak diatur saat menggunakan alokator kustom.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | ks.h (termasuk Ks.h) |
Pustaka | Ks.lib |