Freigeben über


StreamClassQueryMasterClock-Funktion (strmini.h)

Wenn der Minidriver die StreamClassQueryMasterClock Routine aufruft, fragt der Klassentreiber den entsprechenden Zeitwert der Masteruhr asynchron ab und übergibt das Ergebnis an die routine, die im ClockCallbackRoutine Parameter ü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

Zeigen Sie auf eine HW_STREAM_OBJECT, die den Datenstrom angibt, der die Masteruhr abfragt. Der Datenstrom kann jeweils nur eine Abfrage ausstehen. Der Klassentreiber übergibt diesen Wert an den Rückruf im HwStreamObject Member des TimeContext Parameter des Rückrufs.

[in] MasterClockHandle

Gibt das Handle für die Masteruhr 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 Masteruhr abfragen soll. Mögliche Werte finden Sie unter HW_TIME_CONTEXT. Der Klassentreiber übergibt diesen Wert an den Rückruf im Function Member des TimeContext- Parameters.

[in] ClockCallbackRoutine

Gibt die Routine an, an die der Klassentreiber die Ergebnisse übergibt. Der Funktionsprototyp muss folgendes sein:

ClockCallbackRoutine(PHW_TIME_CONTEXT TimeContext);

Rückgabewert

Nichts

Bemerkungen

Der Klassentreiber fragt die Masteruhr ab und übergibt die Ergebnisse im TimeContext Parameter (vom Typ HW_TIME_CONTEXT) des Rückrufs. Insbesondere legt es den Time Member dieser Struktur auf den zeitwert fest, der im TimeFunction Parameter angefordert wird, die aktuelle Systemzeit im SystemTime Member derselben Struktur und die Geräteerweiterung des Minidrivers in der HwDeviceExtension Member dieser Struktur.

Der Klassentreiber verordnet die HW_TIME_CONTEXT Struktur ab, nachdem die Uhrrückrufroutine beendet wurde, sodass der Rückruf alle Informationen speichern muss, die der Minidriver beibehalten möchte. Zu diesem Zweck kann die Rückrufroutine entweder zuvor zugewiesenen Speicherplatz in der Geräteerweiterung des Minidrivers (TimeContext->HwDeviceExtension) oder die Streamerweiterung des Datenstroms verwenden, der die Masteruhr abgefragt hat (TimeContext->HwStreamObject->HwStreamExtension).

In seltenen Fällen wechselt der Graph-Manager die Masteruhr. Der Klassenfahrer macht eine Rennbedingung beim Umgang mit der neuen Masteruhr verfügbar. Wenn der Minidriver unmittelbar nach dem Empfangen einer neuen Uhr vom Klassentreiber eine Streamklassenmasteruhr-Routine aufruft, kann der Klassentreiber unerwartete Ergebnisse erzielen.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- strmini.h (einschließlich Strmini.h)
Library Stream.lib

Siehe auch

HW_TIME_CONTEXT

StrMiniReceiveStreamControlPacket

StreamClassQueryMasterClockSync-