Не удается установить драйвер на COM1 и COM2 в Windows
Я разрабатываю драйвер виртуального COM-порта UMDF2 для Windows с использованием WDF. Всякий раз, когда я устанавливаю драйвер, он запускается с COM3. Он никогда не запустится с COM1 или COM2. Максимальный порт, который будет предоставлять Windows, равен 4096. Всякий раз, когда я устанавливаю драйвер, установщик класса (в моем случае его последовательный установщик msports.dll) берет доступный COM-порт из базы данных COM-портов (COMDb) и устанавливает драйвер на этот COM-порт. номер порта. Если я хочу установить драйвер на требуемый номер COM-порта, что я и сделал, я явно указываю номер COM-порта как "используемый", вызывая ComDBClaimPort() из моего приложения Windows до необходимого номера COM-порта. Например, если мне нужен драйвер для установки на COM10, я явно делаю порты с COM1 на COM9 как "используемые", а затем драйвер будет установлен на COM10. После установки драйвера я освобожу COM-порты от COM1 до COM9, вызвав функцию ComDBReleasePort(). Но если я сделаю COM-порты от COM3 до COM4096 как "используемые", используя приведенный ниже код, COM-порт не будет установлен на COM1. или COM2. Почему это так?
for (int i = 3; i < 4097; i++)
{
if (ComDBClaimPort(HDComDB, i, TRUE, NULL))
{
return 0;
}
}
После этого, если я вызываю функцию ComDBClaimNextFreePort(PHComDB, &ports), она возвращает, что порты недоступны, хотя COM1 и COM2 свободны. Вы можете проверить это, просмотрев путь HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter в реестре, или вы можете вызвать функцию ComDBGetCurrentPortUsage(). Пожалуйста, помогите мне с этим. Заранее спасибо.