Odroczone wywołanie procedury (DPC) to mechanizm obsługi przerwań w systemie operacyjnym Microsoft Windows, do którego sterowniki mogą się odwoływać podczas wykonywania określonych procesów. DPC pozwala na aktywację zadania, ale nie wykonanie go, z poziomu priorytetów o wysokim priorytecie (IRQL). Pozwala to sterownikowi szybko przetworzyć procedurę obsługi przerwań wysokiego poziomu (ISR), odraczając wykonywanie kodów IRQL niższego poziomu. Sterowniki wykorzystują DPC do planowania operacji wejścia / wyjścia (We / Wy). Sterowniki to oprogramowanie używane przez system Windows do komunikacji z urządzeniami sprzętowymi.
Transfery
Sterownik urządzenia trybu jądra tradycyjnie obsługuje przesyłanie strumienia danych audio lub wideo z lub do urządzenia zewnętrznego. Przetwarzanie danych sterowników urządzeń jest sterowane przerwaniami. Sprzęt zewnętrzny rutynowo generuje przerwania, aby zażądać od sterownika urządzenia przesłania następnej partii danych. Sterownik urządzenia nie może natychmiast przetworzyć danych w swojej procedurze przerwań; w związku z tym system operacyjny musi wywoływać procedurę zwrotną, którą jest DPC. Tryb jądra, tryb systemowy i tryb użytkownika są trybami działania centralnej jednostki przetwarzania. Jądro kontroluje wszystkie działania związane z przetwarzaniem systemu.
Planowanie
Koncepcja odroczonego wywołania procedury istnieje tylko w trybie jądra. System operacyjny utrzymuje harmonogramy DPC przez sterowniki urządzeń w kolejce. Jeśli twój system musi przetwarzać przerwania, jądro sprawdza kolejkę DPC i wykonuje pierwszy DPC, jeśli nie ma przerwania ani procesów DPC. DPC to najwyższy priorytetowy wątek w systemie, ponieważ przetwarzanie kolejki DPC ma miejsce, zanim dyspozytor wybierze wątek i przydzieli to procesorowi. DPC mają trzy poziomy priorytetów: niski, średni i wysoki.
Procesy
Każdy DPC jest połączony z jednym zdefiniowanym przez system obiektem DPC. Kiedy sterownik rejestruje procedurę DPCForslr, system inicjuje wcześniej zdefiniowany obiekt DPC. Jeśli wymagany jest więcej niż jeden DPC, sterownik tworzy dodatkowe obiekty DPC znane jako procedury CustomDPC. Procedura DPCForlsr obsługuje kilka procesów; kończy operację I / O opisaną przez pakiety żądań wejścia / wyjścia (IRP), zapisuje następny IRP, ustawia status wejścia / wyjścia w odebranym IRP i proces, aby zakończyć żądanie.
Procedury
Zwykle sterownik urządzenia, który ma procedurę obsługi przerwań, ma co najmniej jedną procedurę DPCForIsr lub CustomDPC, aby zakończyć przetwarzanie operacji we / wy sterowanych przerwań. Według Open Systems Resources, Inc., podstawowy powód, dla którego sterownik ma jedną procedurę DPCForlsr, zestaw procedur CustomDPC lub oba, zależy od natury urządzenia bazowego i zestawu żądań We / Wy, które musi obsługiwać. ISR kierowcy musi wywołać IoRequestDPC dla operacji we / wy sterowanych przerwań przy użyciu procedur DPCForlsr. Odwrotnie, w przypadku nakładających się operacji, operacjami we / wy sterowanymi przerwań z wykorzystaniem procedur CustomDPC, ISR musi wywołać KeInsertQueueDPC.