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
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) |