Я уверен, что название действительно плохо написано, но я, честно говоря, не могу придумать краткое описание, подходящее для вопроса. Пожалуйста, предложите!
Я пишу пользовательский / модифицированный драйвер последовательного порта KMDF COM-порта, используя WDF, унаследованный от примера драйвера Serial.sys, который MS предоставляет в качестве примера кода с открытым исходным кодом.
Кроме того, я изменил GUID класса устройства и класса экземпляра устройства, создав новый, описывающий мое устройство.
Я успешно установил драйвер для определенного COM-порта, на котором он мне нужен, и в Диспетчере устройств вижу, что я получаю свой экземпляр устройства в дереве настраиваемых классов устройств, я вижу свойства устройства и все выглядит хорошо. В разделе драйверов указан мой пример с именем wdfserial.sys
Теперь проблема в том, что другие 5 COM-портов, которые находятся на компьютере, не обновляются моим драйвером и не отображаются в классе моего устройства, а идентифицируются как универсальный, коммуникационный порт (COM x).
Однако в окне свойств и драйверов я вижу перечисленные serial.sys (универсальный драйвер последовательного порта, поставляемый с Windows), serenum.sys (идет вместе с serial), а также мой wdfserial.sys.
Теперь, меня не будет беспокоить, если он будет указан там, проблема в том, что драйвер также будет использоваться этими COM-портами, если я открою один из них. Я знаю это, потому что я вижу, как мои результаты DeviceIOControl поступают в код, который открывает любой из этих 5 com-портов с классом c # SerialPort по умолчанию.
Я искал и искал любые сопоставления Serial.sys или старых GUID в модифицированном коде моего драйвера, но ничего не смог идентифицировать.
Возможно, нельзя использовать другой драйвер только для одного экземпляра одного и того же оборудования? Что мне здесь не хватает?
То же самое относится как к Win7, так и к Win10.
Спасибо