ActivateDeviceEx是否启动了驱动程序?

时间:2011-10-25 15:46:13

标签: c# .net windows mobile pinvoke

我正在开发一个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连接,我正在做的就是强迫它这样做吗?

1 个答案:

答案 0 :(得分:1)

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

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