Notifiche ACPI
Ogni notifica ACPI che la routine di callback AcceptAcpiNotification di PEP viene accompagnata da un parametro di notifica che indica il tipo di notifica e un parametro Data che punta a una struttura di dati che contiene le informazioni per il tipo di notifica specificato.
In questa chiamata il parametro Notification è impostato su un valore costante PEP_NOTIFY_ACPI_XXX che indica il tipo di notifica. Il parametro Data punta a un tipo di struttura PEP_ACPI_XXX associato a questo tipo di notifica.
Gli ID di notifica ACPI seguenti vengono usati dalla routine di callback AcceptAcpiNotification.
ID notifica | Valore | Struttura associata |
---|---|---|
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
Notifica: valore PEP_NOTIFY_ACPI_PREPARE_DEVICE. Dati: puntatore a una struttura PEP_ACPI_PREPARE_DEVICE che identifica il dispositivo in base al nome.
Consente al PEP di scegliere se fornire servizi ACPI per un dispositivo.
Windows Power Management Framework (PoFx) invia questa notifica quando il driver ACPI di Windows individua un nuovo dispositivo nello spazio dei nomi ACPI durante l'enumerazione del dispositivo. Questa notifica viene inviata a PEP che implementano routine di callback AcceptAcpiNotification.
Per inviare una notifica di PEP_NOTIFY_ACPI_PREPARE_DEVICE, PoFx chiama la routine AcceptAcpiNotification di PEP. In questa chiamata il valore del parametro Di notifica è PEP_NOTIFY_ACPI_PREPARE_DEVICE e il parametro Data punta a una struttura PEP_ACPI_PREPARE_DEVICE contenente il nome del dispositivo. Se il PEP è pronto a fornire servizi ACPI per questo dispositivo, il PEP imposta il membro DeviceAccepted di questa struttura su TRUE. Per rifiutare di fornire tali servizi, il PEP imposta questo membro su FALSE.
Se il PEP indica (impostando DeviceAccepted = TRUE) che è preparato a fornire servizi ACPI per il dispositivo, PoFx risponderà inviando una notifica di PEP_NOTIFY_ACPI_REGISTER_DEVICE PEP per registrare il PEP come unico provider di servizi ACPI per il dispositivo. PoFx prevede che solo un PEP possa rivendicare il ruolo del provider di servizi ACPI per un dispositivo.
Come procedura consigliata, non eseguire alcuna inizializzazione del dispositivo in risposta alla notifica di PEP_NOTIFY_ACPI_PREPARE_DEVICE. Rinviare invece questa inizializzazione fino a quando non viene ricevuta la notifica di PEP_NOTIFY_ACPI_REGISTER_DEVICE per il dispositivo oppure viene richiamato un metodo di controllo ACPI (ad esempio, _INI) per il dispositivo.
Per una notifica PEP_NOTIFY_ACPI_PREPARE_DEVICE, la routine AcceptAcpiNotification viene sempre chiamata in IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_ABANDON_DEVICE
Notifica: valore PEP_NOTIFY_ACPI_ABANDON_DEVICE.
Dati: puntatore a una struttura PEP_ACPI_ABANDON_DEVICE che identifica il dispositivo abbandonato.
Informa il PEP che il dispositivo specificato è stato abbandonato e non richiede più servizi ACPI dal PEP.
Il framework di gestione power di Windows (PoFx) invia questa notifica per informare il PEP che il dispositivo non è più in uso dal sistema operativo. Il PEP può usare questa notifica per pulire qualsiasi archiviazione interna allocata per tenere traccia dello stato del dispositivo.
Per inviare una notifica di PEP_NOTIFY_ACPI_ABANDON_DEVICE, PoFx chiama la routine di callback AcceptAcpiNotification di PEP. In questa chiamata il valore del parametro Di notifica è PEP_NOTIFY_ACPI_ABANDON_DEVICE e il parametro Data punta a una struttura di PEP_ACPI_ABANDON_DEVICE.
PoFx invia questa notifica solo a un PEP che ha scelto di fornire servizi ACPI per il dispositivo in una notifica di PEP_NOTIFY_ACPI_PREPARE_DEVICE precedente. Se il PEP ha registrato per fornire questi servizi in una notifica precedente PEP_NOTIFY_ACPI_REGISTER_DEVICE, PoFx invierà una notifica PEP_NOTIFY_ACPI_UNREGISTER_DEVICE per il dispositivo prima di inviare la notifica di PEP_NOTIFY_ACPI_ABANDON_DEVICE.
Per una notifica PEP_NOTIFY_ACPI_ABANDON_DEVICE, la routine AcceptAcpiNotification viene sempre chiamata in IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_REGISTER_DEVICE
Notifica: valore PEP_NOTIFY_ACPI_REGISTER_DEVICE.
Dati: puntatore a una struttura PEP_ACPI_REGISTER_DEVICE che identifica il dispositivo. In risposta a questa notifica, il PEP dovrebbe creare un valore PEPHANDLE valido per identificare il dispositivo e scrivere questo valore di handle nella struttura.
Registra il PEP come unico provider di servizi ACPI per il dispositivo specificato.
Il framework di gestione power di Windows (PoFx) invia questa notifica a un PEP che ha indicato, in una notifica precedente PEP_NOTIFY_ACPI_PREPARE_DEVICE, che è pronta a fornire servizi ACPI per il dispositivo specificato.
Per inviare una notifica di PEP_NOTIFY_ACPI_REGISTER_DEVICE, PoFx chiama la routine AcceptAcpiNotification di PEP. In questa chiamata, il valore del parametro Di notifica è PEP_NOTIFY_ACPI_REGISTER_DEVICE e il parametro Data punta a una struttura PEP_ACPI_REGISTER_DEVICE che identifica il dispositivo per cui il PEP deve fornire servizi ACPI.
Per una notifica PEP_NOTIFY_ACPI_REGISTER_DEVICE, la routine AcceptAcpiNotification viene sempre chiamata in IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_UNREGISTER_DEVICE
Notifica: valore PEP_NOTIFY_ACPI_UNREGISTER_DEVICE.
Dati: puntatore a una struttura di PEP_ACPI_UNREGISTER_DEVICE contenente PEPHANDLE per il dispositivo.
Annulla la registrazione del dispositivo specificato per i servizi ACPI dal PEP.
In risposta a questa notifica, il PEP può distruggere il PEPHANDLE creato per questo dispositivo in una notifica di PEP_NOTIFY_ACPI_REGISTER_DEVICE precedente.
Per inviare una notifica di PEP_NOTIFY_ACPI_UNREGISTER_DEVICE, PoFx chiama la routine di callback AcceptAcpiNotification di PEP. In questa chiamata il valore del parametro Di notifica è PEP_NOTIFY_ACPI_UNREGISTER_DEVICE e il parametro Data punta a una struttura di PEP_ACPI_UNREGISTER_DEVICE.
Per una notifica PEP_NOTIFY_ACPI_UNREGISTER_DEVICE, la routine AcceptAcpiNotification viene sempre chiamata in IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE
Notifica: valore PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE.
Dati: puntatore a una struttura PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE che contiene un'enumerazione degli oggetti nello spazio dei nomi ACPI del dispositivo.
Esegue query sul PEP per l'elenco di oggetti ACPI (metodi nativi) supportati dal PEP nello spazio dei nomi ACPI specificato.
Il driver ACPI di Windows usa gli oggetti enumerati da questa notifica per compilare lo spazio dei nomi per il dispositivo specificato. Successivamente, quando si fa riferimento a questo dispositivo, il driver ACPI eseguirà una query solo per questi oggetti.
Il framework di gestione power di Windows (PoFx) invia la notifica di PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE poco dopo l'scoperta di un dispositivo e i registri PEP per fornire servizi ACPI per il dispositivo. Per altre informazioni su questa registrazione, vedere PEP_NOTIFY_ACPI_REGISTER_DEVICE.
Per inviare una notifica di PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE, PoFx chiama la routine di callback AcceptAcpiNotification di PEP. In questa chiamata il valore del parametro Di notifica è PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE e il parametro Data punta a una struttura PEP_ACPI_ENUMERATE_DEVICE_NAMESPACE.
La routine AcceptAcpiNotification deve gestire una notifica PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE e restituire TRUE. Non è possibile eseguire questa operazione per causare un controllo di bug.
Per una notifica di PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE, la routine AcceptAcpiNotification viene sempre chiamata in IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION
Notifica: valore PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION.
Dati: puntatore a una struttura PEP_ACPI_QUERY_OBJECT_INFORMATION che specifica gli attributi dell'oggetto ACPI.
Esegue query sul PEP per informazioni su un oggetto ACPI enumerato in precedenza.
Il framework di gestione energia di Windows (PoFx) invia questa notifica per eseguire una query su PEP per gli attributi di un oggetto enumerato durante la gestione di una notifica di PEP_NOTIFY_ACPI_ENUMERATE_DEVICE_NAMESPACE precedente. Attualmente, gli unici oggetti enumerati sono metodi di controllo.
Per inviare una notifica di PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION, PoFx chiama la routine di callback AcceptAcpiNotification di PEP. In questa chiamata, il valore del parametro Notification è PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION e il parametro Data punta a una struttura PEP_ACPI_QUERY_OBJECT_INFORMATION.
Per una notifica di PEP_NOTIFY_ACPI_QUERY_OBJECT_INFORMATION, la routine AcceptAcpiNotification viene sempre chiamata in IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD
Notifica: valore PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD.
Dati: puntatore a una struttura PEP_ACPI_EVALUATE_CONTROL_METHOD che specifica un metodo di controllo ACPI da valutare, un argomento di input da fornire a questo metodo e un buffer di output per il risultato.
Viene utilizzato per valutare un metodo di controllo ACPI per il quale il PEP è il gestore registrato.
Il framework di risparmio energia di Windows (PoFx) invia questa notifica al PEP quando il driver ACPI di Windows deve valutare un metodo di controllo ACPI implementato dal PEP.
Per inviare una notifica di PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD, PoFx chiama la routine di callback AcceptAcpiNotification di PEP. In questa chiamata il valore del parametro Notification è PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD e il parametro Data punta a una struttura PEP_ACPI_EVALUATE_CONTROL_METHOD.
La finestra di progettazione della piattaforma può scegliere se avere il PEP o il firmware ACPI gestire un particolare metodo di controllo ACPI. Se pep è il gestore registrato per un metodo di controllo ACPI, PoFx risponde a una richiesta del driver ACPI di Windows per valutare questo metodo inviando una notifica di PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD al PEP.
Di seguito è riportato un elenco di esempi di metodi di controllo ACPI che il PEP può gestire per un dispositivo:
Identificazione e configurazione del dispositivo: _HID, _CID, _UID, _ADR, _CLS, _SUB, _CRS, _PRS e così via. Risparmio energia e riattivazione dei dispositivi: _PS0 tramite _PS3, _PR0 tramite _PR3, _DSW e così via. Metodi specifici del dispositivo: _DSM e qualsiasi metodo di controllo specifico dello stack di dispositivi. Per un dispositivo speciale, ad esempio un dispositivo ACPI Time e Alarm, questa notifica viene usata per valutare il tempo e i metodi di allarme (_GCP, _GRT, _SRT e così via).
Per una notifica di PEP_NOTIFY_ACPI_EVALUATE_CONTROL_METHOD, la routine AcceptAcpiNotification viene sempre chiamata in IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES
Notifica: valore PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES.
Dati: puntatore a una struttura PEP_ACPI_QUERY_DEVICE_CONTROL_RESOURCES che contiene l'elenco di risorse di risparmio energia.
Esegue una query pep per l'elenco delle risorse non elaborate necessarie per controllare l'alimentazione nel dispositivo.
In risposta a questa notifica, il PEP fornisce l'elenco delle risorse non elaborate necessarie per controllare l'alimentazione del dispositivo. Il driver ACPI di Windows richiede questo elenco in modo che possa riservare le risorse di alimentazione richieste dal dispositivo e fornire l'elenco corrispondente di risorse tradotte al PEP (inviando una notifica di PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES). Per altre informazioni, vedere Risorse non elaborate e tradotte.
Per inviare una notifica di PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES, Il framework di risparmio energia di Windows (PoFx) chiama la routine di callback AcceptAcpiNotification di PEP. In questa chiamata il valore del parametro Notification è PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES e il parametro Data punta a una struttura PEP_ACPI_QUERY_DEVICE_CONTROL_RESOURCES.
Per una notifica di PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES, la routine AcceptAcpiNotification viene sempre chiamata in IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES
Notifica: valore PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES.
Dati: puntatore a una struttura PEP_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES che contiene l'elenco di risorse tradotte.
Fornisce al PEP un elenco di risorse tradotte per qualsiasi risorsa di controllo energia necessaria per il dispositivo.
Il framework di risparmio energia di Windows (PoFx) invia questa notifica se il PEP elenca tutte le risorse non elaborate in risposta alla notifica di PEP_NOTIFY_ACPI_QUERY_DEVICE_CONTROL_RESOURCES precedente. La notifica PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES fornisce al PEP l'elenco corrispondente di risorse tradotte. Per altre informazioni, vedere Risorse non elaborate e tradotte.
Per inviare una notifica di PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES, PoFx chiama la routine di callback AcceptAcpiNotification di PEP. In questa chiamata il valore del parametro Notification è PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES e il parametro Data punta a una struttura PEP_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES.
Per una notifica di PEP_NOTIFY_ACPI_TRANSLATED_DEVICE_CONTROL_RESOURCES, la routine AcceptAcpiNotification viene sempre chiamata in IRQL = PASSIVE_LEVEL.
PEP_NOTIFY_ACPI_WORK
Notifica: valore PEP_NOTIFY_ACPI_WORK.
Dati: puntatore a una struttura PEP_WORK.
Inviato al PEP una volta ogni volta che il PEP chiama la routine RequestWorker per richiedere un elemento di lavoro dal framework di risparmio energia di Windows (PoFx). Questa notifica viene utilizzata per il lavoro solo ACPI.
Dopo che il PEP chiama la routine RequestWorker per richiedere un elemento di lavoro, PoFx risponde inviando il PEP una notifica di PEP_NOTIFY_ACPI_WORK. Tuttavia, questa notifica non viene inviata fino a quando non sono disponibili le risorse (ovvero il thread di lavoro) necessario per elaborare l'elemento di lavoro. In questo modo, PoFx garantisce che la richiesta di lavoro che il PEP passa a PoFx durante la notifica non può mai non riuscire a causa della mancanza di risorse.
All'ingresso, il PEP deve presupporre che la struttura PEP_WORK non sia inizializzata. Per gestire questa notifica, il PEP deve impostare il membro WorkInformation in modo che punti a una struttura PEP_WORK_INFORMATION allocata da PEP che descrive il lavoro richiesto. Inoltre, il PEP deve impostare il membro NeedWork della struttura PEP_WORK su TRUE per verificare che il PEP abbia gestito la notifica PEP_NOTIFY_ACPI_WORK e che il membro WorkInformation punti a una struttura di PEP_WORK_INFORMATION valida. Se il PEP non riesce a gestire la notifica o non è in grado di allocare la struttura di PEP_WORK_INFORMATION, il PEP deve impostare il membro WorkInformation su NULL e impostare il membro NeedWork su FALSE.
Per una notifica di PEP_NOTIFY_ACPI_WORK, la routine AcceptAcpiNotification viene sempre chiamata in IRQL = PASSIVE_LEVEL.