Condividi tramite


IOCTL_ACPI_ASYNC_EVAL_METHOD IOCTL (acpiioct.h)

Un driver per un dispositivo può usare la richiesta di controllo del dispositivo IOCTL_ACPI_ASYNC_EVAL_METHOD per valutare in modo asincrono un metodo di controllo ACPI supportato dal dispositivo. Il driver deve chiamare IoBuildDeviceIoControlRequest e passare i parametri di input e output seguenti per compilare questa richiesta.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Impostare i parametri di input IoBuildDeviceIoControlRequest come indicato di seguito:

  • IoControlCode è impostato su IOCTL_ACPI_ASYNC_EVAL_METHOD.
  • DeviceObject è impostato su un puntatore all'oggetto dispositivo fisico (PDO) del dispositivo.
  • InputBuffer è impostato su un puntatore a una struttura del buffer di input che dipende dal tipo di argomenti di input da passare al metodo di controllo. Per altre informazioni sul tipo di argomenti di input supportati da questo IOCTL, vedere la sezione Osservazioni più avanti in questo argomento.
  • InputBufferLength è impostato sulle dimensioni, in byte, del buffer di input fornito da InputBuffer.
  • OutputBufferLength fornisce le dimensioni, in byte, del buffer di output fornito da OutputBuffer.
  • InternalDeviceIoControl è impostato su FALSE.
  • L'evento è impostato su NULL.

Lunghezza del buffer di input

InputBufferLength è impostato sulle dimensioni, in byte, del buffer di input fornito da InputBuffer.

Buffer di output

Impostare i parametri di output IoBuildDeviceIoControlRequest come indicato di seguito:

  • OutputBuffer fornisce un puntatore a una struttura ACPI_EVAL_OUTPUT_BUFFER contenente gli argomenti di output dal metodo di controllo.
  • IoStatusBlock è impostato su una struttura IO_STATUS_BLOCK .

Lunghezza del buffer di output

OutputBufferLength fornisce le dimensioni, in byte, del buffer di output fornito da OutputBuffer.

Blocco dello stato

Se la richiesta ha esito positivo, IoStatusBlock-Status> è impostato su STATUS_SUCCESS; in caso contrario, il membro Stato è impostato su un codice di errore. Se il buffer di output non è abbastanza grande per contenere l'intestazione del buffer di output, il membro Stato è impostato su STATUS_BUFFER_TOO_SMALL. Se il buffer di output è abbastanza grande per contenere l'intestazione del buffer di output, ma non è abbastanza grande per contenere tutti gli argomenti di output del metodo di controllo, il membro Status è impostato su STATUS_BUFFER_OVERFLOW e OutputBuffer-Length> è impostato sulla lunghezza necessaria del buffer di output.

Se la richiesta ha esito positivo, il membro IoStatusBlock-Information> è impostato sul numero di byte restituiti nel buffer di output. In caso contrario, il membro Information è impostato su zero.

Commenti

Un driver per un dispositivo può usare IOCTL_ACPI_ASYNC_EVAL_METHOD per valutare in modo asincrono un metodo di controllo supportato dal dispositivo. Ad esempio, se il dispositivo è denominato "ABCD" in uno spazio dei nomi ACPI e il dispositivo "ABCD" supporta un metodo denominato "_FOO", questo IOCTL può essere usato per valutare il metodo di controllo '_FOO' inviando la richiesta al dispositivo 'ABCD' e fornendo il nome del metodo di controllo '_FOO'.

IOCTL_ACPI_ASYNC_EVAL_METHOD supporta i tipi seguenti di strutture del buffer di input:

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_INPUT_BUFFER_COMPLEX

Gli argomenti di output del metodo di controllo vengono restituiti nella struttura a lunghezza variabile ACPI_EVAL_OUTPUT_BUFFER fornita dal puntatore OutBuffer . Il ACPI_EVAL_OUTPUT_BUFFER include una matrice di strutture di lunghezza variabile ACPI_METHOD_ARGUMENT , ognuna delle quali restituisce un argomento di output.

Per informazioni su come valutare i metodi di controllo ACPI in modo sincrono, vedere IOCTL_ACPI_EVAL_METHOD, IOCTL_ACPI_EVAL_METHOD_EX e Valutazione dei metodi di controllo ACPI in modo sincrono.

IOCTL_ACPI_ASYNC_EVAL_METHOD può essere usato solo in IRQL <= DISPATCH_LEVEL.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista e versioni successive di Windows.
Intestazione acpioct.h (include Acpiioct.h)

Vedi anche

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