IOCTL_ACPI_EVAL_METHOD_EX IOCTL (acpiioct.h)
Un pilote pour un appareil peut utiliser la demande de contrôle d’appareil IOCTL_ACPI_EVAL_METHOD_EX pour évaluer de manière synchrone une méthode de contrôle ACPI prise en charge par un appareil enfant dans l’espace de noms de 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
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_EX.
- 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 les arguments d’entrée de type 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 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 ACPI_EVAL_OUTPUT_BUFFER qui contient les arguments de sortie de la méthode de contrôle.
- IoStatusBlock est défini sur un pointeur vers 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 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 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 la mémoire tampon de sortie, mais n’est pas suffisamment 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->Longueur est définie 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
Un pilote pour un appareil peut utiliser IOCTL_ACPI_EVAL_METHOD_EX pour évaluer de façon synchrone une méthode de contrôle prise en charge par un objet enfant dans l’espace de noms de l’appareil. Le chemin d’accès et le nom de la méthode de contrôle fourni par cette requête doivent être le chemin complet et le nom de la méthode dans l’espace de noms ACPI ou le chemin et le nom de la méthode par rapport à l’appareil auquel la requête est envoyée. Par exemple, supposons qu’un appareil nommé « ABCD » est un enfant immédiat de la racine d’un espace de noms ACPI, que l’appareil « ABCD » prend en charge un appareil enfant nommé « CHLD », et que l’appareil « CHLD » prend en charge une méthode nommée « _FOO ». Dans ce cas, pour évaluer la méthode « _FOO », un pilote envoie une demande d’évaluation à l’appareil « ABCD » et fournit le chemin d’accès et le nom « \ABCD ». CHLD._FOO, qui est le chemin complet et le nom dans l’espace de noms ACPI, ou le chemin d’accès et le nom « CHLD._FOO », qui est le chemin d’accès et le nom par rapport à l’appareil « ABCD » dans l’espace de noms ACPI.
IOCTL_ACPI_EVAL_METHOD_EX prend en charge les types suivants de structures de mémoire tampon d’entrée :
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX
ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX
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 inclut un tableau de structures ACPI_METHOD_ARGUMENT de longueur variable, dont chacune retourne un argument de sortie.
Pour plus d’informations sur l’évaluation synchrone des méthodes de contrôle, consultez Évaluation des méthodes de contrôle ACPI de manière synchrone.
Un pilote peut également utiliser une demande de IOCTL_ACPI_EVAL_METHOD pour évaluer de façon synchrone une méthode de contrôle qui est un objet enfant immédiat d’un appareil.
Pour plus d’informations sur l’évaluation asynchrone d’une méthode de contrôle ACPI à 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_EX 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) |
Voir aussi
ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX