【问题标题】:Resetting a device in device manager在设备管理器中重置设备
【发布时间】:2010-11-01 07:43:00
【问题描述】:

我正在寻找有关如何重新启动任何允许在设备管理器中启用/禁用的设备的编程 API,

如音频设备和网络适配器

【问题讨论】:

    标签: windows delphi winapi device-driver hardware-acceleration


    【解决方案1】:

    您必须使用SetupApi / ConfigManager API。但请注意,在 x64 下,您的应用程序。也必须是 x64 才能启用/禁用设备(因此您现在不能直接在 Delphi 中执行此操作 - 首先我认为这是 x64 下 x86-app 的文件/注册表重定向的问题,但它没有帮助)。设备枚举工作正常。在 MSDN 上的一篇文章中有关于它的内容,但我现在找不到它。我已经为 x64 操作系统下的启用/禁用设备制作了 FP/Lazarus x64 应用程序。

    您可以下载WDK并查找DevCon的源代码(C:\WinDDK\7600.16385.1\src\setup\devcon)。在 cmds.cpp 中有一个 ControlCallback 函数,它使用 SetupApi 启用/禁用设备。但首先您需要枚举设备类(通过 GUID 或 ClassName),然后通过 DeviceInstanceId 字符串枚举设备实例或打开设备。它用 C 语言编写,但学习如何使用该 API 应该很容易。

    不确定您在做什么,但也许使用 devcon.exe(不知道许可证是否允许)并通过它启用/禁用设备会更容易?

    【讨论】:

    • Jedi Apilib 中提供了上述 SetupApi 和 ConfigManager 的标头翻译
    • 谢谢 Remko,忘记写了。关于 x86 与 x64,如果您尝试这样做,您可能会遇到错误 E0000235(如 techtalkz.com/microsoft-device-drivers/…
    【解决方案2】:

    我没有这方面的经验,但我认为您可以使用 DeviceIoControl API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      相关资源
      最近更新 更多