Метод 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 | Любой уровень |