PFNKSPINSETDEVICESTATE コールバック関数 (ks.h)
接続状態プロパティ 'set' IOCTL が到着したために KSPIN 構造体の状態が変更されると、AVStream ミニドライバーの 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を返さないでください。 フィルター 制御ミューテックスは、この関数の間に保持されます。 AVStream のフィルター 制御ミューテックスに関するページを参照してください。
注釈
ミニドライバーは、そのKSPIN_DISPATCH構造体の SetDeviceState メンバーで、このルーチンのアドレスを指定します。
ミニドライバーは、ピンの最初の接続時に停止を受け取りません。
標準トランスポート メカニズム (標準インターフェイス/標準メディア、または KSPIN_DESCRIPTOR_EXでのKSPIN_FLAG_USE_STANDARD_TRANSPORTの明示的な使用) を使用するピンは、このルーチンを介して所有パイプを介してフィルター処理された状態の変更を受け取ります。 これは、遷移が 1 つのステップを超えないことを意味します。 つまり、 KSSTATE_STOP はKSSTATE_ACQUIREに遷移 し、KSSTATE_ACQUIRE はKSSTATE_PAUSEに遷移します。 さらに、このルーチンで受け取った状態の変更は、KSPIN 構造体の DeviceState メンバーで報告されたピンの個々の状態ではなく、パイプ全体の状態を表します。
標準トランスポート メカニズム (非標準インターフェイス、非標準メディア、または KSPIN_DESCRIPTOR_EXでのKSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORTの明示的な使用) を使用しないピンは、このルーチンを介してフィルター処理されていない状態の変更を受け取ります。 そのため、1 ステップ以上ジャンプする状態の変更に対処するには、標準以外のトランスポート ピンを準備する必要があります。 たとえば、介入KSSTATE_PAUSEなしで 、KSSTATE_RUN から KSSTATE_STOP へのジャンプを考えてみましょう。 さらに、このルーチンに報告される状態は、関連する KSPIN 構造体の DeviceState メンバーで報告された状態と同じになります。
このルーチンは省略可能です。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Microsoft Windows XP 以降のオペレーティング システムおよび DirectX 8.0 以降の DirectX バージョンで使用できます。 |
対象プラットフォーム | デスクトップ |
Header | ks.h (Ks.h を含む) |
IRQL | PASSIVE_LEVEL |