IPortDMus::Notify 方法 (dmusicks.h)

发生硬件中断时,应从微型端口驱动程序的中断服务例程(ISR)调用 Notify 方法。 此调用请求端口驱动程序使用延迟的过程调用(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::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 中,端口驱动程序在微型端口驱动程序的输入流上调用 IMXF::P utMessage,参数为 NULL,以表示微型端口驱动程序现在可以将以前存储的 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