DevTree.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #pragma once
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5. // 下列 ifdef 块是创建使从 DLL 导出更简单的
  6. // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DEVTREE_EXPORTS
  7. // 符号编译的。在使用此 DLL 的
  8. // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
  9. // DEVTREE_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
  10. // 符号视为是被导出的。
  11. #ifdef DEVTREE_EXPORTS
  12. #define DEVTREE_API __declspec(dllexport)
  13. #define DEVTREE_C_API extern "C" __declspec(dllexport)
  14. #else
  15. #define DEVTREE_API __declspec(dllimport)
  16. #define DEVTREE_C_API extern "C" __declspec(dllimport)
  17. #endif
  18. #ifndef DEVTREE_EXPORTS
  19. #ifdef _WIN64
  20. #ifdef _DEBUG
  21. #pragma comment(lib, "DevTreeX64D.lib")
  22. #else
  23. #pragma comment(lib, "DevTreeX64.lib")
  24. #endif
  25. #else
  26. #ifdef _DEBUG
  27. #pragma comment(lib, "DevTreeD.lib")
  28. #else
  29. #pragma comment(lib, "DevTree.lib")
  30. #endif
  31. #endif
  32. #endif
  33. typedef enum _Dev_Tree_Type {
  34. TYPE_DEVICE,
  35. TYPE_DRIVER,
  36. //TYPE_TREE,//不要树状递归,只要数组
  37. TYPE_MAX
  38. }DEV_TREE_TYPE;
  39. class DEVTREE_API DevTreeNode {
  40. public:
  41. DevTreeNode();
  42. ~DevTreeNode();
  43. DEV_TREE_TYPE m_NodeType;//0:Device,1:devTree
  44. PVOID m_pObject;//0:Device,1:devTree
  45. };
  46. // 此类是从 DevTree.dll 导出的
  47. class DEVTREE_API DevTree {
  48. string *m_pName;
  49. vector<DevTreeNode> *m_pDevices;
  50. public:
  51. DevTree(void);
  52. virtual ~DevTree(void);
  53. // TODO: 在此添加您的方法。
  54. void SetName(const char *pszName);
  55. const char *GetName();
  56. void Add(PVOID dev, DEV_TREE_TYPE devType);//0:Device,1:devTree
  57. size_t size();
  58. void clear();
  59. DevTreeNode &operator [](size_t idx);
  60. };
  61. //DevTree* MallocDevTree();
  62. //void FreeDevTree(DevTree* p);