IOCTL_ACPI_ASYNC_EVAL_METHOD IOCTL (acpiioct.h)

Driver untuk perangkat dapat menggunakan permintaan kontrol perangkat IOCTL_ACPI_ASYNC_EVAL_METHOD untuk mengevaluasi metode kontrol ACPI secara asinkron yang didukung oleh perangkat. Driver harus memanggil IoBuildDeviceIoControlRequest dan meneruskan parameter input dan output berikut untuk membangun permintaan ini.

Kode utama

IRP_MJ_DEVICE_CONTROL

Buffer input

Atur parameter input IoBuildDeviceIoControlRequest sebagai berikut:

  • IoControlCode diatur ke IOCTL_ACPI_ASYNC_EVAL_METHOD.
  • DeviceObject diatur ke penunjuk ke objek perangkat fisik (PDO) perangkat.
  • InputBuffer diatur ke penunjuk ke struktur buffer input yang bergantung pada jenis argumen input yang akan diteruskan ke metode kontrol. Untuk informasi selengkapnya tentang jenis argumen input yang didukung IOCTL ini, lihat bagian Keterangan nanti dalam topik ini.
  • 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.
  • Peristiwa diatur ke NULL.

Panjang buffer input

InputBufferLength diatur ke ukuran, dalam byte, dari buffer input yang disediakan oleh InputBuffer.

Buffer output

Atur parameter output IoBuildDeviceIoControlRequest sebagai berikut:

Panjang buffer output

OutputBufferLength memasok ukuran, dalam byte, dari buffer output yang disediakan oleh OutputBuffer.

Blok status

Jika permintaan berhasil, IoStatusBlock-Status> diatur ke STATUS_SUCCESS; jika tidak, anggota Status diatur ke kode kesalahan. Jika buffer output tidak cukup besar untuk berisi header buffer output, anggota Status diatur ke STATUS_BUFFER_TOO_SMALL. Jika buffer output cukup besar untuk berisi header buffer output, tetapi tidak cukup besar untuk berisi semua argumen output dari metode kontrol, anggota Status diatur ke STATUS_BUFFER_OVERFLOW, dan OutputBuffer-Length> diatur ke panjang buffer output yang diperlukan.

Jika permintaan berhasil, anggota IoStatusBlock-Information> diatur ke jumlah byte yang dikembalikan dalam buffer output; jika tidak, anggota Informasi diatur ke nol.

Keterangan

Driver untuk perangkat dapat menggunakan IOCTL_ACPI_ASYNC_EVAL_METHOD untuk mengevaluasi metode kontrol yang didukung perangkat secara asinkron. Misalnya, jika perangkat diberi nama 'ABCD' di namespace ACPI dan perangkat 'ABCD' mendukung metode bernama '_FOO,' IOCTL ini dapat digunakan untuk mengevaluasi metode kontrol '_FOO' dengan mengirim permintaan ke perangkat 'ABCD' dan memasok nama metode kontrol '_FOO.'

IOCTL_ACPI_ASYNC_EVAL_METHOD mendukung jenis struktur buffer input berikut:

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_INPUT_BUFFER_COMPLEX

Argumen output dari metode kontrol dikembalikan dalam struktur ACPI_EVAL_OUTPUT_BUFFER panjang variabel yang disediakan oleh penunjuk OutBuffer . ACPI_EVAL_OUTPUT_BUFFER menyertakan array struktur ACPI_METHOD_ARGUMENT panjang variabel, yang masing-masing mengembalikan argumen output.

Untuk informasi tentang cara mengevaluasi metode kontrol ACPI secara sinkron, lihat IOCTL_ACPI_EVAL_METHOD, IOCTL_ACPI_EVAL_METHOD_EX, dan Mengevaluasi Metode Kontrol ACPI Secara Sinkron.

IOCTL_ACPI_ASYNC_EVAL_METHOD hanya dapat digunakan di IRQL <= DISPATCH_LEVEL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista dan versi Windows yang lebih baru.
Header acpiioct.h (termasuk Acpiioct.h)

Lihat juga

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_COMPLEX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_OUTPUT_BUFFER

ACPI_METHOD_ARGUMENT

IOCTL_ACPI_EVAL_METHOD

IOCTL_ACPI_EVAL_METHOD_EX