IOCTL_ACPI_ASYNC_EVAL_METHOD_EX IOCTL (acpiioct.h)

Um driver para um dispositivo pode usar o IOCTL_ACPI_ASYNC_EVAL_METHOD_EX solicitação de controle de dispositivo para avaliar de forma assíncrona um método de controle ACPI compatível com um dispositivo filho do dispositivo. O driver deve chamar IoBuildDeviceIoControlRequest e passar os seguintes parâmetros de entrada e saída para compilar essa solicitação.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

Defina os parâmetros de entrada IoBuildDeviceIoControlRequest da seguinte maneira:

  • IoControlCode é definido como IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.
  • DeviceObject é definido como um ponteiro para o PDO (objeto de dispositivo físico) do dispositivo.
  • InputBuffer é definido como um ponteiro para uma estrutura de buffer de entrada que depende do tipo de argumentos de entrada a serem passados para o método de controle. Para obter mais informações sobre os argumentos de entrada de tipo aos quais este IOCTL dá suporte, consulte a seção Comentários mais adiante neste tópico.
  • InputBufferLength é definido como o tamanho, em bytes, do buffer de entrada fornecido pelo InputBuffer.
  • OutputBufferLength fornece o tamanho, em bytes, do buffer de saída fornecido pelo OutputBuffer.
  • InternalDeviceIoControl é definido como FALSE.
  • O evento é definido como NULL.

Comprimento do buffer de entrada

InputBufferLength é definido como o tamanho, em bytes, do buffer de entrada fornecido pelo InputBuffer.

Buffer de saída

Defina os parâmetros de saída IoBuildDeviceIoControlRequest da seguinte maneira:

  • OutputBuffer fornece um ponteiro para uma estrutura ACPI_EVAL_OUTPUT_BUFFER que contém os argumentos de saída do método de controle.
  • IoStatusBlock é definido como uma estrutura IO_STATUS_BLOCK .

Comprimento do buffer de saída

OutputBufferLength fornece o tamanho, em bytes, do buffer de saída fornecido pelo OutputBuffer.

Bloco de status

Se a solicitação for bem-sucedida, IoStatusBlock-Status> será definido como STATUS_SUCCESS; caso contrário, o membro Status será definido como um código de erro. Se o buffer de saída não for grande o suficiente para conter o cabeçalho do buffer de saída, o membro Status será definido como STATUS_BUFFER_TOO_SMALL. Se o buffer de saída for grande o suficiente para conter o cabeçalho do buffer de saída, mas não for grande o suficiente para conter todos os argumentos de saída do método de controle, o membro Status será definido como STATUS_BUFFER_OVERFLOW e OutputBuffer-Length> será definido como o comprimento necessário do buffer de saída.

Se a solicitação for bem-sucedida, o membro IoStatusBlock-Information> será definido como o número de bytes retornados no buffer de saída; caso contrário, o membro Information será definido como zero.

Comentários

Um driver para um dispositivo pode usar IOCTL_ACPI_ASYNC_EVAL_METHOD_EX para avaliar de forma assíncrona um método de controle compatível com um objeto filho no namespace do dispositivo. O caminho e o nome do método de controle fornecidos por essa solicitação devem ser o caminho totalmente qualificado e o nome do método no namespace ACPI ou o caminho e o nome do método em relação ao dispositivo para o qual a solicitação é enviada. Por exemplo, suponha que um dispositivo chamado 'ABCD' seja um filho imediato da raiz de um namespace ACPI, que o dispositivo 'ABCD' dê suporte a um dispositivo filho chamado 'CHLD' e que o dispositivo 'CHLD' dê suporte a um método chamado '_FOO'. Nesse caso, para avaliar o método '_FOO', um driver envia uma solicitação de avaliação para o dispositivo 'ABCD' e fornece o caminho e o nome '\ABCD. CHLD._FOO", que é o caminho e o nome totalmente qualificados no namespace acpi ou o caminho e o nome 'CHLD._FOO', que é o caminho e o nome relativos ao dispositivo 'ABCD' no namespace ACPI.

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX dá suporte aos seguintes tipos de estruturas de buffer de entrada:

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

Os argumentos de saída do método de controle são retornados na estrutura ACPI_EVAL_OUTPUT_BUFFER de comprimento variável fornecida pelo ponteiro OutBuffer . O ACPI_EVAL_OUTPUT_BUFFER inclui uma matriz de estruturas de ACPI_METHOD_ARGUMENT de comprimento variável, cada uma das quais retorna um argumento de saída.

Para obter informações sobre como avaliar um método de controle ACPI de forma síncrona, consulte IOCTL_ACPI_EVAL_METHOD, IOCTL_ACPI_EVAL_METHOD_EX e Avaliando métodos de controle ACPI de forma síncrona.

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX pode ser usado somente em IRQL <= DISPATCH_LEVEL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista e versões posteriores do Windows.
Cabeçalho acpiioct.h (include Acpiioct.h)

Confira também

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

ACPI_METHOD_ARGUMENT

IOCTL_ACPI_EVAL_METHOD

IOCTL_ACPI_EVAL_METHOD_EX