Compartir a través de


IOCTL_ACPI_EVAL_METHOD IOCTL (acpiioct.h)

Un controlador de un dispositivo puede usar la solicitud de control de dispositivos IOCTL_ACPI_EVAL_METHOD para evaluar de forma sincró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_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 un puntero a un objeto de evento asignado por el autor de la llamada e inicializado.

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:

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 devueltos 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_EVAL_METHOD para evaluar de forma sincró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_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 de longitud variable ACPI_METHOD_ARGUMENT , cada una de las cuales devuelve un argumento de salida.

Para obtener más información sobre cómo evaluar los métodos de control de forma sincrónica, vea Evaluar los métodos de control ACPI de forma sincrónica.

A partir de Windows Server 2008 y Windows Vista, un controlador también puede usar una solicitud de IOCTL_ACPI_EVAL_METHOD_EX para evaluar de forma sincrónica un método de control que no es un objeto secundario inmediato de un dispositivo.

Para obtener información sobre cómo evaluar un método de control ACPI de forma asincrónica a partir de Windows Server 2008 y Windows Vista, consulte IOCTL_ACPI_ASYNC_EVAL_METHOD y IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.

IOCTL_ACPI_EVAL_METHOD solo se puede usar en irQL < DISPATCH_LEVEL.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 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_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD_EX