PFNKSPINSETDEVICESTATE 回呼函式 (ks.h)
當 KSPIN 結構的狀態因為連線狀態屬性 'set' IOCTL 的抵達而變更時,會呼叫 AVStream minidriver 的 AVStrMiniPinSetDeviceState 例程。 這通常是由需要變更硬體狀態的迷你驅動程式所提供。
語法
PFNKSPINSETDEVICESTATE Pfnkspinsetdevicestate;
NTSTATUS Pfnkspinsetdevicestate(
[in] PKSPIN Pin,
[in] KSSTATE ToState,
[in] KSSTATE FromState
)
{...}
參數
[in] Pin
要變更狀態的 KSPIN 結構的指標。
[in] ToState
收到IOCTL之後的目標 KSSTATE 。
[in] FromState
先前 的 KSSTATE。
傳回值
傳回STATUS_SUCCESS或從嘗試設定狀態傳回的錯誤碼。 請勿傳回STATUS_PENDING。 篩選控制件 Mutex 會在此函式期間保留。 請參閱 AVStream 中的篩選控件 Mutex。
備註
minidriver 會在其KSPIN_DISPATCH結構的 SetDeviceState 成員中指定此例程的位址。
Minidrivers 不會在針腳的初始連線時收到停止。
使用標準傳輸機制的針腳 (標準介面/標準媒體,或在 KSPIN_DESCRIPTOR_EX中明確 使用KSPIN_FLAG_USE_STANDARD_TRANSPORT,) 透過擁有管道透過此例程接收篩選的狀態變更。 這表示沒有轉換超過單一步驟。 換句話說, KSSTATE_STOP 轉換成KSSTATE_ACQUIRE、 KSSTATE_ACQUIRE 轉換成KSSTATE_PAUSE等等。 此外,在此例程中收到的狀態變更代表管道整體的狀態,而不是 KSPIN 結構的 DeviceState 成員所報告的針腳個別狀態。
不使用標準傳輸機制的針腳 (非標準介面、非標準媒體,或明確使用KSPIN_DESCRIPTOR_EX) 透過此例程接收非篩選狀態變更的KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT。 因此,必須準備好非標準傳輸針腳來處理跳躍超過單一步驟的狀態變更。 例如,請考慮從 KSSTATE_RUN 跳到 KSSTATE_STOP ,而不需介入KSSTATE_PAUSE。 此外,報告給此例程的狀態會與相關 KSPIN 結構的 DeviceState 成員中所報告的狀態相同。
此例程是選擇性的。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Microsoft Windows XP 和更新版本的作業系統和 DirectX 8.0 和更新版本的 DirectX 版本。 |
目標平台 | 桌面 |
標頭 | ks.h (包含 Ks.h) |
IRQL | PASSIVE_LEVEL |