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 |