Notifications ACPI
Chaque notification ACPI que la routine de rappel AcceptAcpiNotification du PEP reçoit est accompagnée d’un paramètre Notification qui indique le type de notification et d’un paramètre Data qui pointe vers une structure de données qui contient les informations du type de notification spécifié.
Dans cet appel, le paramètre Notification est défini sur une valeur constante PEP_NOTIFY_ACPI_XXX qui indique le type de notification. Le paramètre Data pointe vers un type de structure PEP_ACPI_XXX associé à ce type de notification.
Les ID de notification ACPI suivants sont utilisés par la routine de rappel AcceptAcpiNotification.
Notification ID | Valeur | Structure associée |
---|---|---|
PEP_NOTIFY_ACPI_PREPARE_DEVICE | 0x01 | PEP_ACPI_PREPARE_DEVICE |
PEP_NOTIFY_ACPI_ABANDON_DEVICE | 0x02 | PEP_ACPI_ABANDON_DEVICE |
PEP_NOTIFY_ACPI_REGISTER_DEVICE | 0x03 | PEP_ACPI_REGISTER_DEVICE |
PEP_NOTIFY_ACPI_UNREGISTER_DEVICE | 0x04 | PEP_ACPI_UNREGISTER_DEVICE |
PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE | 0x05 | PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE |
PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION | 0x06 | PEP_ACPI_QUERY_OBJECT_INFORMATION |
PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD | 0x07 | PEP_ACPI_EVALUATE_CONTROL_METHOD |
PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES | 0x08 | PEP_ACPI_QUERY_DEVICE_CONTROL_RESOURCES |
PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES | 0x09 | PEP_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES |
PEP_NOTIFY_ACPI_PREPARE_DEVICE
Notification : valeur PEP_NOTIFY_ACPI_PREPARE_DEVICE. Données : pointeur vers une structure PEP_ACPI_PREPARE_DEVICE qui identifie l’appareil par son nom.
Permet au PEP de choisir s’il faut fournir des services ACPI pour un appareil.
L’infrastructure de gestion de l’alimentation Windows (PoFx) envoie cette notification lorsque le pilote Windows ACPI découvre un nouvel appareil dans l’espace de noms ACPI pendant l’énumération de l’appareil. Cette notification est envoyée aux peps qui implémentent des routines de rappel AcceptAcpiNotification.
Pour envoyer une notification PEP_NOTIFY_ACPI_PREPARE_DEVICE, PoFx appelle la routine AcceptAcpiNotification du PEP. Dans cet appel, la valeur du paramètre Notification est PEP_NOTIFY_ACPI_PREPARE_DEVICE, et le paramètre Data pointe vers une structure PEP_ACPI_PREPARE_DEVICE qui contient le nom de l’appareil. Si le PEP est prêt à fournir des services ACPI pour cet appareil, le PEP définit le membre DeviceAccepted de cette structure sur TRUE. Pour refuser de fournir de tels services, le PEP définit ce membre sur FALSE.
Si le PEP indique (en définissant DeviceAccepted = TRUE) qu’il est prêt à fournir des services ACPI pour l’appareil, PoFx répondra en envoyant au PEP une notification PEP_NOTIFY_ACPI_REGISTER_DEVICE pour inscrire le PEP comme seul fournisseur de services ACPI pour l’appareil. PoFx s’attend à ce qu’un seul PEP revendique le rôle de fournisseur de services ACPI pour un appareil.
Il est recommandé de ne pas effectuer d’initialisation d’appareil en réponse à la notification PEP_NOTIFY_ACPI_PREPARE_DEVICE. Au lieu de cela, reportez cette initialisation jusqu’à ce que la notification PEP_NOTIFY_ACPI_REGISTER_DEVICE pour l’appareil soit reçue ou qu’une méthode de contrôle ACPI (par exemple, _INI) soit appelée pour l’appareil.
Pour une notification PEP_NOTIFY_ACPI_PREPARE_DEVICE, la routine AcceptAcpiNotification est toujours appelée à l’adresse IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_ABANDON_DEVICE
Notification : valeur PEP_NOTIFY_ACPI_ABANDON_DEVICE.
Données : pointeur vers une structure PEP_ACPI_ABANDON_DEVICE qui identifie l’appareil abandonné.
Informe le PEP que l’appareil spécifié a été abandonné et n’a plus besoin des services ACPI du PEP.
L’infrastructure de gestion de l’alimentation Windows (PoFx) envoie cette notification pour informer le pep que l’appareil n’est plus utilisé par le système d’exploitation. Le PEP peut utiliser cette notification pour propre tout stockage interne qu’il a alloué pour suivre l’état de l’appareil.
Pour envoyer une notification PEP_NOTIFY_ACPI_ABANDON_DEVICE, PoFx appelle la routine de rappel AcceptAcpiNotification du PEP. Dans cet appel, la valeur du paramètre Notification est PEP_NOTIFY_ACPI_ABANDON_DEVICE et le paramètre Data pointe vers une structure PEP_ACPI_ABANDON_DEVICE.
PoFx envoie cette notification uniquement à un PEP qui a choisi de fournir des services ACPI pour l’appareil dans une notification PEP_NOTIFY_ACPI_PREPARE_DEVICE précédente. Si le PEP s’est inscrit pour fournir ces services dans une notification PEP_NOTIFY_ACPI_REGISTER_DEVICE précédente, PoFx envoie une notification PEP_NOTIFY_ACPI_UNREGISTER_DEVICE pour l’appareil avant d’envoyer la notification PEP_NOTIFY_ACPI_ABANDON_DEVICE.
Pour une notification PEP_NOTIFY_ACPI_ABANDON_DEVICE, la routine AcceptAcpiNotification est toujours appelée dans IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_REGISTER_DEVICE
Notification : valeur PEP_NOTIFY_ACPI_REGISTER_DEVICE.
Données : pointeur vers une structure PEP_ACPI_REGISTER_DEVICE qui identifie l’appareil. En réponse à cette notification, le pep est censé créer une valeur PEPHANDLE valide pour identifier l’appareil et écrire cette valeur de handle dans la structure.
Inscrit le PEP pour qu’il soit le seul fournisseur de services ACPI pour l’appareil spécifié.
L’infrastructure de gestion de l’alimentation Windows (PoFx) envoie cette notification à un pep qui a indiqué, dans une notification PEP_NOTIFY_ACPI_PREPARE_DEVICE précédente, qu’il est prêt à fournir des services ACPI pour l’appareil spécifié.
Pour envoyer une notification PEP_NOTIFY_ACPI_REGISTER_DEVICE, PoFx appelle la routine AcceptAcpiNotification du PEP. Dans cet appel, la valeur du paramètre Notification est PEP_NOTIFY_ACPI_REGISTER_DEVICE, et le paramètre Data pointe vers une structure PEP_ACPI_REGISTER_DEVICE qui identifie l’appareil pour lequel le PEP doit fournir des services ACPI.
Pour une notification PEP_NOTIFY_ACPI_REGISTER_DEVICE, la routine AcceptAcpiNotification est toujours appelée dans IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_UNREGISTER_DEVICE
Notification : valeur PEP_NOTIFY_ACPI_UNREGISTER_DEVICE.
Données : pointeur vers une structure de PEP_ACPI_UNREGISTER_DEVICE qui contient le PEPHANDLE pour l’appareil.
Annule l’inscription de l’appareil spécifié pour les services ACPI à partir du PEP.
En réponse à cette notification, le PEP peut détruire le PEPHANDLE qu’il a créé pour cet appareil dans une notification PEP_NOTIFY_ACPI_REGISTER_DEVICE précédente.
Pour envoyer une notification PEP_NOTIFY_ACPI_UNREGISTER_DEVICE, PoFx appelle la routine de rappel AcceptAcpiNotification du PEP. Dans cet appel, la valeur du paramètre Notification est PEP_NOTIFY_ACPI_UNREGISTER_DEVICE et le paramètre Data pointe vers une structure PEP_ACPI_UNREGISTER_DEVICE.
Pour une notification PEP_NOTIFY_ACPI_UNREGISTER_DEVICE, la routine AcceptAcpiNotification est toujours appelée à l’adresse IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE
Notification : valeur PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE.
Données : pointeur vers une structure PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE qui contient une énumération des objets dans l’espace de noms ACPI de l’appareil.
Interroge le PEP pour obtenir la liste des objets ACPI (méthodes natives) pris en charge par le PEP sous l’appareil spécifié dans l’espace de noms ACPI.
Le pilote Windows ACPI utilise les objets énumérés par cette notification pour générer l’espace de noms pour l’appareil spécifié. Par la suite, quand il fait référence à cet appareil, le pilote ACPI interroge le pep uniquement pour ces objets.
L’infrastructure de gestion de l’alimentation Windows (PoFx) envoie la notification PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE peu après la découverte d’un appareil et l’inscription du PEP pour fournir des services ACPI pour l’appareil. Pour plus d’informations sur cette inscription, consultez PEP_NOTIFY_ACPI_REGISTER_DEVICE.
Pour envoyer une notification PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE, PoFx appelle la routine de rappel AcceptAcpiNotification du PEP. Dans cet appel, la valeur du paramètre Notification est PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE et le paramètre Data pointe vers une structure PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE.
La routine AcceptAcpiNotification est censée gérer une notification PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE et retourner TRUE. Si vous ne le faites pas, un bogue case activée.
Pour une notification PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE, la routine AcceptAcpiNotification est toujours appelée à l’adresse IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION
Notification : valeur PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION.
Données : pointeur vers une structure PEP_ACPI_QUERY_OBJECT_INFORMATION qui spécifie les attributs de l’objet ACPI.
Interroge le PEP pour obtenir des informations sur un objet ACPI précédemment énuméré.
L’infrastructure de gestion de l’alimentation Windows (PoFx) envoie cette notification pour interroger le peps pour obtenir les attributs d’un objet qui a été énuméré lors de la gestion d’une notification PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE précédente. Actuellement, les seuls objets énumérés sont des méthodes de contrôle.
Pour envoyer une notification PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION, PoFx appelle la routine de rappel AcceptAcpiNotification du PEP. Dans cet appel, la valeur du paramètre Notification est PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION et le paramètre Data pointe vers une structure PEP_ACPI_QUERY_OBJECT_INFORMATION.
Pour une notification PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION, la routine AcceptAcpiNotification est toujours appelée à l’adresse IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD
Notification : valeur PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD.
Données : pointeur vers une structure de PEP_ACPI_EVALUATE_CONTROL_METHOD qui spécifie une méthode de contrôle ACPI à évaluer, un argument d’entrée à fournir à cette méthode et une mémoire tampon de sortie pour le résultat.
Est utilisé pour évaluer une méthode de contrôle ACPI pour laquelle le PEP est le gestionnaire inscrit.
L’infrastructure de gestion de l’alimentation Windows (PoFx) envoie cette notification au PEP lorsque le pilote Windows ACPI doit évaluer une méthode de contrôle ACPI implémentée par le PEP.
Pour envoyer une notification PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD, PoFx appelle la routine de rappel AcceptAcpiNotification du PEP. Dans cet appel, la valeur du paramètre Notification est PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD et le paramètre Data pointe vers une structure PEP_ACPI_EVALUATE_CONTROL_METHOD.
Le concepteur de plateforme peut choisir s’il faut que le microprogramme PEP ou ACPI gère une méthode de contrôle ACPI particulière. Si le PEP est le gestionnaire inscrit pour une méthode de contrôle ACPI, PoFx répond à une demande du pilote Windows ACPI d’évaluer cette méthode en envoyant une notification PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD au PEP.
Voici une liste d’exemples de méthodes de contrôle ACPI que le PEP peut gérer pour un appareil :
Identification et configuration de l’appareil : _HID, _CID, _UID, _ADR, _CLS, _SUB, _CRS, _PRS, etc. Gestion de l’alimentation et veille des appareils : _PS0 via _PS3, _PR0 via _PR3, _DSW, etc. Méthodes spécifiques à l’appareil : _DSM et toutes les méthodes de contrôle spécifiques à la pile d’appareils. Pour un appareil spécial, tel qu’un appareil ACPI Time et Alarm, cette notification est utilisée pour évaluer l’heure et les méthodes d’alarme (_GCP, _GRT, _SRT, etc.).
Pour une notification PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD, la routine AcceptAcpiNotification est toujours appelée dans IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES
Notification : valeur PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES.
Données : pointeur vers une structure PEP_ACPI_QUERY_DEVICE_CONTROL_RESOURCES qui contient la liste des ressources d’alimentation.
Interroge le PEP pour obtenir la liste des ressources brutes nécessaires pour contrôler l’alimentation de l’appareil.
En réponse à cette notification, le PEP fournit la liste des ressources brutes nécessaires pour contrôler l’alimentation de l’appareil. Le pilote Windows ACPI nécessite cette liste afin qu’il puisse réserver les ressources d’alimentation requises par l’appareil et fournir la liste correspondante des ressources traduites au PEP (en envoyant une notification PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES). Pour plus d’informations, consultez Ressources brutes et traduites.
Pour envoyer une notification PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES, l’infrastructure de gestion de l’alimentation Windows (PoFx) appelle la routine de rappel AcceptAcpiNotification du PEP. Dans cet appel, la valeur du paramètre Notification est PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES et le paramètre Data pointe vers une structure PEP_ACPI_QUERY_DEVICE_CONTROL_RESOURCES.
Pour une notification PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES, la routine AcceptAcpiNotification est toujours appelée dans IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES
Notification : valeur PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES.
Données : pointeur vers une structure PEP_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES qui contient la liste des ressources traduites.
Fournit au PEP une liste de ressources traduites pour toutes les ressources de contrôle d’alimentation nécessaires pour l’appareil.
L’infrastructure de gestion de l’alimentation Windows (PoFx) envoie cette notification si le PEP a répertorié des ressources brutes en réponse à la notification PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES précédente. La notification PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES fournit au PEP la liste correspondante des ressources traduites. Pour plus d’informations, consultez Ressources brutes et traduites.
Pour envoyer une notification PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES, PoFx appelle la routine de rappel AcceptAcpiNotification du PEP. Dans cet appel, la valeur du paramètre Notification est PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES et le paramètre Data pointe vers une structure PEP_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES.
Pour une notification PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES, la routine AcceptAcpiNotification est toujours appelée à l’adresse IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_WORK
Notification : valeur PEP_NOTIFY_ACPI_WORK.
Données : pointeur vers une structure PEP_WORK.
Envoyé au PEP une fois chaque fois que le PEP appelle la routine RequestWorker pour demander un élément de travail à partir de l’infrastructure de gestion de l’alimentation Windows (PoFx). Cette notification est utilisée pour le travail ACPI uniquement.
Une fois que le PEP a appelé la routine RequestWorker pour demander un élément de travail, PoFx répond en envoyant au PEP une notification PEP_NOTIFY_ACPI_WORK. Toutefois, cette notification n’est pas envoyée tant que les ressources (autrement dit, le thread de travail) nécessaires au traitement de l’élément de travail ne sont pas disponibles. De cette façon, PoFx garantit que la demande de travail que le PEP transmet à PoFx pendant la notification ne peut jamais échouer en raison d’un manque de ressources.
Lors de l’entrée, le PEP doit supposer que la structure PEP_WORK n’est pas initialisée. Pour gérer cette notification, le PEP doit définir le membre WorkInformation pour qu’il pointe vers une structure de PEP_WORK_INFORMATION allouée par pep qui décrit le travail demandé. En outre, le PEP doit définir le membre NeedWork de la structure PEP_WORK sur TRUE pour confirmer que le PEP a géré la notification PEP_NOTIFY_ACPI_WORK et que le membre WorkInformation pointe vers une structure PEP_WORK_INFORMATION valide. Si le PEP ne parvient pas à gérer la notification ou ne parvient pas à allouer la structure PEP_WORK_INFORMATION, le PEP doit définir le membre WorkInformation sur NULL et définir le membre NeedWork sur FALSE.
Pour une notification PEP_NOTIFY_ACPI_WORK, la routine AcceptAcpiNotification est toujours appelée à l’adresse IRQL = PASSIVE_LEVEL.