Condividi tramite


IOCTL_ACPI_ENUM_CHILDREN IOCTL (acpioct.h)

La richiesta di controllo del dispositivo IOCTL_ACPI_ENUM_CHILDREN può essere usata per enumerare il percorso e il nome di dispositivi o oggetti figlio denominati nello spazio dei nomi ACPI del dispositivo a cui viene inviata questa 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 i parametri di input IoBuildDeviceIoControlRequest 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.
  • 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 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 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, 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 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 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

IOCTL_ACPI_ENUM_CHILDREN restituisce una struttura a lunghezza variabile ACPI_ENUM_CHILDREN_OUTPUT_BUFFER che contiene 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 membro Flags della struttura di input fornita ACPI_ENUM_CHILDREN_INPUT_BUFFER, come indicato di seguito:

Se il buffer di output allocato dal driver non è sufficiente per restituire tutti i nomi figlio richiesti, il driver ACPI non restituisce nomi figlio e imposta il membro Status 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 sizeof(ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE), il driver ACPI imposta anche NumberOfChildren sulle dimensioni, in byte, che è necessario 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< .

Requisiti

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

Vedi anche

ACPI_ENUM_CHILD

ACPI_ENUM_CHILDREN_INPUT_BUFFER

ACPI_ENUM_CHILDREN_OUTPUT_BUFFER