- 博客(146)
- 资源 (16)
- 收藏
- 关注
转载 C/C++中CRT表示什么意思?转载
但是Microsoft选择了C++,并取得了成功,这是肯定的了:象CRT,象VC,象Windows,象Office,象 SQLServer......这一方面说明了C++的优势,一方面也是Microsoft自身的因素在起作用。但就产品而言,Microsoft不是最好的,但大多都是最成功的,在看到它的不足的同时,也要看到它的优点。存在的即使不是合理的,也一定有它的合理性。至于CRT与WINDOWS API的关系,与许多人理解的相反,WINDOWS API作为Windows的一部份,是在CRT的基础上开发的。
2024-03-15 11:23:15
229
1
原创 验证 KillTimer后,是否还会继续收到Timer 消息的实验
结论:MSDN诚不欺我,KillTimer后,还可以通过PeekMessage检索到这个对应的WM_TIMER消息,窗口过程还会继续收到WM_TIMER。KillTimer后,并不会清空消息队列中对应的的WM_TIMER消息。
2024-01-25 17:27:48
482
原创 Win32 基本程序设计原理总结
WM_COMMAND消息,用以通知父窗口按钮被点击,经测试:子窗口向父窗口发送WM_COMMAND消息,或者称为父窗口会收到WM_COMMAND消息,操作系统并不是通过将WM_COMMAND消息放入到父窗口的消息队列中去,而是直接调用了父窗口的窗口过程,以 WM_COMMAND 为消息标识参数(UINT uMsg),实现这个功能的API函数正是: LRESULT DispatchMessage(const MSG *lpmsg);另外,系统还维护一个全局的系统消息队列,用来接受鼠标,键盘等外设触发的消息。
2023-12-28 18:13:30
196
转载 C++面试必备之虚函数(转)
注意,普通函数、虚函数、虚函数表都是同一个类的所有对象公有的,只有成员变量和虚函数表指针是每个对象私有的,sizeof的值也只包括vptr和var所占内存的大小(也是个常出现的问题),并且vptr通常会在对象内存的最起始位置。另外,当类有多个虚函数时,仍然只有一个虚函数表指针vptr,而此时的虚函数表vtbl中会有多个函数指针,分别指向对应的虚函数实现区域。调用普通函数时,程序根据指针的类型到类base所对应的代码区找到所对应的函数,所以都调用了类base的func函数,即指针的类型决定了普通函数的调用。
2023-05-14 15:30:03
241
原创 用windbg 中断系统api 函数查找和调试问题,实例总结
工作中,经常遇到因窗口焦点莫名丢失或转移的bug,我们知道设置焦点的系统API 函数是SetFocus,因此,我想断到调用这个函数的地方。所以,需要查看这个api 在哪个dll里,MSDN描述这个api在User32.dll里,而当尝试中断时,发现断点没用,用depends.exe查看user32.dll的导出函数,确实有这个api函数,可能真实的API函数可能另有一个,微软利用某...
2020-01-03 15:18:48
2243
转载 WinDBG常用断点命令
WinDBG常用断点命令WinDBG提供了多种设断点的命令:bp命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以bp MyApp!SomeFunction。 对于后者,WinDBG 会自动找到MyApp!SomeFunction对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)WinD...
2020-01-03 13:51:57
1586
1
原创 cherry pick操作git 将一个分支的多次提交merge到另一个分支(基于TortoiseGit客户端图文)
1、加入我们有两个分支:Trunk和ep-new分支2、我们基于trunk分支做开发,并提交多次代码到trunk分支下面我们使用TortoiseGit客户端,使用git的cherry pick 操作将提交到trunk分支的代码自动merge代码到ep-new分支具体过程:1、我们先切换到ep-new分支2.右键,show log3、切换到trunk分支的log,选...
2019-12-18 14:34:35
3804
1
转载 VC++实现窗口异形(转载)
转载地址:https://www.cnblogs.com/lmqweeds/archive/2012/07/23/2605319.html 由于工作的需要,最近一直在研究异形窗口的实现。网上也有一些相关的文章,能够满足各式各样的异形窗口要求。既然花了时间去研究,就想好好的将其总结记录下来,以免今后遇到类似问题,还要从新花时间去研究。 我需要完成的效果很简单,但实现思路适合大部分的...
2019-09-30 14:41:13
564
转载 32位C/C++程序移植到64位系统时需要注意的问题(转)
下面是做32位程序移植到64位程序时资料整理:---------------------------------------------------------------------------------------------------------------------------------概述从32位到64位,根本性的区别在于两种数据类型发生了变化:long和poin...
2019-08-13 16:35:25
5102
1
转载 dll签名两种方法(转载)
dll签名两种方法下面两种签名方法,都是对csp.dll签名,都不是CA颁发的,且效果不同,一:通过自建证书签名下载windows sdk,安装成功后,包含makecert.exe, cert2spc.exe, pvk2pfx.exe, signtool.exe工具,将要签名的csp.dll也放入工具目录,cmd命令切换到工具目录,再执行以下命令1.生成签名证书:makecert...
2019-08-06 16:47:14
4284
转载 WinDbg符号文件加载(转载)
WinDbg符号文件加载WinDbg符号文件加载skyworth2010-07-02, 15:13 下午pdb文件在d:\symcache根目录,但是始终无法加载,以下是windbg输出,为什么呢?iptsvr.pdb\8439F7A3C92A4014BCFD948DE875CD531\iptsvr.pdb 这个尤其奇怪,符号文件在symcache目录下0:034> .relo...
2019-08-06 15:35:21
2575
转载 PDB文件:每个开发人员都必须知道的(转载)
PDB文件:每个开发人员都必须知道的PDB Files: What Every Developer Must Knowhttp://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspxPDB文件:每个开发人员都必须知道的一 什么是...
2019-08-06 15:34:04
808
转载 WinDBG加载符号表的一点心得体会(转载)
WinDBG加载符号表的一点心得体会 Posted on2011-03-25 21:38Biffo Lee阅读(12246) 评论(3)编辑收藏 WinDBG无法加载符号表是很痛苦的事情,明明符号表的路径已经加载进去了,可是还是无法加断点,下面直接进入主题: 符号表无法加载,无法触发断点。 1、检查sympath是否正确...
2019-08-06 15:31:37
3280
转载 父窗口和拥有者窗口的区别(转载)
父窗口和拥有者窗口的区别一、概念和区别 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、parent、owner四个域。 所以我们可以看到,窗口之间的关系有两种:owner-owned 关系和 parent-ch...
2019-08-01 19:30:49
534
转载 详解c++指针的指针和指针的引用(转)
详解c++指针的指针和指针的引用展示一下使用指针的指针和指针的引用修改传递给方法的指针,以便更好的使用它。(这里说的指针的指针不是一个二维数组)为什么需要使用它们当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改的指针的copy而不是指针本身,原来的指针还保留着原来的...
2019-05-15 17:16:40
932
原创 C++使用JsonCpp解析Json数据 示例
1、拼接json std::vector<TAccelKeyInfo>::const_iterator iter = vec_keyinfo.begin(); //for (; iter != vec_keyinfo.end(); ++iter) { Json::FastWriter writer; Json::Value value; value["shor...
2019-03-03 10:38:28
2793
转载 Windbg 调试程序崩溃问题(转)
https://bbs.pediy.com/thread-217260.htm配置好PDB路径先!analyze -v,确定线程是哪个打开堆栈窗口,这一步配好源文件路径再.ecxr 恢复堆栈,这时候堆栈窗口应该可以看到崩溃时的正确堆栈在堆栈窗口选择显示源文件和源文件参数最好用最新的windbg,5月份出品的,windeb10.0.15063.173版本以后的版本如果栈没...
2019-01-23 10:14:45
1621
转载 Windows消息类型及说明(转)
Windows消息类型及说明转载: https://blog.csdn.net/himayan46/article/details/53432768 WM_ Window Message 窗口消息,一般用在SendMessage,PostMessage这样的消息函数中 SM_ Static Message 静态标签消息 SS_ Static Sty...
2019-01-14 11:01:45
2038
转载 UML——在Visual Studio 2013/2015中设计UML类图(转)
UML——在Visual Studio 2013/2015中设计UML类图1.UML简介Unified Modeling Language (UML)又称统一建模语言或标准建模语言。简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他们的主要用途简介:1.用例图:对系统的使用方式分类.2.类图:显示类和它们的相互关系。3.对象图:只显示...
2019-01-14 10:34:43
2150
转载 VC项目中文件类型说明
.APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。资源辅助文件。 .BMP:位图资源文件。 .BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位。用于浏览项目信息的,如果用source brower的话就必须有这个文件。可以在projec...
2018-12-18 11:21:05
859
转载 API Monitor简介(API监控工具)(转)
API Monitor简介(API监控工具)API Monitor是一个免费软件,可以让你监视和控制应用程序和服务,取得了API调用。 它是一个强大的工具,看到的应用程序和服务是如何工作的,或跟踪,你在自己的应用程序的问题。64位支持API监控支持监控的64位应用程序和服务。 64位版本只能用来监视64位应用程序和32位版本仅可用于监测的32位应用程序。 要监视在64位Windo...
2018-11-12 14:49:18
2362
转载 基于WinDbg的内存泄漏分析
基于WinDbg的内存泄漏分析在前面C++中基于Crt的内存泄漏检测一文中提到的方法已经可以解决我们的大部分内存泄露问题了,但是该方法是有前提的,那就是一定要有源代码,而且还只能是Debug版本调试模式下。实际上很多时候我们的程序会用到第三方没有源代码的模块,有些情况下我们甚至怀疑系统模块有内存泄露,但是有没有证据,我们该怎么办? 这时我们就要依靠无所不能的WinDbg了。WinDbg的!h...
2018-11-07 16:12:22
3466
转载 从点击Button到弹出一个MessageBox, 背后发生了什么(转)
从点击Button到弹出一个MessageBox, 背后发生了什么思考一个最简单的程序行为:我们的Dialog上有一个Button, 当用户用鼠标点击这个Button时, 我们弹出一个MessageBox。 这个看似简单的行为, 谁能说清楚它是如何运行起来的,背后究竟发生了什么? 下面是我个人尝试的解答: (1)我们的鼠标点击事件到达设备的驱动程序, 驱动程序把消息放...
2018-11-06 09:42:29
415
转载 windbg调试命令
windbg调试命令 #调试命令窗口 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#使用gflags.exe工具(在windbg所在目录下),让某个进程启动时,拉取windbg进行调试如下截图:当名称为captcomm.exe的进程启动时,拉起windbg调试也可通过脚本命令来实现:...
2018-11-05 19:05:40
5664
转载 Windbg实用手册(转)
Windbg实用手册Windbg工作中用的不多,所以命令老是记不住,每次使用都要重新查命令,挺烦。趁这次培训的机会好好测试和总结了一下,下次再用就方便多了。在这里一起共享一下,如果有错误,请指正。 基本知识和常用命令(1) Windbg下载地址http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx...
2018-11-02 17:09:21
599
转载 程序(进程)内存分布 解析(转)
程序(进程)内存分布 解析在多任务操作系统中的每一个进程都运行在一个属于它自己的内存沙盘中。这个沙盘就是虚拟地址空间(virtual address space),在32位模式下它总是一个4GB的内存地址块。这些虚拟地址通过页表(page table)映射到物理内存,页表由操作系统维护并被处理器引用。每一个进程拥有一套属于它自己的页表,但是还有一个隐情。只要虚拟地址被使能,那么它就会作用于这台...
2018-09-30 18:32:33
5002
转载 windows内存结构概述(转)
windows内存结构概述 13.1 Windows的虚拟地址空间安排13.1.1虚拟地址空间的分区(即虚拟地址空间布局) 进程的地址空间划分 分区 x86 32位 Windows 3GB用户模式下的x86 32位Windows X64 64位 Windows ...
2018-09-30 18:29:27
1632
转载 win32堆及内部结构(转)
win32堆及内部结构目录默认堆堆内部结构堆段堆块堆分配和释放实例前端分配器旁视列表前端分配器和低碎片前端分配器低碎片前端分配器后端分配器内存分配步骤:内存释放过程默认堆Windows在创建一个新的进程时会为该进程创建第一个堆,被称为进程的默认堆。默认堆的句柄会被保存在进程环境块_PEB的ProcessHeap字段中。要获得_PE...
2018-09-30 15:30:38
637
1
转载 windbg-!address、!vadump、!vprot(读取内存状态)(转)
转载地址:windbg-!address、!vadump、!vprot(读取内存状态)目录!address!vadump!vprot!address!address 扩展显示目标进程或目标机使用的内存信息这个学习起来比较简单:我们直接使用!address -?就可以找到它的使用说明:0:000> !address -?!address ...
2018-09-30 15:06:52
1043
转载 Appverifier使用说明及原理
转载地址 AppVerifier 特别用于检测和帮助调试内存损坏、危险的安全漏洞以及受限的用户帐户特权问题。AppVerifier 有助于创建可靠且安全的应用程序,方法是监视应用程序与Windows操作系统的交互,并配置应用程序使用的对象、注册表、文件系统和 Win32 API(包括堆、句柄和锁)。AppVerifier 还包括检查,以便预测应用程序在非管理员环境中的执行情况。 1...
2018-09-29 21:42:19
8381
转载 学习使用常用的windbg命令(u、dt、ln、x)(转)
详细(1)u命令(反汇编)(2)dt命令(查看数据结构)(3)ln命令(查找就近的符号)(4)x命令(显示模块的符号)(5)k命令(显示调用栈)(6)d命令(以数据方式显示)(7)b命令(断点)(8)lm lmvm (显示模块信息) (9) .reload (重加载模块)(10) !process !thread .process .thread(查看进程线...
2018-09-26 15:51:32
1294
转载 Win32内存结构(转)
转载地址:Win32内存结构(1)在Win32中每一个进程的虚拟地址空间大小是4GB。32位的指针能从0x00000000到0xFFFFFFFF。这使得指针有4GB种值,既覆盖了4GB的空间。请注意该4GB的地址空间是私人地址空间,它只属于某个进程。当进程中的线程在运行时,它只能使用属于本进程的内存。也就是说,对于一个线程来说,别的进程的内存是不可访问的。这样也就是说,进程A可以有一个数据保存...
2018-09-25 16:06:42
851
转载 C/C++程序员必须熟练应用的开源项目 -- 转
C/C++程序员必须熟练应用的开源项目 -- 转 作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复...
2018-09-14 17:36:23
213
转载 windbg检测句柄泄露(定位到具体代码)
转载:windbg检测句柄泄露(定位到具体代码)1.构造一个测试用例#include "stdafx.h"#include <Windows.h> void NormalFunc(){ HANDLE hEvent; hEvent = CreateEvent(NULL,TRUE,TRUE,NULL); CloseHandle(hEvent);} void H...
2018-09-10 20:19:03
761
转载 Windows 中一个应用程序的启动过程
转载:Windows 中一个应用程序的启动过程1. Explorer.exe Windows 能够流行起来,很大一个原因是它有友好的用户图形界面,操作方便简单,容易上手。在Windows环境下打开一个程序,只要双击软件的图标就行了,那么它是如何启动起来的? 当我们启动电脑进入桌面时,系统会创建 Explorer.exe 进程。Explorer.exe是Windows程序...
2018-08-31 14:12:00
1709
转载 简单建立自己的符号服务器(转)
转载地址:简单建立自己的符号服务器(转)开发团队中,随着版本的增多,用户的增多,修改遗留问题变得异常困难,pdb是个好东西,符号服务器更是个好东西。给自己的开发团队建立一个简单的符号服务器会损失不好,俗话说得好嘛,“磨刀不误砍柴工”。基本需求硬件一台,要求很简单:有操作系统,硬盘足够足够足够大(请注意用了三个足够)工具软件:symstore.exe(Debugging Tools ...
2018-08-30 17:14:12
511
转载 (转)Google-glog 日志库使用手记
(转)Google-glog 日志库使用手记作者:高张远瞩(HiLoveS)博客:http://www.cnblogs.com/hiloves/转载请保留该信息 Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。试用了一下,感觉不错,试用过程出了不少插曲。1、开源项目首页已经从https://code.google.com/p/google-g...
2018-07-13 16:18:21
499
转载 (转)使用windbg检测内存泄漏
转载地址:使用windbg检测内存泄漏缘起:作为C++程序员,检测内存泄漏是非常痛苦的事情。尤其是看着程序的内存在一直增长,你却无能为力。此时,windbg可以用来检测内存泄漏。配置windbg: 配置symbol文件路径: “SRV*d:\symbols*http://msdl.microsoft.com/download/symbols”. 增加测试程序test.exe的pdb 文件到symb...
2018-07-13 15:46:45
1657
转载 (转载)windows服务安装卸载
windows服务安装卸载转载地址:https://www.cnblogs.com/ITHomes/p/3467739.html#top到C盘下找到对应的开发VS的installutil.exe文件,复制到程序的执行文件(*.exe)相同目录下在开始程序中找到VS命令提示工具转到程序的执行文件(*.exe)目录下C:\>cd C:\Documents and Settings\Adminis...
2018-07-09 14:36:20
548
转载 extern "C"在DLL导出函数时有什么作用?
extern "C"在DLL导出函数时有什么作用?2017年08月14日 22:43:30阅读数:606extern是c/c++语言中表明函数和全局变量作用范围的关键字。该关键字告诉编译器,其声明的函数和变量可以在本模块或其他模块中使用。通常,在模块的头文件中对本模块提供给其他模块引用的函数和全局变量以关键字extern声明。例如,你写了一个DLL,在导出接口中可以声明extern "C"修饰的函...
2018-06-01 17:08:28
966
HookDemo.rar
2016-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人