鎖定和解除鎖定串流指標
每個資料流指標都會維持鎖定狀態:鎖定或解除鎖定。
鎖定的數據流指標保證會引用佇列中的數據。 無法取消鎖定數據流指標所指向的數據框架。 因此,迷你驅動程式應該將花費在持有鎖定串流指標的時間降到最低。
未鎖定的流指標不保證會引用佇列中的資料框。 藉由持有解除鎖定的數據流指標,minidriver 可以保留數據指標,但仍允許取消框架。
可以存取由已解除鎖定的流指標所指向的資料。 您在 KsStreamPointerClone 中提供的 CancelCallback 例程如果呼叫 KsStreamPointerDelete,則應該同步處理 CancelCallback 及其執行的任何數據存取。 迷你驅動程式必須確保取消回呼例程不會在另一個線程使用它時刪除數據流指標。
如果取消回呼例程未呼叫 KsStreamPointerDelete,則可能不需要同步處理。
若要鎖定資料流指標,請呼叫 KsStreamPointerLock。 若要解除鎖定資料流指標,請呼叫 KsStreamPointerUnlock。
取消 IRP 時,AVStream 會呼叫指向 IRP 內框架的所有未鎖定數據流指標的取消回呼函數。
只有在開頭和尾端邊緣數據流指標未使用時,才能解除鎖定。