IOCTL_AVC_CLASS IOCTL (avc.h)

Kode kontrol I/O IOCTL_AVC_CLASS hanya didukung dari mode kernel, menggunakan pengiriman IRP_MJ_INTERNAL_DEVICE_CONTROL.

Avc.sys mendukung dua antarmuka perangkat, tergantung pada jenis instans (peer atau virtual). Antarmuka ini menentukan fungsionalitas yang diekspos driver untuk driver subunit, driver lain, dan aplikasi. Selama inisialisasi, avc.sys memanggil IoRegisterDeviceInterface dengan GUID_AVC_CLASS (instans serekan, atau nonvirtual) atau GUID_VIRTUAL_AVC_CLASS (instans virtual), lalu menggunakan IoSetDeviceInterfaceState yang sesuai dengan status driver yang dimulai atau dihentikan.

Instans peeravc.sys mendaftarkan antarmuka perangkat yang diidentifikasi oleh GUID_AVC_CLASS. Antarmuka ini mendukung satu kode kontrol I/O, IOCTL_AVC_CLASS, yang pada gilirannya mendukung beberapa kode fungsi. Driver anak dari instans peeravc.sys dijamin memiliki akses ke antarmuka ini melalui objek perangkat induk mereka.

Instans virtualavc.sys mendaftarkan antarmuka perangkat yang diidentifikasi oleh GUID_VIRTUAL_AVC_CLASS. Antarmuka ini mendukung empat kode kontrol I/O:

  • IOCTL_AVC_CLASS

  • IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO

  • IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO

  • IOCTL_AVC_BUS_RESET

Antarmuka GUID_AVC_CLASS mendukung semua kode fungsi IOCTL_AVC_CLASS, meskipun beberapa memiliki batasan penggunaannya. Namun, antarmuka GUID_VIRTUAL_AVC_CLASS tidak mendukung semua kode fungsi IOCTL_AVC_CLASS. Halaman referensi untuk setiap kode fungsi individu menentukan apakah itu didukung untuk instans GUID_VIRTUAL_AVC_CLASSavc.sys.

Kode fungsi IOCTL_AVC_CLASS (dan batasan apa pun) dijelaskan dalam setiap kode fungsi.

Untuk informasi selengkapnya tentang IRP dan IOCTL, lihat Menangani IRP.

Kode utama

IRP_MJ_DEVICE_CONTROL

Buffer Input/Output

Parameter->Others.Argument1 menunjuk ke struktur AVC_COMMAND_IRB atau struktur AVC_MULTIFUNC_IRB. Kedua struktur berisi struktur AVC_IRB sebagai header, seperti yang diilustrasikan dalam contoh berikut:

typedef struct _AVC_COMMAND_IRB {
  AVC_IRB  Common;
  .
  .
  .
} AVC_COMMAND_IRB, *PAVC_COMMAND_IRB;
typedef struct _AVC_MULTIFUNC_IRB {
  AVC_IRB  Common;
  .
  .
  .
} AVC_MULTIFUNC_IRB, *PAVC_MULTIFUNC_IRB;

Struktur AVC_IRB berisi satu anggota Fungsi . Anggota ini harus diatur ke kode fungsi yang diinginkan dari enumerasi AVC_FUNCTION.

Struktur AVC_MULTIFUNC_IRB berisi anggota serikat yang menentukan parameter khusus jenis blok permintaan I/O fungsi untuk kode fungsi. Parameter dan maknanya didokumenkan dengan setiap kode fungsi.

Parameter->Others.Argument1 menunjuk ke struktur AVC_COMMAND_IRB atau AVC_MULTIFUNC_IRB yang sama yang diteruskan sebagai input. Sebagai bagian dari menyelesaikan fungsi, driver subunit mengisi submember tertentu dari serikat dalam struktur dengan informasi untuk driver. Informasi yang dikembalikan didokumenkan dengan setiap permintaan.

Blok status

Informasi yang dikembalikan driver protokol AV/C di Blok Status I/O (Irp-IoStatus.Status>) didokumenkan dengan setiap permintaan.

Keterangan

Sebagian besar fungsi AV/C harus disebut IRQL = PASSIVE_LEVEL. Beberapa dapat dipanggil di IRQL <= DISPATCH_LEVEL. IRQL masing-masing didokumenkan dalam setiap fungsi AV/C.

Persyaratan

Persyaratan Nilai
Header avc.h (sertakan Avc.h)

Lihat juga

AVC_COMMAND_IRB

AVC_FUNCTION

AVC_IRB

AVC_MULTIFUNC_IRB

IOCTL_AVC_BUS_RESET

IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO