#pragma once // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 SSDT_EXPORTS // 符号编译的。在使用此 DLL 的 // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将 // SSDT_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的 // 符号视为是被导出的。 #ifdef SSDT_EXPORTS #define SSDT_API __declspec(dllexport) #else #define SSDT_API __declspec(dllimport) #endif // //// 此类是从 ssdt.dll 导出的 //class SSDT_API Cssdt { //public: // Cssdt(void); // // TODO: 在此添加您的方法。 //}; // //extern SSDT_API int nssdt; #include "ListStruct.h" #ifdef WIN_64BIT #ifdef _DEBUG #pragma comment(lib, "ssdtX64.lib") #else #pragma comment(lib, "ssdtX64D.lib") #endif #else #ifdef _DEBUG #pragma comment(lib, "ssdtD.lib") #else #pragma comment(lib, "ssdt.lib") #endif #endif typedef enum _File_Flags { FILE_FLAG_ERROR, FILE_FLAG_READ = 1, FILE_FLAG_WRITE = 2, FILE_FLAG_NOTIFY = 4, FILE_FLAG_IMAGE = 8, FILE_FLAG_MODIFY = 16, FILE_FLAG_ACTION = 32, FILE_FLAG_MAX = 64 }FILEFLAGS; typedef enum _File_Operation { FILE_OP_ERROR, FILE_OP_OPEN, FILE_OP_READ, FILE_OP_WRITE, FILE_OP_CLOSE, FILE_OP_NOTIFY, FILE_OP_IOCTL, FILE_OP_MAX }FILEOPERATION; typedef enum _Packet_Type { PACKET_TYPE_ERROR, PACKET_TYPE_REQUEST, PACKET_TYPE_RESPONSE, PACKET_TYPE_MAX }PACKETTYPE; typedef enum _Packet_Ret_Code { PACKET_RET_ERROR, PACKET_RET_OK, PACKET_RET_WARNING, PACKET_RET_MAX }PACKETRETCODE; //local info SSDT_API GeneralDataObject Ssdt_GetLocalHostDrvResource(void); SSDT_API const wchar_t* Ssdt_GetLocalHostMachineID(); SSDT_API const wchar_t* Ssdt_GetLocalHostEbusID(); //get data object info SSDT_API FILEOPERATION Ssdt_GetFileOperation(GeneralDataObject &obj); SSDT_API PACKETTYPE Ssdt_GetPacketType(GeneralDataObject &obj); SSDT_API GeneralDataObject Ssdt_GetPacketArgs(GeneralDataObject &obj); SSDT_API GeneralDataObject Ssdt_GetPacketRetStatus(GeneralDataObject &obj); SSDT_API const wchar_t* Ssdt_GetDesEbusID(GeneralDataObject &obj); //check packet SSDT_API bool Ssdt_CheckPacketHandle(GeneralDataObject &obj,const wchar_t *pEBusID,bool IntoKernel); SSDT_API bool Ssdt_CheckPacketObjectIntegrity_Format(GeneralDataObject &obj,const wchar_t *pEBusID,bool IntoKernel); SSDT_API bool Ssdt_CheckPacketObjectIntegrity(GeneralDataObject &obj,const wchar_t *pEBusID, DWORD dwCommand,bool IntoKernel); //pass packet SSDT_API bool Ssdt_PassPacket(GeneralDataObject &obj,bool toeBus = false);