次の方法で共有


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

こちらもご覧ください

KSPIN_DISPATCH