次の方法で共有


StreamClassQueryMasterClock 関数 (strmini.h)

ミニドライバーが StreamClassQueryMasterClock ルーチンを呼び出すと、クラス ドライバーはマスター クロックの適切な時間値を非同期的に照会し、ClockCallbackRoutine パラメーターで渡されたルーチンに結果を渡します。

構文

void StreamClassQueryMasterClock(
  [in] PHW_STREAM_OBJECT       HwStreamObject,
  [in] HANDLE                  MasterClockHandle,
  [in] TIME_FUNCTION           TimeFunction,
  [in] PHW_QUERY_CLOCK_ROUTINE ClockCallbackRoutine
);

パラメーター

[in] HwStreamObject

マスター クロックを照会しているストリームを示す HW_STREAM_OBJECT へのポインター。 ストリームには、一度に保留中のクエリが 1 つだけ含まれる場合があります。 クラス ドライバーは、コールバックの TimeContext パラメーターのメンバー HwStreamObject 内のコールバックにこの値を渡します。

[in] MasterClockHandle

クエリを実行するマスター クロックのハンドルを指定します。 クラス ドライバーは、ミニドライバーの StrMiniReceiveStreamControlPacket ルーチンにSRB_INDICATE_MASTER_CLOCK要求でこれを渡します。

[in] TimeFunction

マスター クロックに対してクエリを実行する時間関数を指定します。 使用可能な値については、HW_TIME_CONTEXT を参照してください。 クラス ドライバーは、TimeContext パラメーターのメンバー 関数のコールバックにこの値を渡します。

[in] ClockCallbackRoutine

クラス ドライバーが結果を渡すルーチンを指定します。 関数プロトタイプは次のようにする必要があります。

ClockCallbackRoutine(PHW_TIME_CONTEXT TimeContext);

戻り値

何一つ

備考

クラス ドライバーはマスター クロックに対してクエリを実行し、コールバックの TimeContext パラメーター (HW_TIME_CONTEXT型) に結果を渡します。 特に、この構造体の Time メンバーを、TimeFunction パラメーターで要求された時刻値、同じ構造体の SystemTime メンバー内の現在のシステム時刻、およびその構造体の HwDeviceExtension メンバー内のミニドライバーのデバイス拡張機能に設定します。

クラス ドライバーは、クロック コールバック ルーチンが終了した後にHW_TIME_CONTEXT構造体の割り当てを解除するため、コールバックは、ミニドライバーが保持する必要がある情報を格納する必要があります。 そのため、コールバック ルーチンは、ミニドライバーのデバイス拡張機能 (TimeContext->HwDeviceExtension) またはマスター クロックを照会したストリームのストリーム拡張 (TimeContext->HwStreamObject->HwStreamExtension) のいずれかで、以前に割り当てられた領域を使用できます。

まれに、グラフ マネージャーがマスター クロックを切り替えます。 クラス ドライバーは、新しいマスター クロックを処理する競合状態を公開します。 ミニドライバーは、クラス ドライバーから新しいクロックを受信した直後にストリーム クラス マスター クロック ルーチンを呼び出す場合、クラス ドライバーが予期しない結果を生成する可能性があります。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー strmini.h (Strmini.h を含む)
ライブラリ Stream.lib

関連項目

HW_TIME_CONTEXT

StrMiniReceiveStreamControlPacket

StreamClassQueryMasterClockSync