锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓漢鎰熻榪欎笉鏄竴涓ソ鏂瑰悜錛岋紝錛屽仛涓椹兘瑕佹妸瀵嗙爜甯︿笂錛岋紝錛屼笉榪囪繖鏍鋒湇鍔″櫒璁捐紜疄綆鍗曞緢澶氾紝錛岋紝
]]>
浠庡ぇ灞涓婄湅Mission鏄拰鏁翠綋鐨凪VC妗嗘灦鍗忎綔鐨勶紝閭erverListData鏉ヨ錛孲erverList榪欎竴涓昏緫鍙互鍗曠嫭鍑烘潵錛岀淮鎶や笁涓綅緗瓺ata銆丮ission銆乂iew
鍏蜂綋鍒發ist data鐨勮幏鍙栭兘鐩存帴鐢盡ission瀹屾垚錛屽叾浠栨ā鍧椾箣闇瑕佷嬌鐢ㄥ氨OK錛孧ission鑷繁鏈夌瓥鐣ュ喅瀹氫綍鏃跺幓鑾峰彇錛屾垨鑰呭畾鏃舵洿鏂?/p>
//鎺ユ敹鏄犲皠
const BYTE g_RecvByteMap[256]=
{
0x51,0xA1,0x9E,0xB0,0x1E,0x83,0x1C,0x2D,0xE9,0x77,0x3D,0x13,0x93,0x10,0x45,0xFF,
0x6D,0xC9,0x20,0x2F,0x1B,0x82,0x1A,0x7D,0xF5,0xCF,0x52,0xA8,0xD2,0xA4,0xB4,0x0B,
0x31,0x97,0x57,0x19,0x34,0xDF,0x5B,0x41,0x58,0x49,0xAA,0x5F,0x0A,0xEF,0x88,0x01,
0xDC,0x95,0xD4,0xAF,0x7B,0xE3,0x11,0x8E,0x9D,0x16,0x61,0x8C,0x84,0x3C,0x1F,0x5A,
0x02,0x4F,0x39,0xFE,0x04,0x07,0x5C,0x8B,0xEE,0x66,0x33,0xC4,0xC8,0x59,0xB5,0x5D,
0xC2,0x6C,0xF6,0x4D,0xFB,0xAE,0x4A,0x4B,0xF3,0x35,0x2C,0xCA,0x21,0x78,0x3B,0x03,
0xFD,0x24,0xBD,0x25,0x37,0x29,0xAC,0x4E,0xF9,0x92,0x3A,0x32,0x4C,0xDA,0x06,0x5E,
0x00,0x94,0x60,0xEC,0x17,0x98,0xD7,0x3E,0xCB,0x6A,0xA9,0xD9,0x9C,0xBB,0x08,0x8F,
0x40,0xA0,0x6F,0x55,0x67,0x87,0x54,0x80,0xB2,0x36,0x47,0x22,0x44,0x63,0x05,0x6B,
0xF0,0x0F,0xC7,0x90,0xC5,0x65,0xE2,0x64,0xFA,0xD5,0xDB,0x12,0x7A,0x0E,0xD8,0x7E,
0x99,0xD1,0xE8,0xD6,0x86,0x27,0xBF,0xC1,0x6E,0xDE,0x9A,0x09,0x0D,0xAB,0xE1,0x91,
0x56,0xCD,0xB3,0x76,0x0C,0xC3,0xD3,0x9F,0x42,0xB6,0x9B,0xE5,0x23,0xA7,0xAD,0x18,
0xC6,0xF4,0xB8,0xBE,0x15,0x43,0x70,0xE0,0xE7,0xBC,0xF1,0xBA,0xA5,0xA6,0x53,0x75,
0xE4,0xEB,0xE6,0x85,0x14,0x48,0xDD,0x38,0x2A,0xCC,0x7F,0xB1,0xC0,0x71,0x96,0xF8,
0x3F,0x28,0xF2,0x69,0x74,0x68,0xB7,0xA3,0x50,0xD0,0x79,0x1D,0xFC,0xCE,0x8A,0x8D,
0x2E,0x62,0x30,0xEA,0xED,0x2B,0x26,0xB9,0x81,0x7C,0x46,0x89,0x73,0xA2,0xF7,0x72
};
// MapSend
desData = g_SendByteMap[(BYTE)(srcData+m_cbSendRound)];
m_cbSendRound += 3;
// MapRecv
desData = g_RecvByteMap[cbData] - m_cbRecvRound;
m_cbRecvRound += 3;
鏄犲皠鍔犲瘑鍘熺悊鍒嗘瀽錛?br />綰﹀畾srcData琛ㄧず鍑嗗鍔犲瘑鐨勬暟鎹甦esData琛ㄧず鍔犲瘑鍚庣殑鏁版嵁錛宻endMap琛ㄧず鍙戦丮ap錛宺ecvMap琛ㄧず鎺ユ敹Map錛?br />灝變互涓婁唬鐮佷腑鎭掓湁:
鎺ㄥ錛?br />if desData == sendMap[srcData + offset]
then srcData == recvMap[desData] - offset
榪欎釜鍏紡鍙互鑷繁鍙栦竴涓猍0, 255]涔嬮棿鐨勫鹼紝甯﹀埌涓婇潰涓や釜map涓幓綆楋紝錛岋紝
鍒嗘瀽錛?br />BYTE鍙兘鐨勫兼槸0鍒?55錛屾濂芥槸map鐨勭儲寮曘?br />sendMap鎻愪緵鎶婂疄闄呭煎彉鎴恟ecvMap鐨勭儲寮曠殑鑳藉姏銆?br />recvMap鎻愪緵鎶妑ecvMap绱㈠紩榪樺師鎴愮湡瀹炲肩殑鑳藉姏銆?br />offset鐨勫紩鍏ユ槸涓轟簡鍔犲己鐮磋В闅懼害錛屽敮涓鍙兘鐤戞儜鐨勯棶棰樻槸BYTE婧㈠嚭錛岃繖涓彲浠ュ弬鑰冭綆楁満緇勬垚鍘熺悊鍓嶅嚑绔犮?br />鎴戜滑鍙互榪欐牱灞卞錛?br />class CSendMapper;
class CRecvMapper;
寰堟樉鐒秙endMap鏄拰CSendMapper綾葷揣鑰﹀悎鐨勶紝recvMapper鍜孋RecvMapper綾葷揣鑰﹀悎
鎵浠ワ細
class CSendMapper
;
class CRecvMapper
static const BYTE[256] ms_recvMap;
鎺ヤ笅鏉ユ槸offset錛屽湪緗戠嫄鐨勪唬鐮佷腑姣忔閮芥湁濡備笅鎿嶄綔錛歮_cbSendRound += 3;
鎵浠ffset鏄拰Mapper瀵硅薄鑰﹀悎鐨勶紝鍚屾椂涔熸槸涓婁笅鏂囩浉鍏崇殑錛岃繖鏍蜂篃鍊掔疆mapper鏄笂涓嬫枃鐩稿叧鐨勩?br />class CSendMapper
static const BYTE[256] ms_sendMap;
;
class CRecvMapper
static const BYTE[256] ms_recvMap;
BYTE m_btOffset;
榪欐牱錛屽彧瑕佹槸offset鍖歸厤鐨剅ecv鍜宻end鍗忎綔灝辮兘瀹炵幇鏁版嵁鍔犺В鏄犲皠浜嗭紝錛岋紝
鏈鍚庣殑嫻嬭瘯浠g爜濡備笅錛圡AP鍑芥暟琚疄鐜扮殑鏃跺欐敼浜嗭紝榪斿洖鍊肩殑鍋氭硶鍐欒搗鏉ユ槸鏂逛究浜嗭紝浣嗘槸浼樺寲鐨勬椂鍊欐瘮杈冮夯鐑︼級錛?
nf6602::CSendMapper sendMapper;
_el::TBYTE btTem = 0;
sendMapper.SendMap(0, btTem);
if (0x70 != btTem)
{
std::cout << "sendMapper.SendMap faild!" << std::endl;
}
nf6602::CRecvMapper recvMapper;
btTem = 0;
recvMapper.RecvMap(0, btTem);
if (0x51 != btTem)
{
std::cout << "recvMapper.RecvMap faild!" << std::endl;
}
//if desData == sendMap[srcData]
//then srcData == recvMap[desData]
for (int i = 0; i < _EL_MAX_TBYTE*10; i++)
{
_el::TBYTE btSrcData = i;
_el::TBYTE btDesData = 0;
sendMapper.SendMap(btSrcData, btTem);
recvMapper.RecvMap(btTem, btDesData);
if (btSrcData != btDesData)
{
std::cout << "if desData == sendMap[srcData] then srcData == recvMap[desData] faild!" << std::endl;
}
else
{
int j = 0 ;
}
}
鍦ㄦ潵鐪嬮偅涓猦elp宸ュ叿妯$増綾?br />template <typename IModeluInterface> class CTempldateHelper
//鏋勯犲嚱鏁?br /> CTempldateHelper(REFGUID Guid, DWORD dwVersion);
//鏋勯犲嚱鏁?br /> CTempldateHelper(REFGUID Guid, DWORD dwVersion, LPCTSTR pszModuleDll, LPCSTR pszCreateProc);
涓や釜鏋勯犲嚱鏁幫紝鑳界湅鍑虹偣浠涔堜笉錛岋紝錛?br />// 榪欎唬琛―LL鐨勫悕錛屽拰DLL涓垱寤虹粍浠剁殑鍑芥暟鍚嶏紝鍒憡璇夋垜浣犱笉鐭ラ亾鍔ㄦ佸姞杞絛ll
LPCTSTR pszModuleDll, LPCSTR pszCreateProc
// 榪欎簺紼鐑傜彮瀛愬氨鏄殣钘忎簡鍔ㄦ佸姞杞界殑榪囩▼鑰屽凡
//鑾峰彇閿欒
inline LPCTSTR GetErrorDescribe() const;
//鎸囬拡閲嶈澆
inline IModeluInterface * operator->() const;
//鑾峰彇鎺ュ彛
inline IModeluInterface * GetInterface() const;
榪欐牱鐪嬭搗鏉ュ緢緹庯紝鍏跺疄闅愯棌浜嗗お澶氫笢瑗匡紝闄嶄綆浜嗕唬鐮佺殑鍙鎬с傛帴鍙i兘鐪嬩笉鍒頒簡錛岋紝錛屽潙鐖圭殑錛岋紝錛?/p>