资源简介
最完整的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个文件信息
评论
共有 条评论