次の方法で共有


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 パラメーターの Function メンバーのコールバックにこの値を渡します。

[in] ClockCallbackRoutine

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

ClockCallbackRoutine(PHW_TIME_CONTEXT TimeContext);

戻り値

なし

解説

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

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

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

要件

要件
対象プラットフォーム デスクトップ
Header strmini.h (Strmini.h を含む)
Library Stream.lib

こちらもご覧ください

HW_TIME_CONTEXT

StrMiniReceiveStreamControlPacket

StreamClassQueryMasterClockSync