StreamClassQueryMasterClock-Funktion (strmini.h)
Wenn der Minidriver die StreamClassQueryMasterClock-Routine aufruft, fragt der Klassentreiber den entsprechenden Zeitwert der master Uhr asynchron ab und übergibt das Ergebnis an die Routine, die im Parameter ClockCallbackRoutine übergeben wird.
Syntax
void StreamClassQueryMasterClock(
[in] PHW_STREAM_OBJECT HwStreamObject,
[in] HANDLE MasterClockHandle,
[in] TIME_FUNCTION TimeFunction,
[in] PHW_QUERY_CLOCK_ROUTINE ClockCallbackRoutine
);
Parameter
[in] HwStreamObject
Zeiger auf einen HW_STREAM_OBJECT, der den Datenstrom angibt, der seine master Uhr abfragt. Für den Stream ist möglicherweise nur eine Abfrage gleichzeitig ausstehend. Der Klassentreiber übergibt diesen Wert an den Rückruf im HwStreamObject-Member des TimeContext-Parameters des Rückrufs.
[in] MasterClockHandle
Gibt das Handle für die master Uhr an, die abgefragt wird. Der Klassentreiber übergibt dies in der SRB_INDICATE_MASTER_CLOCK-Anforderung an die StrMiniReceiveStreamControlPacket-Routine des Minidrivers.
[in] TimeFunction
Gibt an, für welche Zeitfunktion die master Uhr abfragt werden soll. Die möglichen Werte finden Sie unter HW_TIME_CONTEXT . Der Klassentreiber übergibt diesen Wert an den Rückruf im Funktionsmember des TimeContext-Parameters .
[in] ClockCallbackRoutine
Gibt die Routine an, an die der Klassentreiber die Ergebnisse übergibt. Der Funktionsprototyp muss wie folgt sein:
ClockCallbackRoutine(PHW_TIME_CONTEXT TimeContext);
Rückgabewert
Keine
Bemerkungen
Der Klassentreiber fragt die master Uhr ab und übergibt die Ergebnisse im TimeContext-Parameter (vom Typ HW_TIME_CONTEXT) des Rückrufs. Insbesondere wird der Time-Member dieser Struktur auf den im TimeFunction-Parameter angeforderten Zeitwert, die aktuelle Systemzeit im SystemTime-Member derselben Struktur und die Geräteerweiterung des Minidrivers im HwDeviceExtension-Element dieser Struktur festgelegt.
Der Klassentreiber verwaltet die HW_TIME_CONTEXT-Struktur, nachdem die Rückrufroutine für die Uhr beendet wurde, sodass der Rückruf alle Informationen speichern muss, die der Minitreiber verwalten möchte. Zu diesem Zweck kann die Rückrufroutine entweder den zuvor zugewiesenen Speicherplatz in der Geräteerweiterung des Minidrivers (TimeContext-HwDeviceExtension>) oder der Streamerweiterung des Datenstroms verwenden, der seine master Uhr abgefragt hat (TimeContext-HwStreamObject-HwStreamExtension>).>
In seltenen Fällen wechselt der Graph-Manager die master Uhr. Der Klassenfahrer macht beim Umgang mit der neuen master Uhr eine Rennbedingung verfügbar. Wenn der Minitreiber eine Streamklasse master Taktroutine aufruft, unmittelbar nachdem er eine neue Uhr vom Klassentreiber empfangen hat, kann der Klassentreiber zu unerwarteten Ergebnissen führen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | strmini.h (include Strmini.h) |
Bibliothek | Stream.lib |