- 博客(21)
- 资源 (9)
- 收藏
- 关注
原创 内存管理(二)
探索虚拟内存 1.0 系统信息 GetSystemInfo, GetNativeSystemInfo.想了解64位windows提供的32位模拟层,参阅:http://www.microsoft.com/whdc/system/platform/64bit/wow64_bestprac.mspx. 1.1 虚拟内存状态 GlobalMemoryStatus可以获
2010-05-29 15:35:00 1546 1
原创 内存管理(一)
一. Windows内存管理体系结构1.0 进程的虚拟地址空间 对于32位进程虚拟地址空间大小为4GB,64为16EB(exabytes,百亿字节),每个进程都有自己的私有地址空间,要想正常访问数据需要把物理存储器分配或映射到相应的地址空间。 说明:在windows中正在运行的线程看不到属于操作系统本身的内存,这意味着它不能无意间访问到操作系统的数据。1.1 虚拟地址
2010-05-29 11:12:00 1118
原创 结构化异常
终止处理程序 1. (structured exception handling, SEH)结构化异常处理。 不同的编译器针对SEH的实现不尽相同,这里采用Microsoft Visual C++ 编译器规定的语法。 说明:不要混淆结构化异常处理与C++异常处理,c++异常处理在形式上表现为使用关键字catch和throw,这和结构化异常处理的形式不同。M
2010-05-27 22:35:00 814
原创 What static_cast is actually doing
What static_cast http://www.codeproject.com/kb/cpp/static_cast.aspx翻译:http://www.vckbase.com/document/viewdoc/?id=1651
2010-05-27 21:46:00 604
转载 关于Lempel-Ziv压缩算法的笔记
Lempel-Ziv, 简称LZ, 拥有LZ77, LZ78, LZW几种不同的演变算法!LZ是一种典型的字典型压缩算法, 巧妙的利用字典, 减少信息量。例子:原始编码为: 1001011011010101011现在有空字典一个, 首先由第一的bit开始, 索引1对应1,因为字典中没有0这个元素, 所以索引2对应0, 第三个bit, 0已经出现在字典中, 我们推后一位01,没有出
2010-05-26 13:45:00 7045
原创 动态链接库函数启动器Rundll32
HMODULE g_hmodDLL;BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){ if (ul_reason_for_call == DLL_PROCESS_ATTA
2010-05-26 10:40:00 1014
转载 VC++中调试Release版本
自:http://www.china-askpro.com/msg36/qa35.shtml VC++中调试Release版本时怎样设置断点 编号:QA003535 建立日期: 2000年11月13日 最后修改日期:2001年12月11日 所属类别: C/C++ - 其他方面 打听: 操作系统: win9x 编程工具: VC6.0 问题: VC++
2010-05-26 09:09:00 1286
原创 动态链接库(三)
DLL注入和API拦截1.0 SetWindowLongPtr(hwnd, GWLP_WNDPROC,MySubclassProc);改变窗口的行为。如果打算从同一个进程中的窗口派生子类窗口,那么应该利用SetWindowSubclass,GetWindowSubclass,RemoveWindowSubclass,以及DefSubclassProc,参阅Subclassing Contr
2010-05-25 00:12:00 1076
原创 线程局部存储
窗口附加字节(window extra bytes)通过使用SetWindowWord和SetWindowLong函数来将数据与一个指定的窗口关联起来。可以使用TLS将数据与一个正在执行的指定线程关联起来(例如我们可以将创建线程的时间与线程关联起来);然后当线程结束的时候可以知道线程的运行的时间。 c/c++运行库使用了TLS. 动态TLS:四个使用函数Tls
2010-05-24 00:16:00 607
原创 A DCOM Tutorial
A DCOM Tutorial, Step 1http://www.codeproject.com/KB/COM/hellotutorial1.aspx Questions and Answershttp://www.codeproject.com/KB/COM/hellotutorialqa.aspx A DCOM Tutorial, Step 7http://www
2010-05-22 01:55:00 519
原创 COM Guide
The COM Programmers Cookbookhttp://msdn.microsoft.com/en-us/library/ms809982(v=MSDN.10).aspx The COM Macro-Architecture Topologyhttp://www.codeproject.com/KB/COM/macrotopomain.aspx Introd
2010-05-22 01:49:00 670
转载 ATL中的RGS文件介绍
VC的ATL向导会生成com对象注册用的rgs文件。如果程序中有想写到注册表中的地方,可以手工编辑这个脚本,可以省去调用一堆操作注册表的API。关于rgs的详细规则,MSDN上面有,搜索ATL Registrar这个主题即可以看到,下面只是一点简单的介绍:HKCR //表示下面的注册表项都写到HKCR下面 { SecEdit.EditCtrl.1 = s EditCtrl Cl
2010-05-22 01:19:00 2980
原创 The Complete Guide to C++ Strings
The Complete Guide to C++ Strings, Part I - Win32 Character Encodings:http://www.codeproject.com/kb/string/CPPStringGuide1.aspx The Complete Guide to C++ Strings, Part II - String Wrapper Cl
2010-05-22 01:07:00 749
原创 动态链接库(二)
DLL高级技术 1.1 显示载入DLL模块:LoadLibrary,LoadLibraryEx.两个函数的返回值HMODULE表示文件映像被映射到的虚拟内存地址,等价于HINSTANCE(DllMain入口点函数所接收的参数),LoadLibraryEx函数有两个额外的参数:hFile(保留应为NULL),dwFlags: DONT_RESOLVE_DLL_REFE
2010-05-21 22:26:00 1801
转载 VC中缺省库冲突的解决
VC在编译程序时有两个习惯:1、在从头开始编译时(即生成makefile时),将源文件名按字母排序后,依次处理;2、一边编译一边决定需要哪些缺省库。 它的这些习惯有时会造成奇怪的编译错误,例如项目中有两个文件:charutil.cgbuni.cpp其中gbnni.cpp用到了MFC库。编译器先处理charutil.c,然后觉得需要link一个C Runtime库,根据项目设置选择了LIBC
2010-05-21 00:06:00 609
转载 介绍Windows的窗口、消息、子类化和超类化
介绍Windows的窗口、消息、子类化和超类化这篇文章本来只是想介绍一下子类化和超类化这两个比较“生僻”的名词。为了叙述的完整性而讨论了Windows的窗口和消息,也简要讨论了进程和线程。子类化(Subclassing)和超类化(Superclassing)是伴随Windows窗口机制而产生的两个复用代码的方法。不要把“子类化、超类化”与面向对象语言中的派生类、基类混淆起来。“子类化、超类
2010-05-21 00:00:00 812
转载 在VC中编译、运行程序的小知识点
1、Run-Time LibraryRun-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C Run-Time库的大部分源代码
2010-05-20 23:58:00 387
原创 动态链接库(一)
一 概述 DLL实际上是一组源代码模块,提供一些供其他DLL或应用程序调用的函数。在使用DLL之前,必须将DLL映像文件映射到调用进程的相对应的地址空间,有两种载入方法:隐式链接和显示链接。 隐式链接在进程创建的时候载入,一个新创建的进程只有在将可执行模块和所有的DLL模块隐射到进程的地址 空间后进程的主线程才开始执行,可以通过#pragram commen
2010-05-20 23:19:00 565
原创 创建浏览对话框
BROWSEINFO bi; //BROWSEINFO结构体 TCHAR szBuffer[512]=""; TCHAR szFullPath[512]=""; bi.hwndOwner = m_hWnd; //m_hWnd你的程序主窗口 bi.pidlRoot = NULL;
2010-05-20 17:54:00 507
转载 VS2005项目的安装与布署
一、VS2005制作安装包的“系统必备”选项“系统必备”,通过该选项,可以选择部署应用程序需要预先安装的组建,包括。net fx和MDAC等。“系统必备”选项中可以不仅可以选择需要预安装的组件,而且提供了“安装源”的自由选择。打开系统项目属性,选择发布->系统必备,如下图:<img onclick="function onclick(){function onclick(){win
2010-05-14 12:28:00 668
转载 奇妙的Base64编码
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在发送电子邮件时,服务器认证的用户名和密码需要用Base64编码,附件也需要用Base64编码。下面简单介绍Base64算法的原理,由于代码太长就不在此贴出Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的
2010-05-13 18:48:00 1423
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人