我正在开发一个Windows Mobile 6.1应用程序,我遇到了一个问题,当移动设备停靠时,它会加载用于以太网连接的USB驱动程序,并在移除设备时卸载它。几次驱动程序似乎没有加载,所以我的解决方案是从应用程序本身手动加载它。
以下是我的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);
我得到了一个有效的句柄,但我的问题是,当您激活设备驱动程序时会发生什么?我的问题是驱动程序没有自动获得LAN连接,我正在做的就是强迫它这样做吗?
答案 0 :(得分:1)
您可以使用ActivateDeviceExe
加载流驱动程序,就像驱动程序驻留在HKLM\Drivers\BuiltIn
子项一样。这些驱动程序由device.exe的驱动程序加载程序加载。
NDIS Minport驱动程序或USB客户端驱动程序等其他驱动程序由相应的子系统加载。它们需要在相应的上下文中加载。调用ActivateDeviceEx
既不会启动子系统的加载,也不会准备上下文以将这些类型的驱动程序置于操作状态。因此,您无法使用ActivdateDeviceExe
加载这些驱动程序。