Partager via


IOCTL_ACPI_EVAL_METHOD IOCTL (acpiioct.h)

Un pilote pour un appareil peut utiliser la demande de contrôle d’appareil IOCTL_ACPI_EVAL_METHOD pour évaluer de manière synchrone une méthode de contrôle ACPI prise en charge par l’appareil. 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_EVAL_METHOD.
  • 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 est défini sur un pointeur vers un objet d’événement alloué et initialisé par l’appelant.

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 ACPI_EVAL_OUTPUT_BUFFER qui contient les arguments de sortie de la méthode de contrôle.
  • IoStatusBlock est défini sur une structure 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 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_EVAL_METHOD pour évaluer de manière synchrone une méthode de contrôle prise en charge par l’appareil. Par exemple, si l’appareil est nommé « ABCD » dans un espace de noms ACPI et que l’appareil « ABCD » prend en charge une méthode nommée « _FOO », ce IOCTL peut être utilisé pour évaluer la méthode de contrôle « _FOO » en envoyant la demande à l’appareil « ABCD » et en fournissant le nom de la méthode de contrôle « _FOO ».

IOCTL_ACPI_EVAL_METHOD prend en charge les types suivants de structures de mémoire tampon d’entrée :

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_INPUT_BUFFER_COMPLEX

Les arguments de sortie de la méthode de contrôle sont retournés dans la structure ACPI_EVAL_OUTPUT_BUFFER de longueur variable fournie par le pointeur OutBuffer . Le ACPI_EVAL_OUTPUT_BUFFER comprend un tableau de structures de ACPI_METHOD_ARGUMENT de longueur variable, chacune d’elles retournant un argument de sortie.

Pour plus d’informations sur l’évaluation synchrone des méthodes de contrôle, consultez Évaluation synchrone des méthodes de contrôle ACPI.

À compter de Windows Server 2008 et Windows Vista, un pilote peut également utiliser une demande de IOCTL_ACPI_EVAL_METHOD_EX pour évaluer de manière synchrone une méthode de contrôle qui n’est pas un objet enfant immédiat d’un appareil.

Pour plus d’informations sur l’évaluation d’une méthode de contrôle ACPI de manière asynchrone à partir de Windows Server 2008 et Windows Vista, consultez IOCTL_ACPI_ASYNC_EVAL_METHOD et IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.

IOCTL_ACPI_EVAL_METHOD ne peut être utilisé que dans le DISPATCH_LEVEL IRQL < .

Configuration requise

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

Voir aussi

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_COMPLEX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_OUTPUT_BUFFER

ACPI_METHOD_ARGUMENT

IOCTL_ACPI_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD_EX