Не удается установить драйвер на COM1 и COM2 на windows - PullRequest
0 голосов
/ 18 апреля 2020

Я разрабатываю драйвер виртуального 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 () function. Пожалуйста, помогите мне с этим. Заранее спасибо.

...