IPortDMus::Notify 方法 (dmusicks.h)

Notify发生硬件中断时,应从微型端口驱动程序的中断服务例程 (ISR) 调用 方法。 此调用请求端口驱动程序在微型端口驱动程序处理中断时,使用延迟过程调用 (DPC) 调用微型端口驱动程序。

语法

void Notify(
  [in, optional] PSERVICEGROUP ServiceGroup
);

参数

[in, optional] ServiceGroup

指向 IServiceGroup 对象的指针。 此参数是可选的,可以指定为 NULL。 有关更多信息,请参见下面的“备注”部分。

返回值

备注

方法 Notify 将通知发送到微型端口驱动程序的服务组:

  • 如果 pServiceGroup 参数为非 NULL,则Notify该方法在此参数指向的 IServiceGroup 对象上调用 RequestService 方法。
  • 如果 pServiceGroupNULL
    • 方法 Notify 在微型端口驱动程序的 IServiceGroup 对象上调用 RequestService 方法。 这是微型端口驱动程序在 IMiniportDMus::Init 调用期间输出的 IServiceGroup 对象。 微型端口驱动程序可能还提前注册了此对象, (即,早于通过调用 IPortDMus::RegisterServiceGroupInit) 返回。
    • 方法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 任何级别

另请参阅

IMXF::P utMessage

IMiniportDMus::Init

IMiniportDMus::NewStream

IPortDMus

IPortDMus::RegisterServiceGroup

IServiceGroup