當 minidriver 呼叫 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 指標,指出正在查詢其主要時鐘的數據流。 數據流一次只能有一個查詢擱置中。 類別驅動程式會將此值傳遞至回呼 HwStreamObject 中 回呼 TimeContext 參數的成員。
[in] MasterClockHandle
指定正在查詢之主時鐘的句柄。 類別驅動程式會在SRB_INDICATE_MASTER_CLOCK要求中將此傳遞給minidriver的 StrMiniReceiveStreamControlPacket 例程。
[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結構,因此回呼必須儲存minidriver想要維護的任何資訊。 為此, 回呼例程可以在 minidriver 的裝置擴充功能中使用先前配置的空間(TimeContext->HwDeviceExtension),或查詢其主要時鐘之數據流的數據流延伸 (TimeContext->HwStreamObject->HwStreamExtension)。
在極少數情況下,圖形管理員會切換主要時鐘。 類別驅動程式會在處理新的主時鐘時公開競爭條件。 如果 minidriver 在收到類別驅動程式的新時鐘之後立即呼叫數據流類別主時鐘例程,則類別驅動程式可能會產生非預期的結果。
要求
| 要求 | 價值 |
|---|---|
| 目標平臺 | 桌面 |
| 標頭 | strmini.h (包括 Strmini.h) |
| 連結庫 | Stream.lib |