Partager via


IOCTL_ACPI_GET_DEVICE_INFORMATION IOCTL (acpiioct.h)

Un pilote pour un appareil peut utiliser la demande de contrôle d’appareil IOCTL_ACPI_GET_DEVICE_INFORMATION pour obtenir des informations d’identification affinées sur son appareil. Ce IOCTL est généralement utilisé par les pilotes qui prennent en charge plusieurs versions ou révisions d’un appareil et doivent examiner les composants qui composent la chaîne d’ID HW de l’appareil pour identifier l’appareil exact. Le 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

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

Définissez les paramètres d’entrée IoBuildDeviceIoControlRequest comme suit :

  • IoControlCode est défini sur IOCTL_ACPI_GET_DEVICE_INFORMATION.
  • 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 de mémoire tampon d’entrée qui dépend du type d’arguments d’entrée à passer à la méthode de contrôle. Pour plus d’informations sur le type d’arguments d’entrée pris en charge par ce IOCTL, consultez la section Remarques plus loin dans cette rubrique.
  • 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 a la valeur FALSE.
  • L’événement a la valeur NULL.

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 :

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 demande 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 assez grande pour contenir l’en-tête de mémoire tampon de sortie, 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 mémoire tampon de sortie, mais n’est pas assez grande pour contenir tous les arguments de sortie de la méthode de contrôle, le membre Status est défini sur STATUS_BUFFER_OVERFLOW et OutputBuffer-Length> est défini sur la longueur requise de la mémoire tampon de sortie.

Si la requête réussit, le membre IoStatusBlock-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

Un pilote pour un appareil peut utiliser IOCTL_ACPI_GET_DEVICE_INFORMATION pour obtenir des informations d’identification affinées sur son appareil. Ce IOCTL est généralement utilisé avec les pilotes qui prennent en charge plusieurs versions matérielles ou révisions d’un appareil et doivent examiner les composants qui composent la chaîne d’ID HW de l’appareil pour identifier l’appareil exact. Par exemple, un pilote peut prendre en charge différentes révisions du même appareil, dans lesquelles certains aspects de l’interface de programmation ou du comportement de l’appareil sont différents. Le pilote peut identifier exactement la révision sur laquelle il s’exécute.

Les arguments de sortie de la requête sont retournés dans la structure de ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER de longueur variable fournie par le pointeur OutBuffer . Le ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER comprend un tableau de tableaux de longueur variable, chacun d’entre eux renvoyant un argument de sortie représentant respectivement la chaîne d’ID du sous-système, la chaîne d’ID du fournisseur et instance chaîne d’ID.

IOCTL_ACPI_GET_DEVICE_INFORMATION peut être utilisé uniquement dans IRQL <= DISPATCH_LEVEL.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 et versions ultérieures de Windows.
En-tête acpiioct.h (inclure Acpiioct.h)

Voir aussi

ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER