windows
文章平均质量分 80
1390811049
这个作者很懒,什么都没留下…
展开
-
VS查看对象的虚表
在VS中的导出虚函数表在DirectX SDK中的相关例子中,打开对应的工程按如下方式操作:打开项目属性页,配置属性|C/C++|命令行|其它选项(D)例如:/d1 reportSingleClassLayoutIDirect3DDevice9可以导出IDirect3DDevice9的继承和虚函数表信息已启动生成…1>------ 已启动生成: 项目: CFHappy, 配置: Release x64 ------1>pch.cpp1>Utils.cpp1>CFHap原创 2022-04-23 18:39:32 · 495 阅读 · 0 评论 -
GdiPlus
GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。GDI的出现使程序员无需要关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。GDI+是Wind原创 2021-12-12 17:07:30 · 2249 阅读 · 0 评论 -
Windows对话框
一个对话框模板资源创建一个无模式的对话框CreateDialog()函数函数功能:CreateDialog宏从一个对话框模板资源创建一个无模式的对话框,CreateDiaog宏使用CreateDialogParam函数。函数原型:HWND CreateDialog(HINSTANCE hlnstance,LPCTSTR lpTemplate,HWND hWndParent,DLGPROC IpDialogFunc);新建一个windows空项目添加一个main.cpp添加一个dialog资源文原创 2021-12-12 15:32:07 · 1303 阅读 · 0 评论 -
GUI绘图
简单图形绘制在win32上面绘制图形其实是比较简单的。要想进行图形绘制,关键是找到设备上下文。就我目前所知道的,获得设备上下文主要有这么几种方式:一、根据BeginPaint获得设备上下文,这主要在WM_PAINT使用;二、根据GetDC获得设备上下文,这主要用在非WM_PAINT消息中;三、CreateDC获得设备上下文,这个主要用在屏幕的截取;四、根据CreateCompatibleDC获得设备上下文,然后通过BitBlt进行绘制,这个一般用在图形界面较多的绘制场景。WM_PAINT下用BeginP原创 2021-11-28 17:33:09 · 1081 阅读 · 0 评论 -
Win32 API 菜单和控件
控件控件概念控件: 特殊的一类”子”窗口,系统已经定义好了窗口类型创建方式和创建窗口类似,调用CreateWindow,每个控件都有自己的ID控件事件发生后,会向所在的父窗口发送通知消息可以使用SendMessage和PostMessage给控件发送消息注意: 创建窗口时必须添加两个属性WS_CHILD:控件是放在我们的窗口上的,自然要作为窗口的子窗口,WS_CHILDWINDOW也一样WS_VISIBLE:设置可见创建控件函数HWND WINAPI CreateWindow( 类名原创 2021-11-27 00:58:59 · 2358 阅读 · 0 评论 -
Windows堆
堆(HEAP)的分配,使用,回收都是通过微软的API来管理的,最常见的API是malloc和new。在往底层走一点呢,这两个函数都会调 用HeapAlloc(RtlAllocateHeap)。同样的相关函数还有HeapFree用来释放堆,HeapCreate用来创建自己的私有堆。 下面是这些函数的调用链:HeapCreate->RtlCreateHeap->ZwAllocateVirtualMemory (这里会直接申请一大片内存,至于申请多大内存,由进程PEB结构中的字段觉得,HeapSe原创 2021-10-20 00:29:43 · 1018 阅读 · 0 评论 -
探索虚拟内存
任务管理器中各内存字段的含义:工作集(内存)专用(私有)工作集(当前进程独占)中的物理内存数量与进程正在使用且可以和其他进程共享的物理内存数量的总和。因此可以这么理解,该值就是该进程所占用的总的物理内存峰值工作集(内存)进程的工作设置(内存)的最大值,可以这么理解,因为工作设置(内存)是波动的,这个项专门记录最大的那个值。内存(专用工作集)工作集的子集,它专门描述某个进程正在使用且无法与其他进程共享的物理内存值。这个值对于一个进程来说也是最重要的,它代表了一个进程到底独占了多少物理内存。内.原创 2021-10-15 00:17:38 · 338 阅读 · 0 评论 -
Windows内存体系结构
在Windows系统中,每个进程都有自己的虚拟地址空间。对32位进程来说,这个地址空间的大小为4GB,这是因为32为指针可以表示从0x00000000到0xFFFFFFFF之间的任一值。他们覆盖了进程的4GB地址空间。那么Windows是如何实现这一机制的呢?虚拟地址空间的分区(即虚拟地址空间布局)进程的地址空间划分分区x86(32位 Windows)3GB用户模式下的x86 (32位Windows)X64 (64位Windows)IA-64 (64位 Windows)空原创 2021-10-13 23:07:13 · 664 阅读 · 0 评论 -
Windbg教程
windbg文档网页:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/windbg官网:http://windbg.org/参考网站:https://www.stl-tec.de/tutorials/WinReverseEng/setup/关于工作空间工作空间保存有断点 用户定义的别名 调试器的设置 图形界面信息 调试会话状态等等信息,类似VS的项目文件,PS的工作区。命令概述WinDBG主要是以命令方式原创 2021-10-10 23:22:31 · 6763 阅读 · 1 评论 -
Windows窗口程序及其消息机制
Windows 窗口的诞生过程定义窗口类结构(WNDCLASS) -> 注册窗口类(RegisterClass) -> 创建窗口(CreateWindow) -> 显示窗口(ShowWindow) -> 更新窗口(UpdateWindow) -> 消息循环(GetMessage -> TranslateMessage ->DispatchMessage)当调用完 CreateWindow 函数的时候,应用程序实例以及相应的消息队列已经诞生了。实现代码//原创 2021-09-20 18:21:20 · 1042 阅读 · 0 评论 -
Windows程序入口
WinMain:应用程序入口点每个Windows程序都包括名为 WinMain 或 wWinMain 的入口点函数。 下面是 wWinMain 的签名。int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);这四个参数为:hInstance 称为"实例句柄"或"模块句柄"。 操作系统使用此值来标识 EXE (加载到) 可执行文件。 某些函数需要实例句柄Window原创 2021-09-20 13:59:35 · 29131 阅读 · 0 评论 -
Windows socket基础
Windows socket是一套在Windows操作系统下的网络编程接口。它不是一种网络协议,而是一个开放的、支持多个协议的Windows下的网络编程接口Windows socket是以Unix socket为基础,因此Windows socket中的许多函数名与Unix都是一样的。除此之外它还允许开发人员充分利用Windows的消息驱动机制进行程序设计开发。套接字是应用层到运输层的接口。套接字用以表示一条连接的两端。每一个端点由ip和端口组成。因此套接字是由两端点的ip和端口组成。端口是运输层的概原创 2021-08-02 00:25:44 · 4512 阅读 · 2 评论 -
Windows的网络模型
windows提供了六种网络通信模型:阻塞模型、选择模型、异步选择模型、事件选择模型、重叠I/O模型、IOCP模型。异步通信同步通信IOCP原理IOCP包括三个部分:完成端口(存放重叠的I/O请求),客户端请求的处理,等待线程队列(一定数量的工作者线程,一般采用CPU*2个)线程池中的工作线程的数量与CPU内核数量相同,用它来最小化线程切换代价。一个IOCP对象,在操作系统中可关联着多个socket和文件控制端。IOCP对象内部有一个先进先出(FIFO)队列,用于存放IOCP所关联的输入输出原创 2021-07-28 00:01:47 · 1395 阅读 · 2 评论 -
windows动态库和静态库
静态库生成lib静态库文件,头文件的函数声明不需要__declspec(dllexport)和__declspec(dllimport)和普通头文件一样即可新建静态库项目头文件#ifndef TESTLIB_H#define TESTLIB_H//防止头文件重复包含//条件编译指令int add(int a, int b);#endif // !TESTLIB_H...原创 2019-08-29 01:03:31 · 207 阅读 · 0 评论 -
cmder
简介官网 https://cmder.net/进入官网以后,有mini版和完整版,建议完整版,完整版功能更齐全,还可以使用git,下载好解压文件包以后就可以使用。设置环境变量添加cmder到邮件菜单Cmder.exe /REGISTER ALL解决中文乱码问题Settings->Startup->Environment 添加set LANG=zh_CN.UTF-8set LC_ALL=zh_CN.utf8常用命令创建文件夹mkdir删除文件夹rmdir原创 2020-08-31 23:24:13 · 569 阅读 · 0 评论 -
windows的消息机制
一、 什么是消息在解释什么是消息之前,我们先讨论一下程序的执行机制问题。大体上说,程序按照执行机制可以分为两类:第一类是过程驱动。比如我们最早接触编程时写的C程序,又或者单片机程序。这类程序往往预先已经设定好了执行流程,我们执行时只是按部就班的执行;第二类是事件驱动。事件,相信大家都能够理解。每个事件的发生都是随机的,每个事件都会有发生的时刻,类似生活中的事件。程序中的事件也会有自己的触发点,事件驱动程序就是事先编写好了针对每个事件的处理流程。在Windows的操作系统中,消息就是Windows中的原创 2020-08-09 15:57:55 · 879 阅读 · 0 评论 -
解析PDB文件
参考vs的安装目录中的DIA2Dump工程C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\DIA SDK\Samples\DIA2Dump原创 2020-07-29 18:58:27 · 940 阅读 · 0 评论 -
进程遍历
1. CreateToolhelp32Snapshot()、Process32First()和Process32Next()void ProcessSnapshot(){ PROCESSENTRY32 pe32; pe32.dwSize = sizeof(pe32); HANDLE hProcessSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnapshot == INVALID_HANDLE原创 2020-07-15 20:29:39 · 192 阅读 · 0 评论 -
查找哪个程序占用了文件
任务管理器->资源监视器->CPU->关联句柄根据关键字搜索,文件名,目录名等原创 2020-06-08 17:25:59 · 223 阅读 · 0 评论 -
Windows上的Socket编程(阻塞模型)
Socket协议的工作原理Socket又称套接字,它是TCP/IP网络环境下应用程序与底层通信驱动程序之间运行的开发接口,它可以将应用程序与具体的TCP/IP隔离开,使得应用程序不需要了解TCP/IP的细节,就能够实现传输。需要包括的库#include <WinSock2.h>#pragma comment(lib,"Ws2_32.lib ")用到的函数1...原创 2020-04-12 01:16:18 · 787 阅读 · 0 评论 -
Windows API收集
GetWindowText函数功能:该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控制,则拷贝控制的文本。但是,GetWindowTeXt不能接收在其他应用程序中的控制文本。函数原型:Int GetWindowText(HWND hWnd,LPTSTR lpString,Int nMaxCount);参数:hWnd:带文本...原创 2020-04-04 15:57:11 · 542 阅读 · 0 评论 -
Windows字符编码
基础知识计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密。在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码。字符集(Charset):是一个系统支持的所...原创 2020-03-30 23:47:09 · 781 阅读 · 0 评论 -
DOS 命令
常用的内部命令有md、cd、rd、dir、path、copy、type、edit、ren、del、cls、ver、date、time、prompt。常用的外部命令有deltree、format、diskcopy、label、vol、sys、xcopy、fc、attrib、mem、tree。切换到其他盘符d:1.md——建立子目录功能:创建新的子目录类型:内部命令ü格式:md[盘符:]...原创 2020-03-29 00:02:50 · 157 阅读 · 0 评论 -
Windows基础知识
Windows API用于16位Windows的API(Windows1.0~Windows3.1)称作“Winl6”,用于32位Windows的API(Windows 9/NT/2000/XP/7/10)称作“Win32”。64位WindowsAPI的名称和功能基本没有变化,还是使用Win32的函数名,只不过是用64位代码实现的。在Win32API函数字符集中,“A”表示ANSI,“W”...原创 2020-02-26 23:39:00 · 1442 阅读 · 0 评论 -
umdh查询内存泄露
配置环境变量这个环境变量用于存放pdb文件,这里配置一个微软的符号文件地址,自动从网上下载_NT_SYMBOL_PATHSRV*C:\symbols*http://msdl.microsoft.com/download/symbols/windbg目录cd C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86启用池标记gfl...原创 2020-02-24 19:58:27 · 284 阅读 · 0 评论 -
启用windows的程序崩溃自动dump功能
以管理员身份 运行 :OpenDump.bat 其本质是写注册表。运行后: 任何程序崩溃都会在C:\CrashDump 产生dmp文件(比较大,约50到200M)。至少在Win7、Win10的电脑,Win10的平板上运行正确。OpenDump.bat@echo offecho 正在启用Dump...reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Mi...原创 2020-08-09 14:07:47 · 4090 阅读 · 1 评论