Поделиться через


Метод IPortDMus::Notify (dmusicks.h)

Метод Notify должен вызываться из подпрограммы обслуживания прерываний (ISR) драйвера мини-порта, когда произошло прерывание оборудования. Этот вызов запрашивает, чтобы драйвер порта обратно вызвал драйвер минипорта с отложенным вызовом процедуры (DPC), в то время как драйвер минипорта обрабатывает прерывание.

Синтаксис

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

Параметры

[in, optional] ServiceGroup

Указатель на объект IServiceGroup . Этот параметр является необязательным и может быть указан как NULL. Дополнительные сведения см. в разделе "Примечания".

Возвращаемое значение

None

Remarks

Метод Notify отправляет уведомление в группу служб водителя мини-порта:

  • Если параметр pServiceGroup не равен NULL, Notify метод вызывает метод RequestService для объекта IServiceGroup , на который указывает этот параметр.
  • Если pServiceGroup имеет значение NULL:
    • Метод Notify вызывает метод RequestService для объекта IServiceGroup драйвера мини-порта. Это объект IServiceGroup , который драйвер мини-порта выводит во время вызова IMiniportDMus::Init . Драйвер мини-порта также мог зарегистрировать этот объект раньше (то есть раньше, чем возврат из init), вызвав IPortDMus::RegisterServiceGroup.
    • Метод Notify также вызывает метод RequestService для объекта IServiceGroup , относящегося к каждому из потоков драйвера мини-порта. Это объект IServiceGroup , который выводит метод IMiniportDMus::NewStream .
Драйвер мини-порта обычно вызывает Notify , чтобы уведомить драйвер порта о том, что звуковое устройство создало аппаратное прерывание. Например, когда прерывание сигнализирует о необходимости чтения какого-то регистра, ISR драйвера минипорта не может получить доступ к графу MXF (фильтр преобразования MIDI) на irQL с повышенными привилегиями. Вместо этого драйвер мини-порта может хранить входные данные (например, байт данных 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 известно только разработчику драйвера, обычно это указатель на объект miniport. ISR использует этот указатель для доступа к сведениям об объекте miniport.

Параметр pServiceGroup соответствует соглашениям о подсчете ссылок для COM-объектов.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть dmusicks.h (включая Dmusicks.h)
IRQL Любой уровень

См. также раздел

IMXF::P utMessage

IMiniportDMus::Init

IMiniportDMus::NewStream

IPortDMus

IPortDMus::RegisterServiceGroup

IServiceGroup