Condividi tramite


IOCTL_ACPI_EVAL_METHOD_EX IOCTL (acpiioct.h)

Un driver per un dispositivo può usare la richiesta di controllo del dispositivo IOCTL_ACPI_EVAL_METHOD_EX per valutare in modo sincrono un metodo di controllo ACPI supportato da un dispositivo figlio nello spazio dei nomi del 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 segue:

  • IoControlCode è impostato su IOCTL_ACPI_EVAL_METHOD_EX.
  • 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 sugli argomenti di input di tipo 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 oggetto evento allocato dal chiamante e inizializzato.

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 segue:

  • OutputBuffer fornisce un puntatore a una struttura ACPI_EVAL_OUTPUT_BUFFER che contiene gli argomenti di output del metodo del controllo.
  • IoStatusBlock è impostato su un puntatore a 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 Status viene impostato su un codice di errore. Se il buffer di output non è sufficientemente grande da contenere l'intestazione del buffer di output, il membro Status viene impostato su STATUS_BUFFER_TOO_SMALL. Se il buffer di output è sufficientemente grande da contenere l'intestazione del buffer di output, ma non è sufficientemente grande da contenere tutti gli argomenti di output del metodo di controllo, il membro Status viene impostato su STATUS_BUFFER_OVERFLOW e OutputBuffer-Length> è impostato sulla lunghezza richiesta del buffer di output.

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

Commenti

Un driver per un dispositivo può usare IOCTL_ACPI_EVAL_METHOD_EX per valutare in modo sincrono un metodo di controllo supportato da un oggetto figlio nello spazio dei nomi del dispositivo. Il percorso e il nome del metodo di controllo fornito da questa richiesta devono essere il percorso completo e il nome del metodo nello spazio dei nomi ACPI oppure il percorso e il nome del metodo rispetto al dispositivo a cui viene inviata la richiesta. Si supponga, ad esempio, che un dispositivo denominato "ABCD" sia un figlio immediato della radice di uno spazio dei nomi ACPI, che il dispositivo "ABCD" supporti un dispositivo figlio denominato "CHLD" e che il dispositivo "CHLD" supporti un metodo denominato "_FOO". In questo caso, per valutare il metodo '_FOO', un driver invia una richiesta di valutazione al dispositivo 'ABCD' e fornisce il percorso e il nome '\ABCD'. CHLD._FOO, ovvero il percorso completo e il nome nello spazio dei nomi ACPI oppure il percorso e il nome "CHLD._FOO", ovvero il percorso e il nome relativi al dispositivo "ABCD" nello spazio dei nomi ACPI.

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

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

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 ACPI_METHOD_ARGUMENT a lunghezza variabile, 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.

Un driver può anche usare una richiesta di IOCTL_ACPI_EVAL_METHOD per valutare in modo sincrono un metodo di controllo che è un oggetto figlio immediato di un dispositivo.

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

IOCTL_ACPI_EVAL_METHOD_EX possono essere usati solo in DISPATCH_LEVEL IRQL < .

Requisiti

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

Vedi anche

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

IOCTL_ACPI_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD