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