Initial commit
This commit is contained in:
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Linux",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/../common",
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"defines": [
|
||||
"_SERVER"
|
||||
],
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "gnu++14",
|
||||
"intelliSenseMode": "linux-gcc-x64",
|
||||
"compilerPath": "/usr/bin/gcc"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
Vendored
+31
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "C/C++: g++ build and debug active file",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${fileDirname}/../deploy/libParams.so",
|
||||
"args": [],
|
||||
"stopAtEntry": false,
|
||||
"cwd": "${fileDirname}",
|
||||
"environment": [],
|
||||
"externalConsole": false,
|
||||
"MIMode": "gdb",
|
||||
"setupCommands": [
|
||||
{
|
||||
"description": "Enable pretty-printing for gdb",
|
||||
"text": "-enable-pretty-printing",
|
||||
"ignoreFailures": true
|
||||
},
|
||||
{
|
||||
"description": "Set Disassembly Flavor to Intel",
|
||||
"text": "-gdb-set disassembly-flavor intel",
|
||||
"ignoreFailures": true
|
||||
}
|
||||
],
|
||||
"preLaunchTask": "C/C++: g++ build libParams.so",
|
||||
"miDebuggerPath": "/usr/bin/gdb"
|
||||
}
|
||||
],
|
||||
"version": "2.0.0"
|
||||
}
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"C_Cpp.default.includePath": [
|
||||
"${workspaceFolder}/../common"
|
||||
]
|
||||
}
|
||||
Vendored
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"tasks": [
|
||||
{
|
||||
"type": "cppbuild",
|
||||
"label": "C/C++: g++ build libParams.so",
|
||||
"command": "/usr/bin/g++",
|
||||
"args": [
|
||||
"-fdiagnostics-color=always",
|
||||
"-g",
|
||||
"${workspaceFolder}/*.cpp",
|
||||
"-std=c++11",
|
||||
"-fPIC",
|
||||
"-shared",
|
||||
"-I","${workspaceFolder}/../common",
|
||||
"-o","${workspaceFolder}/../deploy/libParams.so",
|
||||
"-D","_SERVER"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"problemMatcher": [
|
||||
"$gcc"
|
||||
],
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"detail": "Task generated by Debugger."
|
||||
}
|
||||
],
|
||||
"version": "2.0.0"
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
#include "typedef.h"
|
||||
#include "Param.h"
|
||||
|
||||
#ifdef _SERVER
|
||||
DWORD PM_HandleParam( DWORD dwParam1, DWORD dwParam2 )
|
||||
{
|
||||
DWORD dwRet = dwParam1;
|
||||
int iShift = dwParam2 % 32; //移位个数
|
||||
|
||||
DWORD dwLoRev=0xFFFFFFFF;
|
||||
for( int i=0; i<iShift; i++ ){
|
||||
dwLoRev >>= 1; //低32-x位
|
||||
}
|
||||
|
||||
DWORD dwHiRev = 0xFFFFFFFF - dwLoRev; //高x位
|
||||
DWORD dwTemp1 = dwRet & dwHiRev; //取高x位
|
||||
|
||||
dwRet = (dwRet<<iShift) | (dwTemp1>>(32-iShift)); //左移x位 + 高x位右移32-x位
|
||||
|
||||
DWORD dwTemp2 = ~(dwRet & dwLoRev) & dwLoRev; //低32-x位取反
|
||||
|
||||
return (dwRet & dwHiRev) | dwTemp2; //高x位 + 低32-x位取反
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
DWORD PM_GetParam( void* param1, void* param2, DWORD dwParam )
|
||||
{
|
||||
DWORD dwRet = (((long)param1&0xFFFF)<<16) | ((long)param2&0xFFFF); //分别取低16位
|
||||
int iShift = dwParam % 32; //移位个数
|
||||
|
||||
DWORD dwLoMask=0, dwLoRev=0xFFFFFFFF;
|
||||
for( int i=0; i<iShift; i++ ){
|
||||
dwLoMask = (dwLoMask<<1) + 1; //低x位
|
||||
dwLoRev >>= 1; //低32-x位
|
||||
}
|
||||
|
||||
DWORD dwHiRev = 0xFFFFFFFF - dwLoRev; //高x位
|
||||
|
||||
//取反加密
|
||||
DWORD dwTemp1 = ~(dwRet & dwLoRev) & dwLoRev; //低32-x位取反
|
||||
dwRet = (dwRet & dwHiRev) | dwTemp1; //高x位 + 低32-x位取反
|
||||
//移位
|
||||
DWORD dwTemp2 = dwRet & dwLoMask; //低x位
|
||||
dwRet = (dwRet>>iShift) | (dwTemp2<<(32-iShift)); //右移x位 + 低x位左移32-x位
|
||||
|
||||
return dwRet;
|
||||
}
|
||||
|
||||
void PM_SetParam( void** param1, void** param2, DWORD dwParam )
|
||||
{
|
||||
*param1 = (void*)(((long)*param1 & (long)0xFFFFFFFFFFFF0000) + ( dwParam>>16 ));
|
||||
*param2 = (void*)(((long)*param2 & (long)0xFFFFFFFFFFFF0000) + ( dwParam&0xFFFF ));
|
||||
}
|
||||
|
||||
DWORD g_dwMMParam = 0, //MM传递参数
|
||||
g_dwVerifyParam = 0; //CS传递参数
|
||||
|
||||
void PM_SetMMParam( void* param1, void* param2 )
|
||||
{
|
||||
g_dwMMParam = (((long)param1&0xFFFF)<<16) | ((long)param2&0xFFFF); //分别取低16位
|
||||
g_dwVerifyParam = 0;
|
||||
}
|
||||
|
||||
DWORD PM_GetMMParam( DWORD dwParam )
|
||||
{
|
||||
DWORD dwRet = g_dwMMParam;
|
||||
int iShift = dwParam % 32; //移位个数
|
||||
|
||||
DWORD dwLoMask=0, dwLoRev=0xFFFFFFFF;
|
||||
for( int i=0; i<iShift; i++ ){
|
||||
dwLoMask = (dwLoMask<<1) + 1; //低x位
|
||||
dwLoRev >>= 1; //低32-x位
|
||||
}
|
||||
|
||||
DWORD dwHiRev = 0xFFFFFFFF - dwLoRev; //高x位
|
||||
|
||||
//取反加密
|
||||
DWORD dwTemp1 = ~(dwRet & dwLoRev) & dwLoRev; //低32-x位取反
|
||||
dwRet = (dwRet & dwHiRev) | dwTemp1; //高x位 + 低32-x位取反
|
||||
//移位
|
||||
DWORD dwTemp2 = dwRet & dwLoMask; //低x位
|
||||
dwRet = (dwRet>>iShift) | (dwTemp2<<(32-iShift)); //右移x位 + 低x位左移32-x位
|
||||
|
||||
return dwRet;
|
||||
}
|
||||
|
||||
void PM_SetVerifyParam( DWORD dwParam )
|
||||
{
|
||||
g_dwVerifyParam = dwParam==0 ? g_dwMMParam : dwParam;
|
||||
}
|
||||
|
||||
void PM_VerifyParam( void** param1, void** param2 )
|
||||
{
|
||||
*param1 = (void*)(((long)*param1 & (long)0xFFFFFFFFFFFF0000) + ( g_dwVerifyParam>>16 ));
|
||||
*param2 = (void*)(((long)*param2 & (long)0xFFFFFFFFFFFF0000) + ( g_dwVerifyParam&0xFFFF ));
|
||||
}
|
||||
|
||||
#endif //_SERVER
|
||||
@@ -0,0 +1,32 @@
|
||||
#ifndef ParamH
|
||||
#define ParamH
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#define PARDEF _declspec(dllexport) DLLAPI
|
||||
#else
|
||||
#define PARDEF
|
||||
#endif
|
||||
|
||||
#ifdef _SERVER
|
||||
PARDEF DWORD PM_HandleParam( DWORD dwParam1, DWORD dwParam2 );
|
||||
|
||||
#else
|
||||
PARDEF DWORD PM_GetParam( void* param1, void* param2, DWORD dwParam );
|
||||
PARDEF void PM_SetParam( void** param1, void** param2, DWORD dwParam );
|
||||
|
||||
PARDEF void PM_SetMMParam( void* param1, void* param2 );
|
||||
PARDEF void PM_VerifyParam( void** param1, void** param2 );
|
||||
|
||||
PARDEF DWORD PM_GetMMParam( DWORD dwParam );
|
||||
PARDEF void PM_SetVerifyParam( DWORD dwParam );
|
||||
#endif //_SERVER
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //_PARAM_H_
|
||||
Reference in New Issue
Block a user