Condividi tramite


Chiamata di IoCallDriver e chiamata di PoCallDriver

A partire da Windows Vista, un driver deve chiamare IoCallDriver invece di PoCallDriver, per passare i runtime di integrazione di alimentazione al driver inferiore successivo. In Windows Server 2003, Windows XP e Windows 2000, un driver deve chiamare PoCallDriver, non IoCallDriver, per passare i runtime di integrazione di alimentazione al driver inferiore successivo. Si noti, tuttavia, che i driver che usano lo stesso codice per l'esecuzione sia in Windows Vista che nelle versioni precedenti di Windows, devono chiamare PoCallDriver, non IoCallDriver.

A partire da Windows Vista, PoRequestPowerIrp e IoCallDriver assicurano che il risparmio energia sincronizzi correttamente i runtime di integrazione di alimentazione in tutto il sistema. In Windows Server 2003, Windows XP e Windows 2000, PoRequestPowerIrp, PoCallDriver e PoStartNextPowerIrp, assicurarsi che il risparmio energia sincronizzi correttamente i runtime di integrazione di alimentazione in tutto il sistema.

Il sistema limita il numero di runtime di integrazione di alimentazione attiva come indicato di seguito:

  • Non più di un IRP di alimentazione di sistema (IRP_MN_SET_POWER, IRP_MN_QUERY_POWER) può essere attivo per ogni oggetto dispositivo fisico (PDO) in qualsiasi momento.

  • Non è possibile attivare più di un IRP (IRP_MN_SET_POWER) del set di dispositivi per ogni PDO in qualsiasi momento.

  • Non più di un dispositivo power IRP che richiede un inrush di alimentazione può essere attivo ovunque nel sistema in qualsiasi momento.

Per assicurarsi che due dispositivi inrush non tentino di accendere contemporaneamente, il risparmio energia tiene traccia degli IRP attivi di alimentazione inrush nell'intero sistema e consente di attivarne solo uno alla volta. Un IRP aggiuntivo non può iniziare fino al completamento dell'IRP attivo.

A causa di queste restrizioni per i runtime di integrazione inrush, un IRP di alimentazione del dispositivo potrebbe bloccarsi mentre un IRP inrush per un altro dispositivo viene completato. I writer di driver devono essere consapevoli di questo comportamento durante il debug.