ZBLOG

#include #include #include #include #pragma comment(lib, "setupapi.lib") bool IsMassStorageDeviceConnected() { // 获取所有大容量存储设备 HDEVINFO deviceInfoSet = SetupDiGetClassDevsA(&GUID_DEVCLASS_DI...

在你的代码中,你希望将调试信息输出到控制台,而不仅仅是通过 std::cout。如果你想要使用 OutputDebugStringA 来输出调试信息,这里是如何将它们集成在你的代码中,以便同时可以看到调试信息和标准输出。

以下是更新后的代码示例,结合了 OutputDebugStringA 用于调试输出:

  1. #include <windows.h>
  2. #include <setupapi.h>
  3. #include <devguid.h>
  4. #include <iostream>
  5. #pragma comment(lib, "setupapi.lib")
  6. // 辅助函数,用于同时将消息输出到控制台和调试器
  7. void DebugAndPrint(const char* message) {
  8. OutputDebugStringA(message); // 输出到调试器
  9. std::cout << message; // 输出到控制台
  10. }
  11. bool IsMassStorageDeviceConnected() {
  12. // 获取所有大容量存储设备
  13. HDEVINFO deviceInfoSet = SetupDiGetClassDevsA(&GUID_DEVCLASS_DISKDRIVE, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
  14. if (deviceInfoSet == INVALID_HANDLE_VALUE) {
  15. DebugAndPrint("Unable to get device information set.\n");
  16. return false; // 无法获取设备信息集
  17. }
  18. SP_DEVINFO_DATA deviceInfoData;
  19. deviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
  20. for (DWORD i = 0; SetupDiEnumDeviceInfo(deviceInfoSet, i, &deviceInfoData); ++i) {
  21. char buffer[1024];
  22. DWORD buffersize = 0;
  23. // 获取硬件ID
  24. if (SetupDiGetDeviceRegistryPropertyA(deviceInfoSet, &deviceInfoData,
  25. SPDRP_HARDWAREID, NULL, (PBYTE)buffer, sizeof(buffer), &buffersize)) {
  26. std::string msg = "Found Device Hardware ID: ";
  27. msg += buffer;
  28. msg += "\n";
  29. DebugAndPrint(msg.c_str());
  30. // 可以在此处添加逻辑以匹配特定硬件 ID 或进一步处理
  31. SetupDiDestroyDeviceInfoList(deviceInfoSet);
  32. return true; // 找到至少一个大容量存储设备
  33. }
  34. }
  35. SetupDiDestroyDeviceInfoList(deviceInfoSet);
  36. DebugAndPrint("No mass storage devices found.\n");
  37. return false; // 未找到任何大容量存储设备
  38. }
  39. int main() {
  40. if (IsMassStorageDeviceConnected()) {
  41. DebugAndPrint("A mass storage device is connected.\n");
  42. } else {
  43. DebugAndPrint("No mass storage devices are connected.\n");
  44. }
  45. return 0;
  46. }

更新内容说明:

  1. 辅助函数 DebugAndPrint

    • 创建了一个新的函数 DebugAndPrint,这个函数接收一个字符串参数。
    • 它使用 OutputDebugStringA() 将消息发送到 Windows 调试器,并且使用 std::cout 将相同的消息输出到控制台。
  2. 修改返回值处理

    • 在合适的位置(如未能获取设备集合、找到设备等)使用这个新函数打印消息,以便用户可以更好地理解程序的执行流程。
  3. 拼接字符串

    • 使用 std::string 拼接找到的硬件 ID 并传递给 DebugAndPrint() 函数进行输出。

通过这种方式,你既能在开发时通过调试工具查看详细的信息,也能够让终端用户直接在控制台上看到重要的运行时信息。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=20391

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?