Compartir a través de


IOCTL_ACPI_ASYNC_EVAL_METHOD IOCTL (acpiioct.h)

Un controlador para un dispositivo puede usar la solicitud de control de dispositivo IOCTL_ACPI_ASYNC_EVAL_METHOD para evaluar de forma asincrónica un método de control ACPI compatible con el dispositivo. El controlador debe llamar a IoBuildDeviceIoControlRequest y pasar los siguientes parámetros de entrada y salida para compilar esta solicitud.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

Establezca los parámetros de entrada IoBuildDeviceIoControlRequest de la siguiente manera:

  • IoControlCode se establece en IOCTL_ACPI_ASYNC_EVAL_METHOD.
  • DeviceObject se establece en un puntero al objeto de dispositivo físico (PDO) del dispositivo.
  • InputBuffer se establece en un puntero a una estructura de búfer de entrada que depende del tipo de argumentos de entrada que se van a pasar al método de control. Para obtener más información sobre el tipo de argumentos de entrada que admite este IOCTL, vea la sección Comentarios más adelante en este tema.
  • InputBufferLength se establece en el tamaño, en bytes, del búfer de entrada proporcionado por InputBuffer.
  • OutputBufferLength proporciona el tamaño, en bytes, del búfer de salida proporcionado por OutputBuffer.
  • InternalDeviceIoControl se establece en FALSE.
  • El evento se establece en NULL.

Longitud del búfer de entrada

InputBufferLength se establece en el tamaño, en bytes, del búfer de entrada proporcionado por InputBuffer.

Búfer de salida

Establezca los parámetros de salida IoBuildDeviceIoControlRequest de la siguiente manera:

  • OutputBuffer proporciona un puntero a una estructura ACPI_EVAL_OUTPUT_BUFFER que contiene los argumentos de salida del método de control.
  • IoStatusBlock se establece en una estructura IO_STATUS_BLOCK .

Longitud del búfer de salida

OutputBufferLength proporciona el tamaño, en bytes, del búfer de salida proporcionado por OutputBuffer.

Bloque de estado

Si la solicitud se realiza correctamente, IoStatusBlock-Status> se establece en STATUS_SUCCESS; de lo contrario, el miembro Status se establece en un código de error. Si el búfer de salida no es lo suficientemente grande como para contener el encabezado del búfer de salida, el miembro Status se establece en STATUS_BUFFER_TOO_SMALL. Si el búfer de salida es lo suficientemente grande como para contener el encabezado del búfer de salida, pero no es lo suficientemente grande como para contener todos los argumentos de salida del método de control, el miembro Status se establece en STATUS_BUFFER_OVERFLOW y OutputBuffer-Length> se establece en la longitud necesaria del búfer de salida.

Si la solicitud se realiza correctamente, el miembro IoStatusBlock-Information> se establece en el número de bytes que se devuelven en el búfer de salida; de lo contrario, el miembro Information se establece en cero.

Comentarios

Un controlador para un dispositivo puede usar IOCTL_ACPI_ASYNC_EVAL_METHOD para evaluar de forma asincrónica un método de control que admite el dispositivo. Por ejemplo, si el dispositivo se denomina "ABCD" en un espacio de nombres ACPI y el dispositivo "ABCD" admite un método denominado "_FOO", este IOCTL se puede usar para evaluar el método de control "_FOO" enviando la solicitud al dispositivo "ABCD" y proporcionando el nombre del método de control "_FOO".

IOCTL_ACPI_ASYNC_EVAL_METHOD admite los siguientes tipos de estructuras de búfer de entrada:

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_INPUT_BUFFER_COMPLEX

Los argumentos de salida del método de control se devuelven en la estructura ACPI_EVAL_OUTPUT_BUFFER de longitud variable proporcionada por el puntero OutBuffer . El ACPI_EVAL_OUTPUT_BUFFER incluye una matriz de estructuras ACPI_METHOD_ARGUMENT de longitud variable, cada una de las cuales devuelve un argumento de salida.

Para obtener información sobre cómo evaluar los métodos de control ACPI de forma sincrónica, vea IOCTL_ACPI_EVAL_METHOD, IOCTL_ACPI_EVAL_METHOD_EX y Evaluación de métodos de control ACPI de forma sincrónica.

IOCTL_ACPI_ASYNC_EVAL_METHOD solo se puede usar en IRQL <= DISPATCH_LEVEL.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista y versiones posteriores de Windows.
Encabezado acpiioct.h (include Acpiioct.h)

Consulte también

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