资源简介

最完整的IOCP编程例子,从控件封装、通讯协议、上传下载、SQL查询到日志查看,都有完整实现。程序架构实现了:可纵向调整程序性能、控制协议开关、日志配置等一序列实现。

资源截图

代码片段和文件信息

/*

Fast Memory Manager: BCB support 2.0

Description:
 FastMM support unit for BCB6 1.0. Loads FastMM4 on startup of the Borland C++
 Builder application or DLL.

Usage:
 1) Under the Project -> Options -> linker menu uncheck “Use Dynamic RTL“
    (sorry won‘t work with the RTL DLL).
 2) Add FastMM4.pas to your project and build it so that FastMM4.hpp is
    created.
 3) Add FastMM4BCB.cpp to your project.
 FastMM will now install itself on startup and replace the RTL memory manager.

Acknowledgements:
 - Jarek Karciarz Vladimir Ulchenko (Vavan) and Bob Gonder for their help in
   implementing the initial BCB support.
 - JiYuan Xie for doing an entire rewrite of this unit to allow leak reporting
   etc. under BCB.

Change log:
 Version 1.00 (15 June 2005):
  - Initial release. Due to limitations of BCB it cannot be uninstalled (thus
    no leak checking and not useable in DLLs unless the DLL always shares the
    main application‘s MM). Thanks to Jarek Karciarz Vladimir Ulchenko and Bob
    Gonder for their help.
 Version 1.01 (6 August 2005):
  - Fixed a regression bug (Thanks to Omar Zelaya).
 Version 2.00 (22 April 2008):
  - Rewritten by JiYuan Xie to implement leak reporting etc. (Thank you!)

*/

//#ifndef _NO_VCL

#pragma hdrstop
#include “FastMM4Messages.hpp“
#include “FastMM4.hpp“

#pragma option push
#pragma option -k- -d -vi- -O2 -b- -3 -a8 -pc -RT- -x -xd -r -AT -vG- -vG0- -vG1- -vG2- -vG3- -vGc- -vGt- -vGd-

#ifdef __cplusplus
extern “C“ {
#endif

#ifdef PatchBCBTerminate

#ifdef FullDebugMode
#ifndef LoadDebugDLLDynamically

#pragma link “FastMM_FullDebugMode.lib“

#if defined(RawStackTraces)
__declspec(dllimport) void __fastcall GetRawStackTrace(unsigned * AReturnAddresses
  unsigned AMaxDepth unsigned ASkipframes);
#else
__declspec(dllimport) void __fastcall GetframebasedStackTrace(unsigned * AReturnAddresses
  unsigned AMaxDepth unsigned ASkipframes);
#endif
__declspec(dllimport) void __fastcall LogStackTrace(unsigned * AReturnAddresses
  unsigned AMaxDepth char *ABuffer);
  
#endif
#endif

#pragma pack(push1)
typedef struct {
  unsigned char JmpInst; //E9
  int Offset;
} TRelativeJmp32 * PRelativeJmp32;

typedef struct {
  unsigned short JmpInst; //FF 25
  void * * DestPtr;
} TIndirectJmp32 * PIndirectJmp32;
#pragma pack(pop)

//Return true if write OK
bool __fastcall WriteMem(void * Location void * Data unsigned int DataSize)
{
  unsigned long OldProtect;
  
  if (VirtualProtect(Location DataSize PAGE_EXECUTE_READWRITE &OldProtect))
  {
    memmove(Location Data DataSize);

    FlushInstructionCache(GetCurrentProcess() Location sizeof(DataSize));
    VirtualProtect(Location DataSize OldProtect &OldProtect);

    return true;
  }
  else {
    return false;
  }
}

#define RelativeJmp32Inst  (0xE9)

//Return true if patch OK
bool __fastcall PatchProc(void * OldProc void * NewProc TRelativeJmp32 * Backu

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         411  2010-11-29 15:35  CleanInplace.bat
     文件       11193  2012-08-18 00:23  测试结果.xlsx
     目录           0  2012-08-18 22:51  Bin\
     文件       31232  2010-04-04 18:02  Bin\borlndmm.dll
     文件      176128  2010-11-29 15:34  Bin\FastMM_FullDebugMode.dll
     文件     1717248  2012-08-18 22:45  Bin\IOCPDemoCln.exe
     文件     1152512  2012-08-18 22:49  Bin\IOCPDemoSvr.exe
     文件         308  2012-08-18 22:23  Bin\IOCPDemoSvr.ini
     目录           0  2012-08-18 22:51  Dcu\
     目录           0  2012-08-18 23:03  Document\
     文件      129024  2012-08-18 23:03  Document\IOCPDemo通讯协议.doc
     目录           0  2012-08-18 17:01  Source\
     目录           0  2012-08-18 17:01  Source\FastMM492\
     目录           0  2012-08-18 17:01  Source\FastMM492\CPP Builder Support\
     文件       45724  2010-11-29 15:34  Source\FastMM492\CPP Builder Support\FastMM4BCB.cpp
     目录           0  2012-08-18 17:01  Source\FastMM492\Demos\
     目录           0  2012-08-18 17:01  Source\FastMM492\Demos\Dynamically Loaded DLL\
     文件        1213  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\ApplicationForm.dfm
     文件        1045  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\ApplicationForm.pas
     文件        1279  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\DLLForm.dfm
     文件         651  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\DLLForm.pas
     文件        1678  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\DynamicallyLoadedDLLDemo.groupproj
     文件         515  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\TestApplication.cfg
     文件         236  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\TestApplication.dpr
     文件        3387  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\TestApplication.dproj
     文件        4396  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\TestApplication.res
     文件         536  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\TestDLL.cfg
     文件         308  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\TestDLL.dpr
     文件        3389  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\TestDLL.dproj
     文件        4396  2010-11-29 15:34  Source\FastMM492\Demos\Dynamically Loaded DLL\TestDLL.res
     目录           0  2012-08-18 17:01  Source\FastMM492\Demos\Replacement borlndmm DLL\
............此处省略293个文件信息

评论

共有 条评论