IPortDMus::Notify-Methode (dmusicks.h)
Die Notify
-Methode sollte von der Interrupt-Dienstroutine (ISR) des Miniporttreibers aufgerufen werden, wenn ein Hardwareunterbrechung aufgetreten ist. Dieser Aufruf fordert an, dass der Porttreiber den Miniporttreiber mit einem verzögerten Prozeduraufruf (DPC) zurückruft, während der Miniporttreiber den Interrupt verarbeitet.
Syntax
void Notify(
[in, optional] PSERVICEGROUP ServiceGroup
);
Parameter
[in, optional] ServiceGroup
Zeiger auf ein IServiceGroup--Objekt. Dieser Parameter ist optional und kann als NULL-angegeben werden. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
Rückgabewert
Nichts
Bemerkungen
Die Notify
-Methode sendet Benachrichtigungen an die Dienstgruppe des Miniporttreibers:
-
Wenn der pServiceGroup Parameter nichtNULL-ist, ruft die
Notify
-Methode die RequestService-Methode für das IServiceGroup Objekt auf, auf das dieser Parameter verweist. - Wenn pServiceGroup-NULL-ist:
- Die
Notify
-Methode ruft die RequestService--Methode für das IServiceGroup--Objekt des Miniporttreibers auf. Dies ist das IServiceGroup Objekt, das der Miniporttreiber während des Aufrufs IMiniportDMus::Init ausgegeben wird. Der Miniporttreiber hat dieses Objekt möglicherweise auch früh registriert (d. h. früher als die Rückgabe von Init), indem IPortDMus::RegisterServiceGroupaufgerufen wird. - Die
Notify
-Methode ruft auch die RequestService-Methode für das IServiceGroup- Objekt auf, das zu den einzelnen Datenströmen des Miniporttreibers gehört. Dies ist das IServiceGroup--Objekt, das vom IMiniportDMus::NewStream-Methode ausgegeben wird.
- Die
Notify
auf, um den Porttreiber zu benachrichtigen, dass das Audiogerät einen Hardwareunterbrechung generiert hat. Wenn beispielsweise ein Interrupt signalisiert, dass einige Register gelesen werden müssen, kann der ISR des Miniporttreibers nicht auf das MXF-Diagramm (MIDI-Transformationsfilter) im IRQL mit erhöhten Rechten zugreifen. Stattdessen kann der Miniporttreiber die Eingabedaten (z. B. ein Byte von MIDI-Daten) aus dem Register speichern, Notify
aufrufen und warten, bis der Porttreiber mit einem DPC wieder darauf zurückkommt.
Wenn der ISR des Miniporttreibers Notify
aufruft, empfängt der Porttreiber die Benachrichtigung an der IRQL mit erhöhten Rechten und fügt einen DPC in die Warteschlange ein. Wenn IRQL auf die DISPATCH_LEVEL fällt, löst der DPC des Porttreibers aus und bezieht den Miniporttreiber.
Innerhalb des DPC ruft der Porttreiber IMXF::P utMessage- für den Eingabedatenstrom des Miniporttreibers mit einem Parameter von NULL- auf, um zu kennzeichnen, dass der Miniporttreiber die zuvor gespeicherte MIDI-Nachricht jetzt in das MXF-Diagramm einfügen kann, da der IRQL wieder auf DISPATCH_LEVEL zurückgesetzt wurde.
Diese Methode ist für die genaue Anzeigedauer von entscheidender Bedeutung. Die meisten Miniports rufen diese Methode als Reaktion auf einen Benachrichtigungsunterbruch auf, nachdem die Unterbrechungsquelle gelöscht wurde. Obwohl der Miniporttreiber frei ist, andere Methoden zu verwenden, um zu bestimmen, wann diese Methode aufgerufen werden soll, ist eine genaue Anzeigedauer wichtig und sollte beibehalten werden.
Wenn ein Adaptertreiber einen ISR installiert, sendet er einen ServiceContext Parameter zusammen mit dem Einstiegspunkt des ISR (ausführliche Informationen finden Sie unter Bereitstellen von ISR-Kontextinformationen). Wenn der Interrupt auftritt, ruft das Betriebssystem den ISR auf und übergibt ServiceContext als Aufrufparameter an den ISR. Obwohl die Bedeutung des ServiceContext Parameter nur für den Treiberentwickler bekannt ist, handelt es sich in der Regel um einen Zeiger auf das Miniportobjekt. Der ISR verwendet diesen Zeiger, um auf Informationen zum Miniport-Objekt zuzugreifen.
Der pServiceGroup-parameter folgt den Konventionen für die Verweiszählung von COM-Objekten.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | dmusicks.h (include Dmusicks.h) |
IRQL- | Beliebige Ebene |