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

另請參閱

KSPIN_DISPATCH