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


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

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

Синтаксис

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

Параметры

[in, optional] ServiceGroup

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

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

Отсутствует

Замечания

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

  • Если параметр 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.

При вызове NotifyISR драйвера минипорта драйвер порта получает уведомление при прерывании 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 (include Dmusicks.h)
IRQL Любой уровень

См. также

IMXF::P utMessage

IMiniportDMus::Init

IMiniportDMus::NewStream

IPortDMus

IPortDMus::RegisterServiceGroup

IServiceGroup