Различия в виртуальных подключениях
Диспетчер вызовов использует сигнальные виртуальные цепи для отправки сигнальных сообщений в сетевые сущности, такие как коммутаторы, и их получения от них. Сигнальные виртуальные каналы диспетчера вызовов видны для NDIS. Диспетчер вызовов должен создавать, активировать, деактивировать и удалять все виртуальные соединения с вызовами NDIS. Однако сигнальные виртуальные каналы драйвера MCM непрозрачны для NDIS. Драйвер MCM не создает, не активирует, не деактивирует и не удаляет сигнальные виртуальные каналы с использованием вызовов NDIS. Вместо этого драйвер MCM выполняет такие операции внутри системы. Драйвер MCM должен вызывать NDIS для выполнения операций на виртуальных машинах, которые используются для отправки или получения клиентских данных. Это связано с тем, что NDIS должен отслеживать клиентские виртуальные машины.
Поскольку драйвер MCM является диспетчером вызовов и мини-драйвером, некоторые функции, ориентированные на подключение, являются избыточными. В частности, MiniportCoCreateVc и MiniportCoDeleteVc являются избыточными и поэтому не предоставляются драйвером MCM. Операции VC обрабатываются следующими способами:
Драйвер MCM с функциями ProtocolCoCreateVc и ProtocolCoDeleteVc выполняется, когда клиент запрашивает создание или удаление VC.
NdisMCmCreateVc и NdisMCmDeleteVc, когда драйвер MCM создает или удаляет VC.
NdisMCmActivateVc и NdisCmDeactivateVc, когда драйвер MCM активирует или деактивирует VC.
Драйвер MCM должен предоставить функцию MiniportCoOidRequest, которую клиент может использовать для запроса или настройки информации о драйвере минипорта, а также функцию MiniportCoSendNetBufferLists для обработки операций отправки от клиента.