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

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

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

Драйвер мини-порта предоставляет событие так же, как и свойства: через таблицу автоматизации (см. 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 уведомляет клиентов через список записей событий драйвера порта о том, что произошло определенное событие.

Требования

Требование Значение
Целевая платформа Windows
Header portcls.h