Condividi tramite


IOCTL_ACPI_ENUM_CHILDREN IOCTL (acpiioct.h)

La richiesta di controllo del dispositivo IOCTL_ACPI_ENUM_CHILDREN può essere usata per enumerare il percorso e il nome dei dispositivi o gli oggetti figlio denominati nello spazio dei nomi ACPI del dispositivo a cui viene inviata la richiesta. Un 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 il IoBuildDeviceIoControlRequest parametri di input come indicato di seguito:

  • IoControlCode è impostato su IOCTL_ACPI_ENUM_CHILDREN.
  • DeviceObject è impostato su un puntatore all'oggetto dispositivo fisico (PDO) del dispositivo.
  • InputBuffer è impostato su un puntatore a una struttura di ACPI_ENUM_CHILDREN_INPUT_BUFFER a lunghezza variabile.
  • 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.
  • 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 di ACPI_ENUM_CHILDREN_OUTPUT_BUFFER a lunghezza variabile in cui il driver ACPI restituisce il percorso e il nome dei dispositivi figlio enumerati.
  • 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 di stato

Se la richiesta ha esito positivo, IoStatusBlock ->Stato è impostato su STATUS_SUCCESS; in caso contrario, il membro stato è impostato su un codice di errore. Se il buffer di output non è sufficientemente grande da contenere l'intestazione del buffer, il membro stato è 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 i percorsi e i nomi di tutti gli oggetti figlio enumerati, il membro Status è impostato su STATUS_BUFFER_OVERFLOW e OutputBuffer->NumberOfChildren è impostato sulla lunghezza richiesta del buffer di output.

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

Osservazioni

IOCTL_ACPI_ENUM_CHILDREN restituisce una struttura a lunghezza variabile ACPI_ENUM_CHILDREN_OUTPUT_BUFFER contenente una matrice di strutture a lunghezza variabile ACPI_ENUM_CHILD, ognuna delle quali restituisce il percorso completo e il nome di un oggetto nello spazio dei nomi ACPI del dispositivo a cui è stata inviata la richiesta. Gli oggetti enumerati da questa richiesta dipendono dall'impostazione del Flag membro della struttura di input fornita ACPI_ENUM_CHILDREN_INPUT_BUFFER, come indicato di seguito:

Se il buffer di output allocato dal driver non è sufficientemente grande da restituire tutti i nomi figlio richiesti, il driver ACPI non restituisce nomi figlio e imposta il Status membro del IO_STATUS_BLOCK per la richiesta di STATUS_BUFFER_OVERFLOW. In questo caso, se le dimensioni, in byte, del buffer di output sono almeno dimensione di(ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE), il driver ACPI imposta anche NumberOfChildren sulle dimensioni, in byte, necessarie per recuperare i percorsi e i nomi richiesti.

Un driver usa in genere una sequenza di due richieste di IOCTL_ACPI_ENUM_CHILDREN per enumerare gli oggetti figlio di interesse. Il driver invia la prima richiesta per ottenere le dimensioni del buffer di output necessario per contenere il percorso e il nome di tutti gli oggetti richiesti. Il driver invia la seconda richiesta per restituire il percorso e il nome degli oggetti nel buffer di output.

Per altre informazioni su come enumerare i dispositivi figlio di un dispositivo, vedere enumerazione di dispositivi figlio e metodi di controllo.

IOCTL_ACPI_ENUM_CHILDREN può essere usato solo in< DISPATCH_LEVEL IRQL.

Fabbisogno

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

Vedere anche

ACPI_ENUM_CHILD

ACPI_ENUM_CHILDREN_INPUT_BUFFER

ACPI_ENUM_CHILDREN_OUTPUT_BUFFER