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


Интерфейс IPortEvents (portcls.h)

Интерфейс IPortEvents используется мини-драйверами для уведомления клиентов о событиях оборудования. В Windows 98/Me и Windows 2000 и более поздних версий все драйверы портов в portcls.sys реализуют этот интерфейс и предоставляют его мини-драйверам. Чтобы определить, поддерживает IPortEvents ли драйвер порта интерфейс, драйвер минипорта вызывает метод QueryInterface объекта IPortXxx с IID_IPortEvents REFIID. IPortEvents наследует от интерфейса IUnknown.

Драйверы обычно используют IPortEvents интерфейс для уведомления системы аппаратных изменений тома или отключения звука, хотя IPortEvents их можно использовать для любого типа уведомления о событии. IPortEvents интерфейс — это необязательный интерфейс драйвера портов нижнего края. Его можно использовать, например, для уведомления приложений миксера об изменениях элементов управления или смешивания. Сведения об API миксера см. в документации по пакету SDK для Microsoft Windows.

Минипорт-драйвер предоставляет событие таким же образом, как оно предоставляет свойства: через таблицу автоматизации (см. PCAUTOMATION_TABLE). Следующие объекты, все из которых предоставляются драйвером мини-порта, могут указать таблицу автоматизации, содержащую свойства и /или события:

  • Фильтр, реализуемый драйвером минипорта
  • Каждый закрепление, предоставляемый фильтром
  • Каждый узел, предоставляемый фильтром
Каждая запись события в таблице автоматизации — это структура типа PCEVENT_ITEM , указывающая следующее:
  • Набор событий
  • Событие в наборе
  • Флаги, указывающие параметры поддержки
  • Указатель функции на обработчик события
После запуска драйвера адаптера и его пары драйверов порта и минипорта были зарегистрированы в качестве фильтров в системе, драйвер системы WDMAud, который преобразует вызовы API микшера в команды KS в аудиодрайверы WDM, откроет каждую пару драйверов порта или минипорта и допросит свои возможности. В ходе этого процесса WDMAud будет проходить по топологии фильтра драйвера мини-порта в поиске узла управления, поддерживающего аппаратное событие. Событие представлено сочетанием идентификатора GUID набора событий KSEVENTSETID_AudioControlChange и идентификатором события KSEVENT_CONTROL_CHANGE. Когда WdmAud находит их, он включает событие, эффективно регистрируя себя в качестве клиента события. Впоследствии каждый раз, когда драйвер минипорта сигнализирует о событии, это уведомляет WDMAud, которое создает соответствующие сообщения windows для своих клиентов.

Помимо предоставления события в таблице автоматизации, мини-драйвер, который должен предоставлять события, должен запрашивать драйвер порта для своего IPortEvents интерфейса.

В этом разделе также описывается следующая подпрограмма обработки запросов на события:

EventHandler

Наследство

Интерфейс IPortEvents наследует от интерфейса IUnknown.

Методы

Интерфейс IPortEvents имеет эти методы.

 
IPortEvents::AddEventToEventList

Метод AddEventToEventList добавляет событие в список событий драйвера порта.
IPortEvents::GenerateEventList

Метод GenerateEventList уведомляет клиентов через список записей драйвера порта о том, что произошло определенное событие.

Требования

Требование Ценность
целевая платформа Виндоус
Заголовок portcls.h