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 |