DeviceQuery.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /************************************************************************/
  2. /* Copyright (C), 2016-2020, [IT], 保留所有权利;
  3. /* 模 块 名:;
  4. /* 描 述:;
  5. /*
  6. /* 版 本:[V];
  7. /* 作 者:[IT];
  8. /* 日 期:[12/19/2016];
  9. /*
  10. /*
  11. /* 注 意:CPU的Processorid并不是CPU序列号,只是能支持的指令ID,所以,不获取cpuid;
  12. /*
  13. /* 修改记录:[IT];
  14. /* 修改日期:;
  15. /* 修改版本:;
  16. /* 修改内容:;
  17. /************************************************************************/
  18. #ifndef __DEVICEQUERY__
  19. #define __DEVICEQUERY__
  20. #pragma once
  21. #include <string>
  22. #include <vector>
  23. #include <setupapi.h>
  24. #include <initguid.h>
  25. #pragma comment(lib,"setupapi.lib")
  26. // 网卡类型;
  27. enum NICKIND
  28. {
  29. // pci网卡;
  30. NIC_PCI,
  31. // usb网卡;
  32. NIC_USB,
  33. // 虚拟网卡;
  34. NIC_ROOT,
  35. // 仿真网卡;
  36. NIC_SWD,
  37. // 未知类型;
  38. NIC_UNK
  39. };
  40. typedef struct __MAC_ADDRESS__
  41. {
  42. INT nNICKind;
  43. TCHAR szNICKind[16];
  44. TCHAR szMacAddress[MAX_PATH];
  45. TCHAR szDevicePath[MAX_PATH];
  46. }MacAddress, *pMacAddress;
  47. class CDeviceQuery
  48. {
  49. public:
  50. CDeviceQuery(void);
  51. ~CDeviceQuery(void);
  52. private:
  53. BOOL GetRegistryProperty(
  54. IN HDEVINFO DeviceInfoSet,
  55. OUT PSP_DEVINFO_DATA DeviceInfoData,
  56. IN ULONG Property,
  57. OUT PVOID Buffer,
  58. OUT PULONG Length );
  59. public:
  60. // 枚举网卡;
  61. void EnumNetCards();
  62. // 获取网卡地址;
  63. INT GetMacAddress();
  64. // 获取硬盘信息;
  65. INT GetHardDiskInfo();
  66. // 输出所有硬件信息;
  67. void OutHDString();
  68. // Json格式的有效的硬件码;
  69. BYTE* GetHardWareSerialNumber(IN DWORD &dwBytelen);
  70. private:
  71. // static CDeviceQuery *m_pInstance;
  72. std::vector<MacAddress> m_vtMacAddress;
  73. std::vector<std::string> m_vtHardDiskID;
  74. };
  75. #endif