Установка драйвера OpenVPN TAP - PullRequest
3 голосов
/ 19 января 2010

Я пытаюсь контролировать несколько экземпляров TAP-драйвера OpenVPN в Windows через tapinstall. Кажется, что из-за того, что все устройства имеют одинаковый HWID - «tap0901» - я не могу удалить ни одного из них с помощью tapinstall - все они исчезают, когда я выдаю

tapinstall.exe remove tap0901

Кроме того, когда я устанавливаю другой экземпляр с

tapinstall.exe install OemWin2k.inf tap0901

все остальные сбрасываются (открытые соединения с использованием этих существующих установок крана прерываются), потому что tapinstall пытается обновить драйверы на всех существующих экземплярах.

Мое решение до сих пор состояло в том, чтобы переименовать все экземпляры hwid, указанные в INF-файле, во что-то другое, а также переименовать файлы .cat и .sys в это новое имя; однако это нарушает подпись драйвера.

Кто-нибудь знает какие-либо альтернативные способы управления несколькими экземплярами драйвера OpenVPN TAP, которые позволяют мне:

  1. Удалить любой экземпляр драйвера, не мешая работе других экземпляров
  2. Установка новых экземпляров без вмешательства в работу других экземпляров.

Win32 API-вызовы тоже в порядке; Я пытаюсь написать программу для автоматизации этого.

Спасибо за помощь!

1 Ответ

6 голосов
/ 20 января 2010

Если кому-то интересно, я нашел способ сделать это, но он довольно хакерский. Вдохновлен исходным кодом devcon.

  1. SetupDiCreateDeviceInfoList
  2. SetupDiCreateDeviceInfo
  3. SetupDiSetDeviceRegistryProperty
  4. SetupDiCallClassInstaller
  5. UpdateDriverForPlugAndPlayDevices
  6. SetupDiSetDeviceRegistryProperty - переименуйте идентификатор оборудования в нечто уникальное.
...