Fungsi KsMethodHandlerWithAllocator (ks.h)

Fungsi KsMethodHandlerWithAllocator melakukan penanganan yang sama dengan KsMethodHandler, dengan batasan yang sama, tetapi memungkinkan panggilan balik alokator opsional digunakan untuk menyediakan buffer untuk parameter. 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 KsMethodHandlerWithAllocator(
  [in]           PIRP               Irp,
  [in]           ULONG              MethodSetsCount,
  [in]           const KSMETHOD_SET *MethodSet,
  [in, optional] PFNKSALLOCATOR     Allocator,
  [in, optional] ULONG              MethodItemSize
);

Parameter

[in] Irp

Menentukan IRP dengan permintaan metode yang sedang ditangani.

[in] MethodSetsCount

Menunjukkan jumlah struktur set metode yang diteruskan.

[in] MethodSet

Menentukan penunjuk ke daftar informasi kumpulan metode.

[in, optional] Allocator

Secara opsional menunjuk ke fungsi alokasi yang akan digunakan untuk mengalokasikan memori untuk menyimpan parameter metode.

[in, optional] MethodItemSize

Secara opsional berisi ukuran setiap struktur KSMETHOD_ITEM di setiap daftar metode. Item metode dapat diperluas untuk menyimpan informasi privat. Jika parameter ini nol, ukuran struktur diasumsikan normal. Jika lebih besar dari atau sama dengan struktur item metode, makro KSMETHOD_ITEM_IRP_STORAGE dapat digunakan untuk mengembalikan penunjuk ke item metode sehingga data kustom dapat diambil. Pada platform 64-bit, parameter ini harus kelipatan 8.

Nilai kembali

Fungsi KsMethodHandler mengembalikan STATUS_SUCCESS jika berhasil, atau kesalahan khusus untuk metode yang ditangani jika tidak berhasil. Fungsi ini selalu mengatur IO_STATUS_BLOCK. Bidang informasi PIRP. Elemen IoStatus dalam IRP ke nol karena kesalahan internal, atau elemen diatur oleh handler metode. Fungsi tidak mengatur IO_STATUS_BLOCK. Bidang status atau melengkapi IRP.

Pada platform 64-bit, jika parameter PropertyItemSize bukan kelipatan 8, STATUS_INVALID_PARAMETER dikembalikan, dan panggilan gagal.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header ks.h (termasuk Ks.h)
Pustaka Ks.lib