IPortDMus::Notify 方法 (dmusicks.h)
Notify
发生硬件中断时,应从微型端口驱动程序的中断服务例程 (ISR) 调用 方法。 此调用请求端口驱动程序在微型端口驱动程序处理中断时,使用延迟过程调用 (DPC) 调用微型端口驱动程序。
语法
void Notify(
[in, optional] PSERVICEGROUP ServiceGroup
);
参数
[in, optional] ServiceGroup
指向 IServiceGroup 对象的指针。 此参数是可选的,可以指定为 NULL。 有关更多信息,请参见下面的“备注”部分。
返回值
无
备注
方法 Notify
将通知发送到微型端口驱动程序的服务组:
-
如果 pServiceGroup 参数为非 NULL,则
Notify
该方法在此参数指向的 IServiceGroup 对象上调用 RequestService 方法。 - 如果 pServiceGroup 为 NULL:
- 方法
Notify
在微型端口驱动程序的 IServiceGroup 对象上调用 RequestService 方法。 这是微型端口驱动程序在 IMiniportDMus::Init 调用期间输出的 IServiceGroup 对象。 微型端口驱动程序可能还提前注册了此对象, (即,早于通过调用 IPortDMus::RegisterServiceGroup 从 Init) 返回。 - 方法
Notify
还对属于每个微型端口驱动程序的流的 IServiceGroup 对象调用 RequestService 方法。 这是 IMiniportDMus::NewStream 方法输出的 IServiceGroup 对象。
- 方法
Notify
以通知端口驱动程序音频设备已生成硬件中断。 例如,当中断发出需要读取某些寄存器的信号时,微型端口驱动程序的 ISR 无法访问提升的 IRQL 上的 MXF (MIDI 转换筛选器) 图。 相反,微型端口驱动程序可以将输入数据存储 (一字节的 MIDI 数据,例如,从寄存器) ,调用 Notify
,然后等待端口驱动程序使用 DPC 返回到它。
当微型端口驱动程序的 ISR 调用 Notify
时,端口驱动程序在提升的硬件中断 IRQL 处接收通知,并将 DPC 置于队列中。 当 IRQL 下降到DISPATCH_LEVEL时,端口驱动程序的 DPC 会触发并为微型端口驱动程序提供服务。
在 DPC 中,端口驱动程序使用 NULL 参数在微型端口驱动程序的输入流上调用 IMXF::P utMessage,表示微型端口驱动程序现在可以将以前存储的 MIDI 消息放入 MXF 图,因为 IRQL 已回退到DISPATCH_LEVEL。
此方法对于准确计时至关重要。 大多数微型端口在清除中断源后会调用此方法以响应通知中断。 尽管微型端口驱动程序可以使用其他方法来确定何时调用此方法,但精确计时非常重要,应保持。
适配器驱动程序安装 ISR 时,它会提交 ServiceContext 参数以及 ISR 的入口点 (,有关详细信息,请参阅 提供 ISR 上下文信息) 。 发生中断时,操作系统会调用 ISR 并将 ServiceContext 作为调用参数传递给 ISR。 尽管 ServiceContext 参数的含义只有驱动程序开发人员才知道,但它通常是指向微型端口对象的指针。 ISR 使用此指针来访问有关微型端口对象的信息。
pServiceGroup 参数遵循 COM 对象的引用计数约定。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | dmusicks.h (包括 Dmusicks.h) |
IRQL | 任何级别 |