共用方式為


AVStream 中的裝置 Mutex

使用裝置 Mutex 來同步樹狀結構中的物件,從裝置依序向下到篩選器。 每個AVStream裝置都有單一相關聯的裝置 Mutex。 篩選處理站和篩選的建立和銷毀都會與這個 Mutex 同步處理。 某些隨插即用和電源管理作業也會與這個 Mutex 同步處理。 minidriver 著重於裝置 Mutex 的兩個主要問題。

如果保留裝置 Mutex,物件階層保證 只能 從裝置穩定到個別篩選。 因此,minidriver 必須先取得裝置 Mutex,才能藉由呼叫 KsCreateFilterFactory 手動建立篩選處理站。 minidriver 也必須在周遊物件階層之前先取得裝置的 Mutex,方法是呼叫 KsXxxGetFirstChildXxxKsXxxGetNextSiblingXxx 函式。

AVStream 會在收到下列要求時,代表 minidriver 保留裝置 Mutex:

請務必注意,裝置的 mutex 無法以遞歸方式取得。 請考慮下列範例。 AVStream 會收到睡眠通知。 如上所述,它會代表迷你驅動程式取得裝置 Mutex。 如果 AVStream 然後在執行緒 A 的上下文中呼叫 minidriver 提供的回呼例程,minidriver 接著不得嘗試在執行緒 A 中取得裝置 mutex。這樣做會導致執行緒 A 自行死結。

AVStream 通常會在裝置 Mutex 已保留時取得篩選控件 Mutex。 因此,一般規則是,採用篩選控件 Mutex 的線程不應該後續採用裝置 Mutex。

要操作裝置互斥鎖,請使用下列函式:

KsAcquireDeviceKsReleaseDevice