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