Bagikan melalui


Menggunakan antarmuka perangkat

Antarmuka perangkat tersedia untuk komponen mode kernel dan aplikasi mode pengguna. Kode mode pengguna dapat menggunakan fungsi CfgMgr32 (misalnya, CM_Get_Device_Interface_List) atau fungsi SetupDiXxx (lihat Fungsi antarmuka perangkat SetupDi) untuk mengetahui tentang antarmuka perangkat yang terdaftar dan diaktifkan. Aplikasi mode pengguna kemudian dapat menggunakan API I/O seperti CreateFile untuk mendapatkan handle ke perangkat untuk mengirim I/O ke perangkat. Untuk mendapatkan pemberitahuan tentang pengaktifan dan penonaktifan antarmuka perangkat dan cara bereaksi terhadap tindakan tersebut, lihat Mendaftar untuk pemberitahuan kedatangan antarmuka perangkat dan penghapusan perangkat.

Sebelum komponen mode kernel dapat menggunakan perangkat atau objek file tertentu, komponen tersebut harus melakukan hal berikut:

  1. Tentukan apakah kelas antarmuka perangkat yang diperlukan terdaftar dan diaktifkan.

    Driver dapat mendaftar dengan manajer PnP untuk diberi tahu ketika instans antarmuka perangkat diaktifkan atau dinonaktifkan. Untuk mendaftar, komponen memanggil IoRegisterPlugPlayNotification. Rutinitas ini menyimpan alamat fungsi panggilan balik yang disediakan oleh driver, yang dipanggil setiap kali instans antarmuka perangkat diaktifkan atau dinonaktifkan untuk kelas perangkat tertentu. Rutinitas panggilan balik menerima struktur DEVICE_INTERFACE_CHANGE_NOTIFICATION , yang berisi string Unicode yang mewakili tautan simbolis instans antarmuka. Lihat Menggunakan pemberitahuan perubahan antarmuka perangkat PnP untuk informasi selengkapnya.

    Driver atau komponen mode kernel lainnya juga dapat memanggil IoGetDeviceInterfaces untuk mendapatkan daftar semua instans antarmuka perangkat terdaftar dan diaktifkan untuk kelas antarmuka perangkat tertentu. Daftar yang dikembalikan berisi penunjuk ke string tautan simbolis Unicode yang mengidentifikasi instans antarmuka perangkat.

  2. Dapatkan penunjuk ke perangkat atau objek file yang sesuai dengan instans antarmuka.

    Untuk mengakses objek perangkat tertentu, driver harus memanggil IoGetDeviceObjectPointer, meneruskan string Unicode untuk antarmuka yang diperlukan dalam parameter ObjectName . Untuk mengakses objek file, driver harus memanggil InitializeObjectAttributes, meneruskan string Unicode dalam parameter ObjectName , lalu meneruskan struktur atribut yang berhasil diinisialisasi dalam panggilan ke ZwCreateFile.