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) 通过此例程的自有管道接收筛选状态更改。 这意味着,没有一个转换将超过一个步骤。 换句话说, KSSTATE_STOP 转换到 KSSTATE_ACQUIRE,KSSTATE_ACQUIRE 转换到KSSTATE_PAUSE,等等。 此外,在此例程中收到的状态更改表示整个管道的状态,而不是 KSPIN 结构的 DeviceState 成员中报告的引脚的各个状态。

不使用标准传输机制的引脚 (非标准接口、非标准介质,或在 KSPIN_DESCRIPTOR_EX 中显式使用KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT,) 通过此例程接收非筛选状态更改。 因此,非标准传输引脚必须准备好处理跳跃不止一个步骤的状态更改。 例如,考虑在没有干预KSSTATE_PAUSE的情况下从KSSTATE_RUN跳转到KSSTATE_STOP。 此外,向此例程报告的状态将与相关 KSPIN 结构的 DeviceState 成员中报告的状态相同。

此例程是可选的。

要求

要求
最低受支持的客户端 适用于 Microsoft Windows XP 及更高版本的操作系统以及 DirectX 8.0 及更高版本的 DirectX。
目标平台 桌面
标头 ks.h (包括 Ks.h)
IRQL PASSIVE_LEVEL

另请参阅

KSPIN_DISPATCH