Wprowadzenie do kontrolerów DPC

Każdy sterownik, który ma isR, zwykle ma co najmniej jedną procedurę DpcForIsr lub CustomDpc w celu ukończenia przetwarzania operacji we/wy opartych na przerwaniach. Typowa procedura DpcForIsr lub CustomDpc sterownika najniższego poziomu wykonuje następujące czynności:

  • Kończy obsługę operacji we/wy, którą proces ISR rozpoczął przetwarzanie.

  • Usuwa z kolejki następne zgłoszenie IRP, aby sterownik mógł rozpocząć jego przetwarzanie.

  • Jeśli to możliwe, ukończy bieżącą IRP.

Czasami nie można ukończyć bieżącego protokołu IRP, ponieważ wymagane jest kilka transferów danych lub wykryto błąd możliwy do odzyskania. W takich przypadkach rutynowa DpcForIsr lub CustomDpc zwykle ponownie programuje urządzenie do innego transferu lub ponawia próbę ostatniej operacji.

Procedury DpcForIsr lub CustomDpc są wywoływane w dowolnym kontekście DPC w DISPATCH_LEVEL IRQL. Uruchamianie na DISPATCH_LEVEL ogranicza zestaw funkcji pomocniczych, które może wywołać procedura DpcForIsr lub CustomDpc. Aby uzyskać więcej informacji, zobacz Zarządzanie priorytetami sprzętu .

Obiekty DPC i kontrolery DPC mogą być również używane z czasomierzami. Aby uzyskać więcej informacji, zobacz Timer Objects and DPCs.