ActivateDeviceEx запускает драйвер? - PullRequest
1 голос
/ 25 октября 2011

Я занимаюсь разработкой приложения для Windows Mobile 6.1 и сталкиваюсь с проблемой, когда при подключении мобильного устройства оно загружает драйвер USB для соединения Ethernet и выгружает его, когда оно отсоединено.Через несколько раз драйвер не загружается, поэтому я решил загрузить его вручную из самого приложения.

Ниже приведены описание и использование P / Invoke:

[DllImport("Coredll.dll")]
extern static IntPtr ActivateDeviceEx(string device, IntPtr regEnts, 
    UInt32 cRegEnts, IntPtr devKey);

IntPtr handle = ActivateDeviceEx(
    "Drivers\\USB\\ClientDrivers\\ADMTEK_LANUSB_Driver",
    IntPtr.Zero, 0, IntPtr.Zero);

Я получил действительный дескриптор, но мой вопрос: что именно происходит, когда вы активируете драйвер устройства?Моя проблема в том, что драйвер не получает автоматически соединение с локальной сетью, достаточно ли того, что я делаю, чтобы заставить его это сделать?

1 Ответ

1 голос
/ 02 июня 2014

Вы можете загрузить драйвер потока с помощью ActivateDeviceExe, как если бы драйвер находился в подразделе HKLM\Drivers\BuiltIn.Эти драйверы загружаются загрузчиком драйвера устройства.exe.

Другие драйверы, такие как драйверы NDIS Minport или драйверы USB-клиентов, загружаются соответствующей подсистемой.Их нужно загружать в соответствующем контексте.Вызов ActivateDeviceEx не инициирует ни загрузку подсистемы, ни подготовку контекста для перевода драйверов этого типа в рабочее состояние.Поэтому вы не можете использовать ActivdateDeviceExe для загрузки этих драйверов.

...