《对战平台》◎cs_gamedll○○○EnvironmentInfo

《对战平台》◎cs_gamedll○○○EnvironmentInfo

上述是我之后要分析代码的命名规则

《对战平台》◎cs_gamedll代表是工程项目中的项目名

《对战平台》◎cs_gamedll○○○EnvironmentInfo是项目中某个类的代码分析

 

 1  #ifndef   __ENVIRONMENTINFO_H
 2  #define    __ENVIRONMENTINFO_H
 3  // --------------------------------------------------------------------------------------
 4  #include  " http://www.cnblogs.com/client/provider/CommBridgeBase.h "
 5  #include  " ..\..\common\base\LockCS.h "
 6 
 7  // --------------------------------------------------------------------------------------
 8 
 9 
10  // ##ModelId=44C4B617017C
11  class  CEnvironmentInfo
12  {
13  public :
14       // ##ModelId=44C4B6170186
15      CEnvironmentInfo( void );
16       // ##ModelId=44C4B6170188
17       ~ CEnvironmentInfo( void );
18 
19       // ##ModelId=44C4B617018A
20       void  getLocalIPXNetNum(UCHAR  * pNetNum);
21       // 获得本机的IPX节点号
22       // ##ModelId=44C4B617018C
23       void  getLocalIPXNodeNum(UCHAR  * pNodeNum);
24       // 在指定的内存区域查找指定数据
25 
26 
27  public :
28       // ##ModelId=44C4B6170197
29       bool                        m_fIsWin98OrLater;                     // 是WIN98系统
30       // ##ModelId=44C4B6170198
31      HMODULE                    m_hWs2_32;                             // WS2_32DLL的句柄
32       // ##ModelId=44C4B6170199
33      HMODULE                    m_hMsWsock;                            // MsWsock.dll的句柄    
34       // ##ModelId=44C4B61701A6
35      pJOYENVIRONMENT_INFO          m_lpEI;                             // C影射过来的环境变量的信息
36       // ##ModelId=44C4B61701AA
37      HANDLE                     m_hMapFile;                            // 内存影射对象的句柄
38       // ##ModelId=44C4B61701AC
39        CLockCS                    m_Lock;
40       // ##ModelId=44C4B61701B5
41      unsigned  char               m_Buffer[ 5120 ];
42  };
43  #endif   // __ENVIRONMENTINFO_H

 

 

 1  #include  " stdafx.h "
 2  #include  " environmentinfo.h "
 3 
 4 
 5  // ##ModelId=44C4B6170186
 6  CEnvironmentInfo::CEnvironmentInfo( void )
 7  {
 8      OSVERSIONINFO  osvi;
 9       // 检测系统的类型
10      osvi.dwOSVersionInfoSize  =   sizeof (OSVERSIONINFO);
11      GetVersionEx ( & osvi);
12      m_fIsWin98OrLater         =  //判断是否是98以及之后的操作系统
13          (osvi.dwPlatformId  ==  VER_PLATFORM_WIN32_WINDOWS)  &&
14          ( (osvi.dwMajorVersion  >   4 ||
15          ( (osvi.dwMajorVersion  ==   4 &&  (osvi.dwMinorVersion  >   0 ) ) ); 
16       // 内存影射的处理
17      m_hMapFile   =  OpenFileMapping(FILE_MAP_ALL_ACCESS, false , " SkyShare " );
18       if  (m_hMapFile  !=  NULL)
19          m_lpEI   =  (pJOYENVIRONMENT_INFO) MapViewOfFile(m_hMapFile,FILE_MAP_ALL_ACCESS, 0 , 0 , sizeof (JOYENVIRONMENT_INFO));
20      
21 
22  }
23 
24  // ##ModelId=44C4B6170188
25  CEnvironmentInfo:: ~ CEnvironmentInfo( void )
26  {
27       if  (m_hMapFile  !=  NULL)
28          CloseHandle(m_hMapFile);
29  }
30 
31 
32  /// /检查源IPX地址是不是本机地址
33  // bool CEnvironmentInfo::checkIPXaddrIsLoacl(PSOCKADDR_IPX piad)
34  // {
35  //     char szLog[100];
36  //     if (piad != NULL)
37  //     {
38  //         
39  //         if ((BYTE)piad->sa_nodenum[0] == (BYTE)m_lpEI->lc_nodenum[0] && \
40  //             (BYTE)piad->sa_nodenum[1] == (BYTE)m_lpEI->lc_nodenum[1] && \
41  //             (BYTE)piad->sa_nodenum[2] == (BYTE)m_lpEI->lc_nodenum[2] && \
42  //             (BYTE)piad->sa_nodenum[3] == (BYTE)m_lpEI->lc_nodenum[3] && \
43  //             (BYTE)piad->sa_nodenum[4] == (BYTE)m_lpEI->lc_nodenum[4] && \
44  //             (BYTE)piad->sa_nodenum[5] == (BYTE)m_lpEI->lc_nodenum[5] 
45  //             )
46  //         {
47  //              if (htons(IPX_LISTEN_SOCKET) == piad->sa_socket)
48  //              // {
49  //              //     return true;
50  //              // }else
51  //              //     return false;
52  //         }
53  //     }
54  //     return false;
55  // }
56  // 获得本机的IPX的网段号
57  // ##ModelId=44C4B617018A
58  void  CEnvironmentInfo::getLocalIPXNetNum(UCHAR  * pNetNum)
59  {
60      memcpy(pNetNum,m_lpEI -> lc_netnum, 4 );
61  }
62  // 获得本机的IPX节点号
63  // ##ModelId=44C4B617018C
64  void  CEnvironmentInfo::getLocalIPXNodeNum(UCHAR  * pNodeNum)
65  {
66      memcpy(pNodeNum,m_lpEI -> lc_nodenum, 6 );
67  }

API解析:

OSVERSIONINFO包含了系统的版本信息:

 

typedef  struct  _OSVERSIONINFO 
{
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
TCHAR szCSDVersion[
128 ];
} OSVERSIONINFO;

 This structure is used with the GetVersionEx function.

 

OpenFileMapping Function

dwDesiredAccess

The access to the file mapping object. This access is checked against any security descriptor on the target file mapping object. bInheritHandle

If this parameter is TRUE, a process created by the function can inherit the handle; otherwise, the handle cannot be inherited.

lpName

The name of the file mapping object to be opened. If there is an open handle to a file mapping object by this name and the security descriptor on the mapping object does not conflict with the dwDesiredAccess parameter, the open operation succeeds.

Terminal Services:  The name can have a "
1  LPVOID WINAPI MapViewOfFile(
2    __in  HANDLE hFileMappingObject,
3    __in  DWORD dwDesiredAccess,
4    __in  DWORD dwFileOffsetHigh,
5    __in  DWORD dwFileOffsetLow,
6    __in  SIZE_T dwNumberOfBytesToMap
7  );
Global\" or "Local\" prefix to explicitly open an object in the global or session name space. The remainder of the name can contain any character except the backslash character (\). For more information, see .
Windows XP:  Fast user switching is implemented using Terminal Services sessions. The first user to log on uses session 0, the next user to log on uses session 1, and so on. Kernel object names must follow the guidelines outlined for Terminal Services so that applications can support multiple users.
Windows 2000:  If Terminal Services is not running, the "Global\" and "Local\" prefixes are ignored. The remainder of the name can contain any character except the backslash character.

 

MapViewOfFile Function

Maps a view of a file mapping into the address space of a calling process.


To specify a suggested base address for the view, use the MapViewOfFileEx function. However, this practice is not recommended.

 

1  LPVOID WINAPI MapViewOfFile(
2    __in  HANDLE hFileMappingObject,
3    __in  DWORD dwDesiredAccess,
4    __in  DWORD dwFileOffsetHigh,
5    __in  DWORD dwFileOffsetLow,
6    __in  SIZE_T dwNumberOfBytesToMap
7  );

 

转载于:https://www.cnblogs.com/weisteve/archive/2011/03/08/1977555.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
此为代码,不带任何数据库,有很重要的研究价值 1.引言 4 1.1编写目的 4 1.2背景 4 1.2.1 中国战网对战平台产生的背景 4 1.2.2 对战平台的市场分析 4 1.3定义 5 1.4参考资料 6 1.5开发软件 6 2系统的结构 6 2.1客户端系统结构模块划分 6 2.1.1管道模块 6 2.1.2用户socket通信模块, 6 2.1.3主程序界面模块 6 2.1.4网络通信的信息库模块 7 2.1.5客户端界面基础类库 7 2.1.6检查系统进程加密等操作模块 7 2.1.7 检查系统进程记录数据信息写日志模块 7 2.1.8特殊cs1.5服务器客户端使用的动态连接库模块 7 2.2中国战网网络拓朴图 8 3.客户端设计说明 9 3.1客户端描述 9 3.2功能 9 3.2.1 用户登录 9 3.2.2 游戏房间、比赛房间,公共资讯 9 3.2.3游戏类型列表 10 3.2.4 房间成员信息显示 10 3.2.5 基于互联网络环境下的局域网 10 3.2.6 支持多种网络协议 10 3.2.7 支持多种局域网游戏 11 3.2.8 支持cs1.5战网服务器方式游戏 11 3.2.9 对战成绩统计和积分排名 11 3.2.10战队组队和战队排名 11 3.2.11丰富多彩的聊天系统 11 3.2.12强大的在线管理功能 12 3.2.13基于用户的针对性广告系统 12 3.2.15战币, 游戏币计费与帐务系统功能 12 3.3应用环境 12 3.4输入项 13 3.5输出项 13 3.6技术实现 13 3.6.1利用挂钩(Hook)插入DLL进行网络内容访问控制 13 3.6.2 tcp转udp设计方案 19 3.6.3 客户端皮肤方案 24 3.7客户端与服务器的流程逻辑 25 3.7.1 客户端与登陆服务器数据包流程 (TCP数据包) 25 3.7.2客户端与游戏服务器数据包流程 (TCP数据包) 27 3.8接口 30 3.9存储分配 31 3.10注释设计 31 3.11限制条件 31 3.12综合测试计划 31 3.12.1.待测产品: 31 3.12.2测试目的: 31 3.12.3测试环境: 31 3.12.4测试范围: 32 3.12.5测试策略 : 32 3.12.6测试资源 33 3.12.7测试内容 33 3.13尚未解决的问题 34 4.中国战网对战平台技术特点和优势 34
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值