Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Driver perangkat dapat menggunakan permintaan kontrol perangkat berikut untuk mengevaluasi metode kontrol yang ditentukan secara sinkron di namespace ACPI perangkat:
-
Permintaan ini mengevaluasi metode kontrol yang merupakan objek turunan langsung di namespace ACPI perangkat tempat permintaan dikirim.
-
Permintaan ini secara sinkron mengevaluasi metode kontrol yang didukung oleh perangkat atau objek turunan perangkat tempat permintaan dikirim.
Driver Windows ACPI, Acpi.sys, menangani permintaan ini atas nama perangkat yang ditentukan dalam tabel deskripsi sistem di ACPI BIOS. Permintaan ini dapat digunakan oleh driver perangkat mode kernel yang mematuhi persyaratan Kernel-Mode Driver Framework (KMDF) atau Windows Driver Model (WDM). Dimulai dengan Windows 8, driver perangkat mode pengguna yang mematuhi persyaratan User-Mode Driver Framework (UMDF) dapat menggunakan permintaan ini.
Misalnya, driver WDM melakukan urutan operasi berikut untuk menggunakan salah satu IOCTL ini:
Memanggil IoBuildDeviceIoControlRequest untuk membangun permintaan.
Memanggil IoCallDriver untuk mengirim permintaan ke tumpukan perangkat.
Menunggu manajer I/O memberi sinyal kepada driver bahwa driver tingkat bawah telah menyelesaikan permintaan.
Memeriksa status permintaan.
Memeriksa validitas argumen output.
Memproses argumen output yang dikembalikan ke driver.
Menyelesaikan permintaan.
Untuk membangun permintaan, driver memanggil IoBuildDeviceIoControlRequest dan menyediakan parameter berikut:
IoControlCode diatur ke IOCTL_ACPI_EVAL_METHOD atau IOCTL_ACPI_EVAL_METHOD_EX.
DeviceObject diatur sebagai pointer objek perangkat fisik (PDO) dari perangkat.
InputBuffer diatur ke penunjuk ke struktur buffer input yang bergantung pada jenis argumen input yang akan diteruskan ke metode kontrol. Driver ACPI mendukung metode tanpa argumen masukan, yang mengambil satu bilangan bulat, yang mengambil string ASCII, atau yang mengambil array khusus argumen masukan. Untuk informasi selengkapnya tentang struktur buffer input yang didukung, lihat Struktur Buffer Input Metode Kontrol.
inputBufferLength diatur ke ukuran, dalam byte, dari buffer input yang disediakan oleh InputBuffer.
OutputBufferLength memasok ukuran, dalam byte, dari buffer output yang disediakan oleh OutputBuffer.
InternalDeviceIoControl diatur ke FALSE.
Event diatur menjadi pointer ke objek peristiwa yang dialokasikan dan diinisialisasi oleh pemanggil. Driver menunggu hingga manajer I/O memberi sinyal peristiwa ini, yang menunjukkan bahwa driver tingkat bawah telah menyelesaikan permintaan.
OutputBuffer menyediakan pointer ke struktur ACPI_EVAL_OUTPUT_BUFFER yang berisi argumen output dari metode kontrol. Argumen output khusus untuk metode kontrol tertentu. Agar driver mengembalikan output apa pun, driver harus mengalokasikan buffer yang cukup besar untuk menahan semua argumen output.
IoStatusBlock diatur ke struktur IO_STATUS_BLOCK . Ini mengembalikan status permintaan yang ditetapkan oleh driver lapisan bawah.
Untuk contoh kode tentang cara mengevaluasi metode kontrol yang tidak mengambil argumen input, lihat Mengevaluasi Metode Kontrol Tanpa Argumen Input.
Untuk contoh kode tentang cara mengevaluasi metode kontrol yang mengambil argumen input, lihat Mengevaluasi Metode Kontrol yang Mengambil Argumen Input.