Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli sterownik obsługuje przerwania urządzenia, musi zapewnić funkcje wywołania zwrotnego EvtInterruptEnable i EvtInterruptDisable, które włączają i wyłączają przerwania. Zazwyczaj te funkcje wywołania zwrotnego są uruchamiane na poziomie DIRQL urządzenia i muszą robić wszystko, co jest konieczne, aby włączyć i wyłączyć mechanizm przerwania urządzenia. W przypadku przerwań na poziomie pasywnym te funkcje wywołania zwrotnego działają na poziomie IRQL = PASSIVE_LEVEL, przy zachowaniu blokady przerwania na poziomie pasywnym.
Jeśli sterownik musi wykonywać dodatkowe operacje związane z włączaniem lub wyłączaniem przerwań, i nie można wykonać tych dodatkowych operacji przy IRQL = DIRQL, sterownik może również zapewnić funkcję wywołania zwrotnego EvtDeviceD0EntryPostInterruptsEnabled oraz EvtDeviceD0ExitPreInterruptsDisabled. Te dwie funkcje wywołania zwrotnego działają na poziomie IRQL = PASSIVE_LEVEL bez blokady przerwania i mogą korzystać z metod obiektów struktury, które są niedostępne na poziomie IRQL = DIRQL.
Struktura wywołuje EvtInterruptEnable i EvtDeviceD0EntryPostInterruptsEnabled funkcje wywołania zwrotnego za każdym razem, gdy urządzenie przechodzi w stan pracy (D0), po wywołaniu przez strukturę funkcji wywołania zwrotnego EvtDeviceD0Entry.
Struktura wywołuje funkcje zwrotne sterownika EvtDeviceD0ExitPreInterruptsDisabled i EvtInterruptDisable za każdym razem, gdy urządzenie opuszcza stan roboczy, zanim struktura wywoła funkcję zwrotną EvtDeviceD0Exit. Aby uzyskać więcej informacji na temat tego, kiedy framework wywołuje funkcje zwrotne sterownika, zobacz PnP i Power Management Scenarios.
Nie należy zakładać, że urządzenie będzie używało tych samych zasobów przerwań za każdym razem, gdy framework wywołuje funkcję wywołania zwrotnego EvtInterruptEnable. Czasami menedżer PnP redystrybuuje zasoby systemowe i może przypisać nowe zasoby przerwania do twojego urządzenia.
Sterownik może wywołać WdfInterruptGetInfo w celu określenia zasobów przerwania urządzenia. Sterownik może wywołać WdfInterruptGetDevice, aby ustalić, do którego urządzenia należy obiekt przerwania. (Kilka sterowników może wywołać WdfInterruptWdmGetInterrupt.)
Aby włączyć i wyłączyć przerwania bezpośrednio, sterownik może wywołać metody obiektu przerwań: WdfInterruptEnable i WdfInterruptDisable. Te metody wywołują odpowiednio funkcje wywołania zwrotnego zdarzeń sterownika: EvtInterruptEnable i EvtInterruptDisable. Jednak większość sterowników powinna pozwolić, aby framework wywoływał funkcje zwrotne EvtInterruptEnable i EvtInterruptDisable w odpowiednich momentach.