Bagikan melalui


IOCTL_ACPI_EVAL_METHOD_EX IOCTL (acpiioct.h)

Driver untuk perangkat dapat menggunakan permintaan kontrol perangkat IOCTL_ACPI_EVAL_METHOD_EX untuk mengevaluasi metode kontrol ACPI secara sinkron yang didukung oleh perangkat anak di namespace 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_EVAL_METHOD_EX.
  • DeviceObject diatur ke pointer 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 argumen input jenis 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 penunjuk ke objek peristiwa yang dialokasikan dan diinisialisasi penelepon.

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_EVAL_METHOD_EX untuk mengevaluasi metode kontrol yang didukung oleh objek anak secara sinkron di namespace perangkat. Jalur dan nama metode kontrol yang disediakan oleh permintaan ini harus berupa jalur dan nama metode yang sepenuhnya memenuhi syarat di namespace ACPI atau jalur dan nama metode yang relatif terhadap perangkat tempat permintaan dikirim. Misalnya, asumsikan bahwa perangkat bernama 'ABCD' adalah anak langsung dari akar namespace ACPI, bahwa perangkat 'ABCD' mendukung perangkat anak bernama 'CHLD,' dan bahwa perangkat 'CHLD' mendukung metode bernama '_FOO.' Dalam hal ini, untuk mengevaluasi metode '_FOO', driver mengirimkan permintaan evaluasi ke perangkat 'ABCD' dan memasok jalur dan nama '\ABCD. CHLD._FOO,' yang merupakan jalur dan nama yang sepenuhnya memenuhi syarat di namespace ACPI, atau jalur dan nama 'CHLD._FOO,' yang merupakan jalur dan nama yang relatif terhadap perangkat 'ABCD' di namespace ACPI.

IOCTL_ACPI_EVAL_METHOD_EX mendukung jenis struktur buffer input berikut:

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX

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 selengkapnya tentang cara mengevaluasi metode kontrol secara sinkron, lihat Mengevaluasi Metode Kontrol ACPI Secara sinkron.

Driver juga dapat menggunakan permintaan IOCTL_ACPI_EVAL_METHOD untuk mengevaluasi metode kontrol secara sinkron yang merupakan objek turunan langsung dari perangkat.

Untuk informasi tentang cara mengevaluasi metode kontrol ACPI secara asinkron yang dimulai pada Windows Server 2008 dan Windows Vista, lihat IOCTL_ACPI_ASYNC_EVAL_METHOD dan IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.

IOCTL_ACPI_EVAL_METHOD_EX hanya dapat digunakan di DISPATCH_LEVEL IRQL < .

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_COMPLEX_EX

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_OUTPUT_BUFFER

IOCTL_ACPI_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD