PFNKSPINSETDEVICESTATE 回调函数 (ks.h)

KSPIN 结构的状态因连接状态属性“set”IOCTL 的到来而更改时,将调用 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_FLAG_USE_STANDARD_TRANSPORT KSPIN_DESCRIPTOR_EX ) 通过自己的管道通过此例程接收筛选状态更改。 这意味着不会超过单步转换。 换句话说, 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 中可用。
目标平台 桌面
Header ks.h (包括 Ks.h)
IRQL PASSIVE_LEVEL

另请参阅

KSPIN_DISPATCH