мой C++
приложение использует Winpcap
для разных вещей (в основном учусь прямо сейчас).
Как я могу это проверить Winpcap
установлен, выдает ошибку при запуске приложения, если это не так?
Кроме того, может кто-нибудь пролить свет на то, как Winpcap
функции драйвера называются? Я знаю, что я включаю pcap
.h, чтобы вызвать функции, но как они передаются OS/Driver
? Это не как WINAPI
звонки или SYSCALLs
это?
Когда вы компилируете и связываете свой исполняемый файл с помощью winpcap на своей машине, а затем он выполняется в системе, где winpcap не установлен, пользователь получит типичное «программа не может запуститься, потому что то и то отсутствует». Как это:
Чтобы облегчить это, вы можете просто предположить, что winpcap присутствует
При такой настройке ваши пользователи будут более осведомлены о том, что может быть проблемой, когда они сталкиваются с этими ошибками.
Чтобы избежать самого окна сообщения об ошибке Windows, вы можете,
LoadLibrary()
, получая адреса метода с GetProcAddress()
и выручить, если это не может быть найдено. Я полагаю, что именно так Wireshark делает это или, по крайней мере, делал это в прошлом.
Для последнего также может помочь, если вы можете проверить, если HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst
существует (когда-то это был рекомендуемый способ проверки наличия winpcap в списке рассылки для разработчиков) еще до того, как вы попытались выполнить LoadLibrary (), чтобы убедиться в правильности установки в системе. Вы также можете проверить наличие этого ключа в установщике вашего программного обеспечения, если таковой имеется.
Обратите внимание, что этот последний вариант динамической работы с winpcap является наименее удобным. Если вы только экспериментируете, вы должны следовать официальному руководству. Вы не сказали, какой компилятор вы используете, тем не менее, официальный способ работы с winpcap обрисован в общих чертах в этом документе.
Обычно winpcap взаимодействует с драйвером асинхронно, но как пользователь winpcap вы должны придерживаться официального интерфейса и не вызывать драйвер напрямую. Вот схема высокого уровня того, как это работает. Я взял это из Руководство по внутренним устройствам водителя NPF страница интернета. Вам предлагается прочитать его и ответить на конкретные вопросы.
Других решений пока нет …