DriverResource.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #pragma once
  2. #include "ResDataObject.h"
  3. #ifdef DRIVERAPI_EXPORTS
  4. #define DRIVERAPI_API __declspec(dllexport)
  5. #else
  6. #define DRIVERAPI_API __declspec(dllimport)
  7. #endif
  8. typedef enum _File_Op_Mode {
  9. FILE_OP_MODE_SYNC,
  10. FILE_OP_MODE_ASYNC,
  11. FILE_OP_MODE_MAX
  12. }FILE_OP_MODE;
  13. typedef enum _File_Flags {
  14. FILE_FLAG_ERROR,
  15. FILE_FLAG_READ = 1,
  16. FILE_FLAG_WRITE = 2,
  17. FILE_FLAG_NOTIFY = 4,
  18. FILE_FLAG_IMAGE = 8,
  19. FILE_FLAG_MODIFY = 16,
  20. FILE_FLAG_ACTION = 32,
  21. FILE_FLAG_MAX = 64,
  22. FILE_FLAG_ALLACCESS = FILE_FLAG_MAX-1
  23. }FILEFLAGS;
  24. typedef enum _File_Operation {
  25. FILE_OP_ERROR,
  26. FILE_OP_OPEN,
  27. FILE_OP_READ,
  28. FILE_OP_WRITE,
  29. FILE_OP_CLOSE,
  30. FILE_OP_NOTIFY,
  31. FILE_OP_IOCTL,
  32. FILE_OP_MAX
  33. }FILEOPERATION;
  34. typedef enum _Packet_Type {
  35. PACKET_TYPE_ERROR,
  36. PACKET_TYPE_REQUEST,
  37. PACKET_TYPE_RESPONSE,
  38. PACKET_TYPE_MAX
  39. }PACKETTYPE;
  40. typedef enum _Packet_Ret_Code {
  41. PACKET_RET_ERROR,
  42. PACKET_RET_OK,
  43. PACKET_RET_WARNING,
  44. PACKET_RET_MAX
  45. }PACKETRETCODE;
  46. //packet definition of level1
  47. #define PACKETIDDEF (L"packetid")
  48. #define PACKETOPERATIONDEF (L"operation")
  49. #define PACKETTYPEDEF (L"packettype")
  50. #define PACKETHANDLEDEF (L"handle")
  51. #define PACKETARGSDEF (L"args")
  52. #define PACKETSTATUSDEF (L"status")
  53. //packet definition of level2
  54. //handle definition
  55. #define HANDLE_DEVPATHDEF (L"devpath")
  56. #define HANDLE_FLAGSDEF (L"flags")
  57. #define HANDLE_LANGDEF (L"lang")
  58. #define HANDLE_OWNERIDDEF (L"ownerid")
  59. #define HANDLE_HANDLEIDDEF (L"handleid")
  60. //args.arg definition
  61. #define ARGS_ARGDEF (L"arg")
  62. //status.ret definition
  63. #define STATUS_RETDEF (L"ret")
  64. //packet definition of level3
  65. //handle identify
  66. #define ID_MACHINEDEF (L"machineid")
  67. #define ID_EBUSDEF (L"ebusid")
  68. #define ID_PROCESSDEF (L"pid")
  69. #define ID_THREADDEF (L"tid")
  70. //arg
  71. #define ARG_ARGCMDDEF (L"argcmd")
  72. #define ARG_ARGRESDEF (L"argres")
  73. #define ARG_ARGPARAMSDEF (L"argparams")
  74. //ret
  75. #define RET_CODEDEF (L"code")
  76. #define RET_MSGDEF (L"msg")
  77. //packet definition of level4
  78. #define ARGCMD_ADDDEF (L"add")
  79. #define ARGCMD_DELDEF (L"del")
  80. #define ARGCMD_UPDATEDEF (L"update")
  81. #define ARGCMD_GETDEF (L"get")
  82. #define ARGCMD_EXECDEF (L"exec")
  83. class DRIVERAPI_API ResourceObject
  84. {
  85. public:
  86. ResourceObject(void);
  87. ~ResourceObject(void);
  88. static size_t GetDeviceCount(ResDataObject &ResourceObject);
  89. };
  90. class DRIVERAPI_API HandleObject
  91. {
  92. public:
  93. HandleObject(void);
  94. ~HandleObject(void);
  95. static const wchar_t* GetDevPath(ResDataObject &handleobj);
  96. static FILEFLAGS GetFileFlags(ResDataObject &handleobj);
  97. static const wchar_t* GetLang(ResDataObject &handleobj);
  98. static ResDataObject &GetOwnerID(ResDataObject &handleobj);
  99. static ResDataObject &GetHandleID(ResDataObject &handleobj);
  100. //static bool CheckHandleObjectIntegrity(ResDataObject &handleobj,const wchar_t *pLocalBusID,bool Request,bool IntoKernel);
  101. };
  102. class DRIVERAPI_API PacketCmdObject
  103. {
  104. public:
  105. PacketCmdObject(void);
  106. ~PacketCmdObject(void);
  107. //static wstring m_file_operations[FILE_OP_MAX];
  108. //static wstring m_packet_types[PACKET_TYPE_MAX];
  109. //static wstring m_packet_retcode[PACKET_RET_MAX];
  110. static PACKETTYPE GetPacketType(ResDataObject &obj);
  111. static FILEOPERATION GetFileOperation(ResDataObject &obj);
  112. static ResDataObject &GetPacketHandle(ResDataObject &obj);
  113. static ResDataObject &GetPacketArgs(ResDataObject &obj);
  114. static ResDataObject &GetPacketStatus(ResDataObject &obj);
  115. static const wchar_t* GetHandleEbusID(ResDataObject &obj);
  116. static const wchar_t* GetOwnerEbusID(ResDataObject &obj);
  117. static bool CheckPacketObjectIntegrity(ResDataObject &obj,const wchar_t *pLocalBusID,bool IntoKernel);
  118. };