#pragma once #include "ResDataObject.h" #ifdef DRIVERAPI_EXPORTS #define DRIVERAPI_API __declspec(dllexport) #else #define DRIVERAPI_API __declspec(dllimport) #endif typedef enum _File_Op_Mode { FILE_OP_MODE_SYNC, FILE_OP_MODE_ASYNC, FILE_OP_MODE_MAX }FILE_OP_MODE; 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, FILE_FLAG_ALLACCESS = FILE_FLAG_MAX-1 }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; //packet definition of level1 #define PACKETIDDEF (L"packetid") #define PACKETOPERATIONDEF (L"operation") #define PACKETTYPEDEF (L"packettype") #define PACKETHANDLEDEF (L"handle") #define PACKETARGSDEF (L"args") #define PACKETSTATUSDEF (L"status") //packet definition of level2 //handle definition #define HANDLE_DEVPATHDEF (L"devpath") #define HANDLE_FLAGSDEF (L"flags") #define HANDLE_LANGDEF (L"lang") #define HANDLE_OWNERIDDEF (L"ownerid") #define HANDLE_HANDLEIDDEF (L"handleid") //args.arg definition #define ARGS_ARGDEF (L"arg") //status.ret definition #define STATUS_RETDEF (L"ret") //packet definition of level3 //handle identify #define ID_MACHINEDEF (L"machineid") #define ID_EBUSDEF (L"ebusid") #define ID_PROCESSDEF (L"pid") #define ID_THREADDEF (L"tid") //arg #define ARG_ARGCMDDEF (L"argcmd") #define ARG_ARGRESDEF (L"argres") #define ARG_ARGPARAMSDEF (L"argparams") //ret #define RET_CODEDEF (L"code") #define RET_MSGDEF (L"msg") //packet definition of level4 #define ARGCMD_ADDDEF (L"add") #define ARGCMD_DELDEF (L"del") #define ARGCMD_UPDATEDEF (L"update") #define ARGCMD_GETDEF (L"get") #define ARGCMD_EXECDEF (L"exec") class DRIVERAPI_API ResourceObject { public: ResourceObject(void); ~ResourceObject(void); static size_t GetDeviceCount(ResDataObject &ResourceObject); }; class DRIVERAPI_API HandleObject { public: HandleObject(void); ~HandleObject(void); static const wchar_t* GetDevPath(ResDataObject &handleobj); static FILEFLAGS GetFileFlags(ResDataObject &handleobj); static const wchar_t* GetLang(ResDataObject &handleobj); static ResDataObject &GetOwnerID(ResDataObject &handleobj); static ResDataObject &GetHandleID(ResDataObject &handleobj); //static bool CheckHandleObjectIntegrity(ResDataObject &handleobj,const wchar_t *pLocalBusID,bool Request,bool IntoKernel); }; class DRIVERAPI_API PacketCmdObject { public: PacketCmdObject(void); ~PacketCmdObject(void); //static wstring m_file_operations[FILE_OP_MAX]; //static wstring m_packet_types[PACKET_TYPE_MAX]; //static wstring m_packet_retcode[PACKET_RET_MAX]; static PACKETTYPE GetPacketType(ResDataObject &obj); static FILEOPERATION GetFileOperation(ResDataObject &obj); static ResDataObject &GetPacketHandle(ResDataObject &obj); static ResDataObject &GetPacketArgs(ResDataObject &obj); static ResDataObject &GetPacketStatus(ResDataObject &obj); static const wchar_t* GetHandleEbusID(ResDataObject &obj); static const wchar_t* GetOwnerEbusID(ResDataObject &obj); static bool CheckPacketObjectIntegrity(ResDataObject &obj,const wchar_t *pLocalBusID,bool IntoKernel); };