IOCTL_ACPI_EVAL_METHOD IOCTL (acpioct.h)

Un driver per un dispositivo può usare la richiesta di controllo del dispositivo IOCTL_ACPI_EVAL_METHOD per valutare in modo sincrono 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_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 un puntatore a un chiamante allocato e inizializzato oggetto evento.

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_EVAL_METHOD per valutare in modo sincrono 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_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 altre informazioni su come valutare in modo sincrono i metodi di controllo, vedere Valutazione sincrona dei metodi di controllo ACPI.

A partire da Windows Server 2008 e Windows Vista, un driver può anche usare una richiesta di IOCTL_ACPI_EVAL_METHOD_EX per valutare in modo sincrono un metodo di controllo che non è un oggetto figlio immediato di un dispositivo.

Per informazioni su come valutare un metodo di controllo ACPI a partire in modo asincrono in Windows Server 2008 e Windows Vista, vedere IOCTL_ACPI_ASYNC_EVAL_METHOD e IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.

IOCTL_ACPI_EVAL_METHOD può essere usato solo in irQL < DISPATCH_LEVEL.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 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_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD_EX