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