ssdt_API.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #pragma once
  2. // 下列 ifdef 块是创建使从 DLL 导出更简单的
  3. // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 SSDT_EXPORTS
  4. // 符号编译的。在使用此 DLL 的
  5. // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
  6. // SSDT_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
  7. // 符号视为是被导出的。
  8. #ifdef SSDT_EXPORTS
  9. #define SSDT_API __declspec(dllexport)
  10. #else
  11. #define SSDT_API __declspec(dllimport)
  12. #endif
  13. //
  14. //// 此类是从 ssdt.dll 导出的
  15. //class SSDT_API Cssdt {
  16. //public:
  17. // Cssdt(void);
  18. // // TODO: 在此添加您的方法。
  19. //};
  20. //
  21. //extern SSDT_API int nssdt;
  22. #include "ListStruct.h"
  23. #ifdef WIN_64BIT
  24. #ifdef _DEBUG
  25. #pragma comment(lib, "ssdtX64.lib")
  26. #else
  27. #pragma comment(lib, "ssdtX64D.lib")
  28. #endif
  29. #else
  30. #ifdef _DEBUG
  31. #pragma comment(lib, "ssdtD.lib")
  32. #else
  33. #pragma comment(lib, "ssdt.lib")
  34. #endif
  35. #endif
  36. typedef enum _File_Flags {
  37. FILE_FLAG_ERROR,
  38. FILE_FLAG_READ = 1,
  39. FILE_FLAG_WRITE = 2,
  40. FILE_FLAG_NOTIFY = 4,
  41. FILE_FLAG_IMAGE = 8,
  42. FILE_FLAG_MODIFY = 16,
  43. FILE_FLAG_ACTION = 32,
  44. FILE_FLAG_MAX = 64
  45. }FILEFLAGS;
  46. typedef enum _File_Operation {
  47. FILE_OP_ERROR,
  48. FILE_OP_OPEN,
  49. FILE_OP_READ,
  50. FILE_OP_WRITE,
  51. FILE_OP_CLOSE,
  52. FILE_OP_NOTIFY,
  53. FILE_OP_IOCTL,
  54. FILE_OP_MAX
  55. }FILEOPERATION;
  56. typedef enum _Packet_Type {
  57. PACKET_TYPE_ERROR,
  58. PACKET_TYPE_REQUEST,
  59. PACKET_TYPE_RESPONSE,
  60. PACKET_TYPE_MAX
  61. }PACKETTYPE;
  62. typedef enum _Packet_Ret_Code {
  63. PACKET_RET_ERROR,
  64. PACKET_RET_OK,
  65. PACKET_RET_WARNING,
  66. PACKET_RET_MAX
  67. }PACKETRETCODE;
  68. //local info
  69. SSDT_API GeneralDataObject Ssdt_GetLocalHostDrvResource(void);
  70. SSDT_API const wchar_t* Ssdt_GetLocalHostMachineID();
  71. SSDT_API const wchar_t* Ssdt_GetLocalHostEbusID();
  72. //get data object info
  73. SSDT_API FILEOPERATION Ssdt_GetFileOperation(GeneralDataObject &obj);
  74. SSDT_API PACKETTYPE Ssdt_GetPacketType(GeneralDataObject &obj);
  75. SSDT_API GeneralDataObject Ssdt_GetPacketArgs(GeneralDataObject &obj);
  76. SSDT_API GeneralDataObject Ssdt_GetPacketRetStatus(GeneralDataObject &obj);
  77. SSDT_API const wchar_t* Ssdt_GetDesEbusID(GeneralDataObject &obj);
  78. //check packet
  79. SSDT_API bool Ssdt_CheckPacketHandle(GeneralDataObject &obj,const wchar_t *pEBusID,bool IntoKernel);
  80. SSDT_API bool Ssdt_CheckPacketObjectIntegrity_Format(GeneralDataObject &obj,const wchar_t *pEBusID,bool IntoKernel);
  81. SSDT_API bool Ssdt_CheckPacketObjectIntegrity(GeneralDataObject &obj,const wchar_t *pEBusID, DWORD dwCommand,bool IntoKernel);
  82. //pass packet
  83. SSDT_API bool Ssdt_PassPacket(GeneralDataObject &obj,bool toeBus = false);