ActivateDeviceEx是否启动驱动程序?

我正在开发一个Windows Mobile 6.1应用程序,我遇到了一个问题,当移动设备停靠时,它将加载用于以太网连接的USB驱动程序,并在卸载时卸载它。 几次驱动程序似乎不加载,所以我的解决scheme是从应用程序本身手动加载它。

以下是我的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); 

我得到一个有效的句柄,但是我的问题是,激活设备驱动程序时发生了什么? 我的问题是,驱动程序不是自动获得局域网连接,是我做得足够强迫它这样做?

您可以使用ActivateDeviceExe加载流驱动程序,就好像驱动程序驻留在HKLM\Drivers\BuiltIn子项中一样。 这些驱动程序由device.exe的驱动程序加载程序加载。

像NDIS Minport驱动程序或USB客户端驱动程序的其他驱动程序由相应的子系统加载。 他们需要在相应的上下文中加载。 调用ActivateDeviceEx既不会启动子系统的加载,也不会准备上下文来使这些类型的驱动程序进入操作状态。 因此,您不能使用ActivdateDeviceExe加载这些驱动程序。