IOCTL_ACPI_ENUM_CHILDREN IOCTL (acpiioct.h)
La demande de contrôle d’appareil IOCTL_ACPI_ENUM_CHILDREN peut être utilisée pour énumérer le chemin d’accès et le nom des appareils ou des objets enfants nommés dans l’espace de noms ACPI de l’appareil auquel cette requête est envoyée. Un pilote doit appeler IoBuildDeviceIoControlRequest et passer les paramètres d’entrée et de sortie suivants pour générer cette requête.
Code principal
Mémoire tampon d’entrée
Définissez les paramètres d’entrée IoBuildDeviceIoControlRequest comme suit :
- IoControlCode est défini sur IOCTL_ACPI_ENUM_CHILDREN.
- DeviceObject est défini sur un pointeur vers l’objet d’appareil physique (PDO) de l’appareil.
- InputBuffer est défini sur un pointeur vers une structure ACPI_ENUM_CHILDREN_INPUT_BUFFER de longueur variable.
- InputBufferLength est défini sur la taille, en octets, de la mémoire tampon d’entrée fournie par InputBuffer.
- OutputBufferLength fournit la taille, en octets, de la mémoire tampon de sortie fournie par OutputBuffer.
- InternalDeviceIoControl est défini sur FALSE.
- 'événement est défini sur un pointeur vers un objet d’événement alloué par l’appelant et initialisé.
Longueur de la mémoire tampon d’entrée
InputBufferLength est défini sur la taille, en octets, de la mémoire tampon d’entrée fournie par InputBuffer.
Mémoire tampon de sortie
Définissez les paramètres de sortie IoBuildDeviceIoControlRequest comme suit :
- OutputBuffer fournit un pointeur vers une structure de ACPI_ENUM_CHILDREN_OUTPUT_BUFFER de longueur variable dans laquelle le pilote ACPI retourne le chemin d’accès et le nom des appareils enfants énumérés.
- IoStatusBlock est défini sur une structure de IO_STATUS_BLOCK.
Longueur de la mémoire tampon de sortie
OutputBufferLength fournit la taille, en octets, de la mémoire tampon de sortie fournie par OutputBuffer.
Bloc d’état
Si la requête réussit, IoStatusBlock ->Status est défini sur STATUS_SUCCESS ; sinon, le membre Status est défini sur un code d’erreur. Si la mémoire tampon de sortie n’est pas suffisamment grande pour contenir l’en-tête de la mémoire tampon, le membre status est défini sur STATUS_BUFFER_TOO_SMALL. Si la mémoire tampon de sortie est suffisamment grande pour contenir l’en-tête de la mémoire tampon de sortie, mais qu’elle n’est pas suffisamment grande pour contenir les chemins d’accès et les noms de tous les objets enfants énumérés, le membre Status est défini sur STATUS_BUFFER_OVERFLOW et OutputBuffer->NumberOfChildren est défini sur la longueur requise de la mémoire tampon de sortie.
Si la requête réussit, le IoStatusBlock->membre information est défini sur le nombre d’octets retournés dans la mémoire tampon de sortie ; sinon, le membre Information est défini sur zéro.
Remarques
IOCTL_ACPI_ENUM_CHILDREN retourne une structure ACPI_ENUM_CHILDREN_OUTPUT_BUFFER de longueur variable qui contient un tableau de structures ACPI_ENUM_CHILD de longueur variable, chacune retournant le chemin complet et le nom d’un objet dans l’espace de noms ACPI de l’appareil auquel la requête a été envoyée. Les objets que cette requête énumère dépendent du paramètre des indicateurs de membre de la structure d’entrée fournie ACPI_ENUM_CHILDREN_INPUT_BUFFER, comme suit :
Si la mémoire tampon de sortie allouée par le pilote n’est pas suffisamment grande pour renvoyer tous les noms enfants demandés, le pilote ACPI ne retourne aucun nom enfant et définit le membre Status du IO_STATUS_BLOCK pour que la demande STATUS_BUFFER_OVERFLOW. Dans ce cas, si la taille, en octets, de la mémoire tampon de sortie est au moins taille de(ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE), le pilote ACPI définit également NumberOfChildren à la taille, en octets, qui est nécessaire pour récupérer les chemins et noms demandés.
Un pilote utilise généralement une séquence de deux requêtes IOCTL_ACPI_ENUM_CHILDREN pour énumérer les objets enfants d’intérêt. Le pilote envoie la première requête pour obtenir la taille de la mémoire tampon de sortie requise pour contenir le chemin d’accès et le nom de tous les objets demandés. Le pilote envoie la deuxième requête pour retourner le chemin d’accès et le nom des objets dans la mémoire tampon de sortie.
Pour plus d’informations sur l’énumération des appareils enfants d’un appareil, consultez énumération des appareils enfants et des méthodes de contrôle.
IOCTL_ACPI_ENUM_CHILDREN ne peut être utilisé qu’à l'< DISPATCH_LEVEL IRQL.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Vista et versions ultérieures de Windows. |
d’en-tête | acpiioct.h (include Acpiioct.h) |