Delen via


IoCallDriver aanroepen versus Bellen met PoCallDriver

Vanaf Windows Vista moet een stuurprogramma IoCallDriver aanroepen in plaats van PoCallDriverom stroom-IRP's door te geven aan het eerstvolgende lagere stuurprogramma. In Windows Server 2003, Windows XP en Windows 2000 moet een stuurprogramma PoCallDriveraanroepen, niet IoCallDriver, om energie-IRP's door te geven aan het volgende lagere stuurprogramma. Houd er echter rekening mee dat stuurprogramma's die dezelfde code gebruiken om zowel in Windows Vista als in eerdere Windows-versies uit te voeren, PoCallDriver-moeten aanroepen, niet IoCallDriver-.

Vanaf Windows Vista zorgen PoRequestPowerIrp en IoCallDriver ervoor dat de power IRPs correct worden gesynchroniseerd in het hele systeem. In Windows Server 2003, Windows XP en Windows 2000, PoRequestPowerIrp, PoCallDriveren PoStartNextPowerIrp, zorgt u ervoor dat power IRPs correct worden gesynchroniseerd in het hele systeem.

Het systeem beperkt het aantal actieve vermogen-IRP's als volgt:

  • Niet meer dan één systeemstroom-IRP (IRP_MN_SET_POWER, IRP_MN_QUERY_POWER) kan op elk gewenst moment actief zijn voor elk fysiek apparaatobject (PDO).

  • Er kunnen niet meer dan één apparaatset-IRP (IRP_MN_SET_POWER) op elk gewenst moment actief zijn voor elke PDO.

  • Niet meer dan één apparaatstroom-IRP waarvoor een aanloopstroom vereist is, kan op elk moment ergens in het systeem actief zijn.

Om ervoor te zorgen dat twee inborstelapparaten niet tegelijkertijd proberen te worden geactiveerd, houdt de power manager actieve inrush power IRPs in het hele systeem bij en kan er slechts één tegelijk actief zijn. Een extra inrush IRP kan pas worden gestart als de actieve inrush IRP is voltooid.

Vanwege deze beperkingen voor inrush IRPs kan een apparaatstroom-IRP blokkeren terwijl een inrush-IRP voor een ander apparaat is voltooid. Schrijvers van stuurprogramma's moeten zich bewust zijn van dit gedrag tijdens foutopsporing.