Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ovladač WDF (Windows Driver Frameworks), který zpracovává přerušení hardwaru zařízení, musí vytvořit objekt přerušení architektury pro každé přerušení, které může každé zařízení podporovat. V rozhraní verze 1.11 a novějších verzích operačního systému windows 8 nebo novějších verzích mohou ovladače Kernel-Mode Driver Framework (KMDF) a User-Mode Driver Framework (UMDF) vytvářet objekty přerušení vyžadující pasivní zpracování. Pokud nepíšete ovladač pro systém na čipu (SoC), měl by váš ovladač používat objekty přerušení DIRQL.
Ovladač obvykle vytváří frameworkové objekty přerušení ve své EvtDriverDeviceAdd funkci zpětného volání. Ovladač může také vytvářet objekty přerušení ze své EvtDevicePrepareHardware funkci zpětného volání.
Architektura volá funkci zpětného volání ovladače EvtDriverDeviceAdd předtím, než správce plug and Play (PnP) přiřadí systémové prostředky, jako jsou vektory přerušení, k zařízení. Jakmile správce PnP přiřadí prostředky, rámec ukládá prostředky přerušení v objektu přerušení zařízení. (Ovladače, které nepodporují Plug and Play, nemohou používat objekty přerušení.)
Chcete-li vytvořit objekt přerušení rámce, ovladač musí inicializovat WDF_INTERRUPT_CONFIG strukturu a předat ji metodě WdfInterruptCreate.
UmDF podporuje následující typy přerušení:
- Úrovňově spouštěné (sdílené nebo výhradní)
- Aktivace na hraně (výhradně)
- MSI (výhradní podle definice)
Poznámka UMDF nepodporuje sdílená hraničně aktivovaná přerušení.
Počínaje verzí UMDF 2.15 podporuje UMDF přerušení pro jednoduchá zařízení, jako jsou hardwarová tlačítka, obvykle zazálohovaná špendlíky GPIO, které není možné explicitně povolit nebo zakázat pomocí hardwarových registrů. Aby bylo možné taková zařízení podporovat, musí ovladač UMDF používat exkluzivní hraničná přerušení.
Počínaje verzí KMDF 1.15 podporuje KMDF také přerušení těchto zařízení, a to bez alternativního řešení popsaného v tématu Zpracování Active-Both Přerušení.
Ovladač také v WDF_INTERRUPT_CONFIGposkytuje ukazatele na následující funkce zpětného volání událostí dodané ovladačem:
EvtInterruptEnable
Povolí hardwarové přerušení.
EvtInterruptDisable
Zakáže hardwarové přerušení.
EvtInterruptIsr
Přerušte rutinu služby (ISR) pro přerušení.
EvtInterruptDpc
Odložené volání procedury (DPC) pro přerušení.
EvtInterruptWorkItem
Pracovní položka pro přerušení na pasivní úrovni.
Pro ovladače používající verzi rozhraní 1.11 nebo novější na Windows 8 nebo novějších verzích operačního systému může ovladač explicitně nastavit nadřazený objekt přerušení, ať už DIRQL nebo pasivní, na objekt zařízení rozhraní nebo objekt fronty rozhraní. Pokud ovladač určuje nadřazený objekt, musí ovladač nastavit člen AutomaticSerialization struktury WDF_INTERRUPT_CONFIG na TRUE. (Vzpomeňte si, že pokud AutomaticSerialization je TRUE, architektura synchronizuje provádění EvtInterruptDpc nebo EvtInterruptWorkItem funkce zpětného volání s funkcemi zpětného volání z jiných objektů, které jsou pod nadřazeným objektem přerušení.)
Ovladač může například určit frontu jako nadřazenou položku přerušení, aby se zpětná volání fronty synchronizovala s EvtInterruptDpc nebo EvtInterruptWorkItem zpětné volání. V této konfiguraci architektura odstraní objekt fronty při odstranění objektu zařízení.
Po volání WdfInterruptCreatemůže ovladač volitelně volat WdfInterruptSetPolicy nebo WdfInterruptSetExtendedPolicy k zadání dalších parametrů přerušení. Ovladač obvykle volá tyto metody ze své zpětné volací funkce EvtDriverDeviceAdd.
Rámec automaticky odstraní přerušení před odstraněním nadřazeného objektu přerušení. Volitelně může ovladač zavolat WdfObjectDelete, aby odstranil přerušení dříve.
Podpora přerušení vyvolaná zprávami
Přerušení signalizovaná zprávou (MSI) jsou podporována počínaje systémem Windows Vista. Aby operační systém podporoval rozhraní MSI pro vaše zařízení, musí soubor INF ovladače nastavit některé hodnoty v registru. Informace o nastavení těchto hodnot naleznete v části Povolení Message-Signaled Přerušení v registru.
Ovladač by měl vytvořit objekt přerušení ze základního rozhraní pro každý vektor přerušení nebo zprávu MSI, kterou zařízení může podporovat. Pokud správce PnP nedodělí zařízení všechny přerušovací prostředky, které může zařízení podporovat, nebudou použity další objekty přerušení a jejich funkce zpětného volání nebudou volány.
Operační systém Windows 7 nepodporuje požadavky na prostředky pro více než 910 přerušovacích zpráv na jednu funkci zařízení. V systému Windows 8 operační systém nepodporuje žádosti o prostředky při více než 2048 přerušeních na jednu funkci zařízení.
Pokud ovladač zařízení překročí tento limit, může se stát, že se zařízení nespustí. Aby ovladač fungoval v počítači, který obsahuje mnoho logických procesorů, neměl by požadovat více než jedno přerušení na procesor.
Ovladač musí tolerovat, aniž by došlo k selhání, systém vyrovnávání prostředků přerušení, ve kterém správce PnP přiřadí zařízení jakoukoli sadu alternativních prostředků přerušení ze seznamu požadavků na prostředky. Zařízení může být například přiřazeno menšímu počtu přerušení zpráv, než požaduje ovladač. V nejhorším případě musí být ovladač připravený na provoz zařízení pouze s jediným přerušením založeným na lince.