IOCTL_ACPI_ASYNC_EVAL_METHOD IOCTL (acpiioct.h)
Um driver para um dispositivo pode usar a solicitação de controle de dispositivo IOCTL_ACPI_ASYNC_EVAL_METHOD para avaliar de forma assíncrona um método de controle ACPI compatível com o 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
Buffer de entrada
Defina os parâmetros de entrada IoBuildDeviceIoControlRequest da seguinte maneira:
- IoControlCode está definido como IOCTL_ACPI_ASYNC_EVAL_METHOD.
- 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 o tipo de argumentos de entrada que 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 por OutputBuffer.
- InternalDeviceIoControl está definido como false.
- de Evento está 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 de ACPI_EVAL_OUTPUT_BUFFER que contém os argumentos de saída do método de controle.
- IoStatusBlock está definido como uma estrutura de IO_STATUS_BLOCK.
Comprimento do buffer de saída
OutputBufferLength fornece o tamanho, em bytes, do buffer de saída fornecido por OutputBuffer.
Bloco de status
Se a solicitação for bem-sucedida, IoStatusBlock –>Status será definido como STATUS_SUCCESS; caso contrário, o membro status é 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 do 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 do 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 IoStatusBlock –>Membro do de Informações será definido como o número de bytes retornados no buffer de saída; caso contrário, o membro de Informações do é definido como zero.
Observações
Um driver para um dispositivo pode usar IOCTL_ACPI_ASYNC_EVAL_METHOD para avaliar de forma assíncrona um método de controle compatível com o dispositivo. Por exemplo, se o dispositivo for denominado 'ABCD' em um namespace ACPI e o dispositivo 'ABCD' der suporte a um método chamado '_FOO', esse IOCTL poderá ser usado para avaliar o método de controle '_FOO' enviando a solicitação para o dispositivo 'ABCD' e fornecendo o nome do método de controle '_FOO'.
IOCTL_ACPI_ASYNC_EVAL_METHOD dá suporte aos seguintes tipos de estruturas de buffer de entrada:
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING
ACPI_EVAL_INPUT_BUFFER_COMPLEX
Os argumentos de saída do método de controle são retornados na estrutura de 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 métodos de controle ACPI de forma síncrona, consulte IOCTL_ACPI_EVAL_METHOD, IOCTL_ACPI_EVAL_METHOD_EXe Avaliando métodos de controle ACPI de forma síncrona.
IOCTL_ACPI_ASYNC_EVAL_METHOD pode ser usado somente em IRQL <= DISPATCH_LEVEL.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows Vista e versões posteriores do Windows. |
cabeçalho | acpiioct.h (include Acpiioct.h) |
Consulte também
ACPI_EVAL_INPUT_BUFFER_COMPLEX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER