Codes de contrôle d’alimentation PPM
Les codes de contrôle d’alimentation décrits dans cette rubrique sont utilisés par les plug-ins d’extension de plateforme (PEP). Une demande de contrôle d’alimentation est similaire à une demande de contrôle d’E/S (IOCTL). Contrairement à un IOCTL, toutefois, une demande de contrôle d’alimentation est envoyée directement à l’infrastructure de gestion de l’alimentation windows (PoFx) et n’est pas observée par les autres pilotes de périphérique dans la pile d’appareils.
Voici les codes de contrôle d’alimentation PPM :
Code | Syntaxe | Description |
---|---|---|
PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE | {38BD8901-AB20-4908-ABAA-AC34674BDFF3} DEFINE_GUID(PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE, 0x38bd8901, 0xab20, 0x4908, 0xab, 0xaa, 0xac, 0x34, 0x67, 0x4b, 0xdf, 0xf3) ; |
Le code est utilisé par le PEP pour interroger l’infrastructure de gestion de l’alimentation Windows (PoFx) pour obtenir des informations sur la page de stationnement affectée à un processeur. Pour déterminer la page de stationnement d’un processeur, le plug-in d’extension de plateforme (PEP) de ce processeur envoie une demande de contrôle d’alimentation PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE à PoFx. Pour lancer cette demande de contrôle d’alimentation, le PEP appelle d’abord la routine RequestWorker pour informer PoFx que le PEP a un élément de travail à soumettre. PoFx répond à cet appel en envoyant une notification PEP_DPM_WORK au PEP. Le PEP répond en soumettant une demande de travail de contrôle d’alimentation pour les informations de la page de stationnement. Cette demande inclut une structure de PEP_WORK_INFORMATION allouée par pep dans laquelle le membre WorkType est défini sur PepWorkRequestPowerControl et le membre PowerControl pointe vers une structure de PEP_WORK_POWER_CONTROL allouée par PEP. Le membre PowerControlCode de la structure PEP_WORK_POWER_CONTROL est défini sur PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE. Le membre InBuffer de cette structure doit avoir la valeur NULL et le membre OutBuffer doit pointer vers une structure de PEP_PPM_CONTEXT_QUERY_PARKING_PAGE pep allouée. En réponse à cette demande de contrôle d’alimentation, PoFx écrit les adresses virtuelles et physiques de la page de stationnement dans la structure PEP_PPM_CONTEXT_QUERY_PARKING_PAGE. La demande de contrôle d’alimentation PEP_PPM_POWER_CONTROL_QUERY_PARKING_PAGE est spécifique à Arm et n’est pas prise en charge pour les processeurs x86 et x64. Dans un système multiprocesseur Arm, une page de stationnement est un bloc de mémoire de 4 kilooctets que le système d’exploitation utilise comme boîte aux lettres pour contrôler un processeur qui démarre à partir d’un état inactif. Un PEP peut utiliser une partie de la boîte aux lettres pour stocker des données de contexte spécifiques au processeur. Pour plus d’informations, consultez le document intitulé « Multiprocessor Startup for Arm Platforms » à l’adresse https://www.acpica.org/related-documents. |
GUID_PPM_PERF_CONSTRAINT_CHANGE | {29181FA1-4BF3-4c2e-B314-A6D226322B00} DEFINE_GUID(GUID_PPM_PERF_CONSTRAINT_CHANGE, 0x29181fa1, 0x4bf3, 0x4c2e, 0xb3, 0x14, 0xa6, 0xd2, 0x26, 0x32, 0x2b, 0x0) ; |
Le code est utilisé par le PEP pour informer l’infrastructure de gestion de l’alimentation Windows (PoFx) que les limites de performances du processeur doivent changer pour tenir compte des contraintes externes (budget de l’alimentation, contraintes thermiques, source d’alimentation, etc.). Aucune mémoire tampon d’entrée ou de sortie n’est utilisée avec ce code de contrôle. Pour lancer cette demande de contrôle d’alimentation, le PEP appelle d’abord la routine RequestWorker pour informer PoFx que le PEP a un élément de travail à soumettre. PoFx répond à cet appel en envoyant une notification PEP_DPM_WORK au PEP. Le PEP répond en soumettant une demande de travail de contrôle d’alimentation pour une modification de contrainte de performances. Cette demande inclut une structure de PEP_WORK_INFORMATION allouée par pep dans laquelle le membre WorkType est défini sur PepWorkRequestPowerControl et le membre PowerControl pointe vers une structure de PEP_WORK_POWER_CONTROL allouée par PEP. Le membre PowerControlCode de la structure PEP_WORK_POWER_CONTROL est défini sur GUID_PPM_PERF_CONSTRAINT_CHANGE. Les membres InBuffer et OutBuffer de cette structure doivent avoir la valeur NULL. En réponse à cette demande de contrôle d’alimentation, PoFx envoie une notification PEP_NOTIFY_PPM_PERF_CONSTRAINTS au PEP pour obtenir les nouvelles limites de performances du processeur. |