Condividi tramite


IOCTL_ACPI_ASYNC_EVAL_METHOD_EX IOCTL (acpioct.h)

Un driver per un dispositivo può usare la richiesta di controllo del dispositivo IOCTL_ACPI_ASYNC_EVAL_METHOD_EX per valutare in modo asincrono un metodo di controllo ACPI supportato da un dispositivo figlio 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 indicato di seguito:

  • IoControlCode è impostato su IOCTL_ACPI_ASYNC_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 dei tipi supportati da 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_EX per valutare in modo asincrono 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 o 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 o il percorso e il nome "CHLD._FOO", ovvero il percorso e il nome relativi al dispositivo "ABCD" nello spazio dei nomi ACPI.

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

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 . La ACPI_EVAL_OUTPUT_BUFFER include una matrice di strutture di ACPI_METHOD_ARGUMENT a lunghezza variabile, ognuna delle quali restituisce un argomento di output.

Per informazioni su come valutare in modo sincrono un metodo di controllo ACPI, 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_EX 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_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