Bereitstellen von Ereignisbenachrichtigungen
Der WIA-Dienst benachrichtigt einen WIA-Minidriver über ein unterstütztes Geräteereignis, indem er die IWiaMiniDrv::d rvNotifyPnpEvent-Methode aufruft . Bei dieser Methode implementiert der Minidriver die gerätespezifische Funktionalität, die zum Reagieren auf das Ereignis erforderlich ist. Der WIA-Dienst ruft die IWiaMiniDrv::d rvNotifyPnpEvent-Methode nur für ein Ereignis auf, das der Minitreiber angegeben hat, dass das Gerät in der IWiaMiniDrv::d rvGetCapabilities-Methode unterstützt werden kann.
Der Minidriver initiiert ein Ereignis entweder über den STI-Ereignismechanismus oder mithilfe von wiasQueueEvent , um der Ereigniswarteschlange eine Ereignisbenachrichtigung von diesem Gerät hinzuzufügen.
Asynchrones Verhalten: Energieverwaltung und E/A-Abbruch
In den meisten Fällen stellt der WIA-Dienst sicher, dass jeweils nur ein Aufruf an den Treiber erfolgt. Einige Methoden sind jedoch von Natur aus asynchron und reentrant. Ein gutes Beispiel hierfür ist die IWiaMiniDrv::d rvNotifyPnpEvent-Methode .
Der WIA-Dienst verwendet diese Methode, um den Treiber über Ereignisse zu benachrichtigen, die möglicherweise sofortige Maßnahmen erfordern. Wenn der WIA-Dienst beispielsweise ein Plug & Play-Ereignis empfängt, das angibt, dass das Gerät entfernt wurde, wird der Treiber sofort benachrichtigt. Weitere Beispiele sind Energieverwaltungsereignisse und E/A-Abbruchanforderungen von Anwendungen.
Eine Beispielimplementierung der IWiaMiniDrv::d rvNotifyPnpEvent-Methode , die veranschaulicht, wie sie auf verschiedene Arten von Ereignissen reagieren sollte, finden Sie unter Hinzufügen der Interruptereignisunterstützung.