
Windows
文章平均质量分 87
sesiria
这个作者很懒,什么都没留下…
展开
-
Windows 应用生成MiniDump文件的方法笔记
Windows应用在yu// 创建Dump文件 void CreateDumpFile(LPCTSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException){ HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // Dump信息 MINID原创 2021-06-03 14:45:26 · 1527 阅读 · 0 评论 -
关于位图(Bitmap)
MSDN定义:https://msdn.microsoft.com/en-us/library/dd183377(v=vs.85).aspxBitmapsA bitmap is a graphical object used to create, manipulate (scale, scroll, rotate, and paint), and store i原创 2017-12-04 21:31:57 · 470 阅读 · 0 评论 -
《Windows核心编程》读书笔记十六 线程栈
第十六章 线程栈本章内容16.1 C/C++运行库的栈检查函数16.2 Summation示例程序系统会长用户进程的地址空间中预定区域。系统在分配进程环境块和线程环境块时会发生这种情况。另一种系统在用户进程地址空间预定区域的行为是分配线程栈。当系统创建线程时,会为线程栈预定一块地址空间区域(每个线程都有自己的栈)并给区域调拨一些物理存储器。默认情况原创 2017-11-23 18:22:51 · 477 阅读 · 0 评论 -
关于使用FileMapping和直接操作File+缓存的IO性能对比
最近在看Windows核心编程17章作者推崇使用FileMapping来进行大文件读写。虽然这样可以直接把文件映射到进程地址空间,由操作系统来进行后备的换成,换页等复杂操作。程序员只需要直接把文件当做内存地址来操作即可。可是笔者发现这可能对于编码来说相对简单了,可是把缓存这些全交给操作系统来处理并不是一个好的方法。尤其在处理大文件IO的时候。于是笔者对原书上的一个例子进行了改写对比。首先这原创 2017-12-01 11:27:58 · 2491 阅读 · 0 评论 -
《Windows核心编程》读书笔记三 内核对象
第三章 内核对象本章内容3.1 何为内核对象3.2 进程内核对象句柄表3.3 跨进程边界共享内核对象内核对象(kernel object)和句柄(handle)内核对象用于管理进程,线程和文件等诸多类的大量资源。3.1 何为内核对象系统处理集中类型的内核对象, 令牌对象(access token), 事件对象, 文件对象, 文件映像对象,原创 2017-09-07 23:53:34 · 1338 阅读 · 0 评论 -
《Windows核心编程》读书笔记十五 在应用程序中使用虚拟内存
第十五章 在应用程序中使用虚拟内存本章内容15.1 预定地址空间区域15.2 给区域调拨物理存储器15.3 同时预定和调拨物理存储器15.4 何时调拨物理存储器15.5 撤销调拨物理存储以及释放区域15.6 改变保护属性15.7 重置物理存储器的内容15.8 地址窗口扩展原创 2017-11-15 15:23:43 · 1203 阅读 · 0 评论 -
《Windows核心编程》读书笔记十九章 DLL基础
第十九章 DLL基础本章内容19.1 DLL和进程的地址空间19.2 纵观全局Windows的系统API都包含在DLL中。最重要的3个DLL是Kernel32.dll 包含内存管理,进程和线程。User32.dll 用户界面相关的任务,创建窗口和发送消息等。GDI32.dll 包含函数用来绘制图形和显示文字。windows还有其他DLL用来执行更原创 2017-12-08 16:36:52 · 452 阅读 · 0 评论 -
Windows系统上的VirtualAlloc, HeapAlloc和malloc,new的区别
转载自:http://blog.youkuaiyun.com/zj510/article/details/39400087(1) VirtualAllocPVOID VirtualAlloc(PVOID pvAddress, SIZE_T dwSize, DWORD fdwAllocationType, DWORD fdwProtect)VirtualAlloc是Win转载 2017-11-06 15:58:23 · 6777 阅读 · 0 评论 -
《Windows核心编程》读书笔记四 进程
第四章 进程本章内容4.1 编写第一个Windows应用程序4.2 CreateProcess函数4.3 终止进程4.4 子进程4.5 管理员以标准用户权限运行时进程定义为一个正在运行的程序的一个实例,它可以由一下两部分构成。a. 一个内核对象,操作系统用它来管理进程。内核对象也是系统保存进程统计信息的地方。b.一个地址空间,其中包含所有原创 2017-09-15 18:42:11 · 1571 阅读 · 0 评论 -
《Windows核心编程》读书笔记十二 纤程
第十二章 纤程使用纤程(fiber)为了兼容UNIX服务器应用程序的移植。使用纤程线程是在内核模式下实现的,操作系统控制。而纤程是在用户模式下实现的,内核对纤程一无所知。一个线程可以包含一个或多个纤程。(内核仅能调度线程,而纤程由我们调度)将一个已有的线程转换为纤程WINBASEAPI_Ret_maybenull_LPVOIDWINAPICo原创 2017-11-02 14:09:19 · 1123 阅读 · 0 评论 -
《Windows核心编程》读书笔记十 同步设备I/O与异步设备I/O
第十章 同步设备I/O与异步设备I/O本章内容10.1 打开和关闭设备10.2 使用文件设备10.3 执行同步设备I/O10.4 异步设备I/O基础10.5 接收I/O请求完成通知希望线程在处理IO时不要被挂起(非阻塞),线程和他真正执行的IO操作进行通信。使用IO完成端口(I/O Comopletion port)使用IO完成端口可以使得线程在读取原创 2017-10-18 09:53:54 · 1044 阅读 · 0 评论 -
《Windows核心编程》读书笔记十一 Windows线程池
第11章 Windows线程池本章内容11.1 情形1: 以异步方式调用函数11.2 情形2:每隔一段时间调用一个函数11.3 情形3:在内核对象触发时调用一个函数11.4 情形4:在异步I/O请求完成时调用一个函数11.5 回调函数的终止操作Windows系统的线程池函数允许我们做这些事情:1)以异步方式来调用一个函数2)每隔一段时间调用一个原创 2017-11-01 11:55:07 · 904 阅读 · 0 评论 -
《Windows核心编程》读书笔记二 字符和字符串处理
第二章 字符和字符串处理本章内容2.1 字符编码2.2 ANSI字符和Unicode字符雨字符串数据类型2.3 Windows中的Unicode函数和ANSI函数2.4 C运行库中的Unicode函数和ANSI函数2.5 C运行库中的安全字符串函数2.6 为何要用Unicode2.7 推荐的字符和字符串处理方式2.8 Unicode与ANSI字符串的转换原创 2017-09-06 15:26:25 · 804 阅读 · 0 评论 -
《Windows核心编程》读书笔记十四 探索虚拟内存
第十四章 探索虚拟内存本章内容14.1 系统信息14.2 虚拟内存状态14.3 NUMA机器中的内存管理14.4 确定地址空间的状态本章通过分析一些windows函数来了解与系统内存管理和进程中虚拟地址空间相关的信息。14.1 系统信息操作系统有许多值是由运行主机决定的。如页面大小和分配粒度。不应该将这些参数写死(硬编码到代码中)而是应该在原创 2017-11-08 15:29:11 · 705 阅读 · 0 评论 -
《Windows核心编程》读书笔记二十二章 DLL注入和API拦截
第22章 DLL注入和API拦截本章内容22.1 DLL注入的一个例子22.2 使用注册表来注入DLL22.3 使用Windows挂钩来注入DLL22.4 使用远程线程来注入DLL22.5 使用木马DLL来注入DLL22.6 把DLL作为调试器来注入22.7 使用CreateProcess来注入代码22.8 API拦截的例子通常在操作系统中原创 2017-12-18 18:01:24 · 2546 阅读 · 1 评论 -
《Windows核心编程》读书笔记十七章 内存映射文件
第十七章 内存映射文件本章内容17.1 映射到内存的可执行文件和DLL17.2 映射到内存的数据文件17.3 使用内存映射文件17.4 用内存映射文件来处理大文件17.5 内存映射文件和一致性17.6 给内存映射文件制定基地址17.7 内存映射文件的实现细节17.8 用内存映射文件在进程间共享数据17.9 以页交换文件为后备存储器的内存映射文件17.10原创 2017-12-05 15:10:59 · 1257 阅读 · 0 评论 -
《Windows核心编程》读书笔记七 线程调度,优先级和关联性
第七章 线程调度,优先级和关联性本章内容7.1 线程的挂起和恢复7.2 进程的挂起和恢复7.3 睡眠7.4 切换到另一个线程7.5 在超线程CPU上切换到另一个线程7.6 线程的执行时间7.7 在实际上下文中谈CONTEXT结构7.8 线程优先级7.9 从抽象角度看优先级7.10 优先级编程7.11 关联性CONTEXT反应了线程上一次执原创 2017-09-26 09:55:51 · 1571 阅读 · 0 评论 -
Windows API 下载http文件
打开http链接下载文档流程。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <tchar.h>#include <windows.h>#include <wininet.h>#include <string>//加入连接库#pragma comment(...原创 2018-03-29 13:30:11 · 2985 阅读 · 1 评论 -
C++与Windows 32 结构化异常
C++的标准异常语句try catch只能捕获c++自身的异常。也就是throw 语句抛出的异常(也叫软异常)而项目中很多地方出错的原因是由于空指针访问,除0,或者堆栈溢出所导致的。(通常是Win32 系统异常,可能是软异常也可能是赢异常)这就需要有代码能捕获这些异常。而C++的try/catch是无法捕获这种一异常的。虽然有一个catch(...)在设置了编译属性以后可以捕获SE原创 2018-01-05 18:24:09 · 1476 阅读 · 0 评论 -
《Windows核心编程》读书笔记二十六章 错误报告与应用程序恢复
第二十六章 错误报告与应用程序恢复本章内容26.1 Windows错误报告控制台26.2 可编程的Windows错误报告26.3 对进程中所有的问题报告进行定制26.4 问题报告的创建与定制26.5 应用程序自动重启与恢复本章介绍Windows的错误报告以及其接口API。WER API可以了解程序运行失败的深层原因,更好发现和解决缺陷。26.1 Wi原创 2017-12-28 17:18:53 · 1434 阅读 · 0 评论 -
《Windows核心编程》读书笔记二十五章 未处理异常,向量化异常处理与C++异常
第二十五章 未处理异常,向量化异常处理与C++异常本章内容25.1 UnhandledExceptionFilter函数详解25.2 即时调试25.3 电子表格示例程序25.4 向量化异常和继续处理程序25.5 C++异常与结构化异常的比较25.6 异常与调试器前一章讨论的异常过滤函数返回EXCEPTION_CONTINUE_SEARCH会继续向外原创 2017-12-25 18:19:38 · 1732 阅读 · 0 评论 -
《Windows核心编程》读书笔记二十一章 线程局部存储区
第二十一章 线程局部存储区本章内容21.1 动态TLS21.2 静态TLS有时候将数据与一个对象的实力关联起来是有帮助的。比如SetWindowWord SetWindowLong函数将数据和窗口关联起来。可以使用线程局部存储区(Thread Local Storage TLS)来将数据与一个正在执行的指定线程关联起来。c/c++运行库使用了TLS原创 2017-12-18 15:02:33 · 294 阅读 · 0 评论 -
《Windows核心编程》读书笔记二十章 DLL高级技术
第二十章 DLL高级技术本章内容20.1 DLL模块的显示载入和符号链接20.2 DLL的入口点函数20.3 延迟载入DLL20.4 函数转发器20.5 已知的DLL20.6 DLL重定向20.7 模块的基础地址重定位20.8 模块的绑定作者认为 20.7 和20.8两小节介绍的技术非常重要,能 显著提高整个系统的性能。20.1 DLL模原创 2017-12-18 10:29:52 · 1800 阅读 · 0 评论 -
《Windows核心编程》读书笔记二十四章 异常处理程序与软件异常
第24章 异常处理程序与软件异常本章内容24.1 通过实例理解异常过滤程序和异常处理程序24.2 EXCEPTION_EXECUTE_HANDLER24.3 EXCEPTION_CONTINUE_EXECUTION24.4 EXCEPTION_CONTINUE_SEARCH24.5 GetExceptionCode24.6 GetExceptionInforma原创 2017-12-25 10:55:03 · 619 阅读 · 0 评论 -
《Windows核心编程》读书笔记二十三章 终止处理程序
第二十三章 终止处理程序本章内容通过实例理解终止处理程序VC++支持SEH(Structured exception handling)来使得开发代码过程能够把代码和错误处理的逻辑分离开来。SEH是编译器在编译代码过程中加入了特殊的处理代码,报过SEH的数据结构和操作系统相关的代码。SEH实际上包含两方面的功能:终止处理(termination原创 2017-12-22 17:38:08 · 489 阅读 · 0 评论 -
《Windows核心编程》读书笔记十八章 堆
第十八章 堆本章内容18.1 进程的默认堆18.2 为什么要创建额外的堆18.3 如何创建额外的堆18.4 其他堆函数与虚拟内存和内存映射文件相比,堆非常适合大量的小型数据。堆是用来管理链表和树的最佳方式。堆能让我们专心心解决问题,不必理会分配粒度和页面边界的这类很底层的事情。堆的缺点是分配和释放速度比其他方式慢,而且也无法对物理存储器的调拨和撤销进行直接控制。原创 2017-12-07 13:07:32 · 372 阅读 · 0 评论 -
《Windows核心编程》读书笔记六 线程基础
第六章 线程基础本章内容6.1 何时创建线程6.2 何时不应该创建线程6.3 编写一个线程函数6.4 CreateThread函数6.5 终止运行线程6.6 线程内幕6.7 C/C++运行库注意事项6.8 了解自己的身份线程有两个组成部分:1)一个是线程的内核对象,操作系统用他管理线程。系统还用内核对象来存放线程统计信息的地方。原创 2017-09-21 10:43:25 · 561 阅读 · 0 评论 -
大坑!常被忽视又不得不注意的小细节——%I64,%lld与cout(转载)
原地址:http://blog.youkuaiyun.com/thunders01/article/details/38879553刚刚被坑完,OI一年了才知道%I64和%lld有区别(做题会不会太少),long long真的要注意--------------------------------------------原博------------------------------------转载 2017-11-07 11:44:51 · 3822 阅读 · 0 评论 -
《Windows核心编程》读书笔记十三 内存体系结构
第十三章 内存体系结构本章内容13.1 进程的虚拟地址空间13.2 虚拟地址空间的分区13.3 地址空间中的区域13.4 给区域调拨物理存储器13.5 物理存储器和页交换文件13.6 页面保护属性13.7 实例分析13.8 数据对齐的重要性操作系统所使用的内存体系结构是理解操作系统如何运作的关键。当我们使用一个新的操作系统时,脑海中会涌现出原创 2017-11-06 15:56:14 · 590 阅读 · 0 评论 -
开发基于MFC的ActiveX控件的时候的一些消息处理
MFC有PreTranslageMessage() 可以处理一些基于MFC的消息处理。可是有时候如果你开发一个基于MFC的ActiveX作为容器,内部实现是Win32 或者其他框架会发现,好多消息都不能正常收到。除非把你现有的内部的控件基于各种MFC的基类实现(会重载各种MFC的PreTranslateMessage)才能收到各种消息。根本原因是基于MFC的ActiveX控件没有自己的原创 2016-08-08 17:26:40 · 2840 阅读 · 0 评论 -
如何使Win32 应用程序兼容系统控件的主题
最近在学习Win32编程过程中开发了许多Demo,但是发现这些Demo使用的控件风格还是很老旧的win9x时代的控件。网上搜了一下在应用程序中加入一下代码,可以使程序兼容当前系统的控件风格。#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls'原创 2016-07-08 23:34:46 · 769 阅读 · 0 评论 -
通过给程序里嵌入manifest,使得程序运行时弹出UAC窗口
转载自 http://blog.youkuaiyun.com/fjb2080/article/details/7261861我们知道,当一个程序需要权限运行时,需要右键点击程序,然后使用管理员权限打开程序。另外,如果你用vc2008以上开发程序,可以在工程里选择uac,在生成的程序里,如果点击运行程序会弹出需要管理员权限运行程序的窗口。现在可以通过把manifest转载 2016-07-18 09:36:08 · 1400 阅读 · 0 评论 -
《Windows程序设计》读书笔八 计时器
《Windows程序设计》读书笔八 计时器原创 2016-07-03 23:25:19 · 1085 阅读 · 0 评论 -
《Windows程序设计》读书笔五 绘图基础
Windows在基于图形设备接口的视频显示器和打印机上显示图像。GDI5.1.1 GDI原理GDI是为了兼容于设备无关的图形。图形输出设备分为两大类,光栅设备和矢量设备。GDI是图形设备硬件的一种高级接口。GDI总的来说是一个静态系统,对动画支持有限。如果需要为游戏编写复杂的动画,还是需要使用DirectX 或者OpenGL5.1.2 GDI函数使用GDI函数的分类原创 2016-06-12 20:37:53 · 1678 阅读 · 0 评论 -
《Windows程序设计》读书笔四 文本输出
客户区是指整个应用程序窗口中没有被标题栏,边框,菜单栏,工具栏,状态栏和滚动条占用的区域。就是窗口中程序可以在上面绘制并向用户传达可视化信息的区域4.1 绘制和重绘windows是一个消息驱动的系统,他使用两种方式把事件通知给应用程序。1)把消息放在应用程序消息队列中2)或者适当向窗口过程发送消息。4.1.1 WM_PAINT消息在进入消息循环之前调用UpdateWindo原创 2016-06-12 11:19:58 · 1296 阅读 · 0 评论 -
Windows 消息机制浅析
Windows 消息机制浅析1. Windows 的历史中国人喜欢以史为鉴,而事实也确实是,如果你能知道一件事情的来龙去脉,往往可以更容易地理解事物为什么会表现为当前这样的现状。所以,我的介绍性开场白通常会以一段历史开始。不过,我不会以精确到年月日的那种方式详细讲述,而是选取几个对我们的编程生涯有重要影响的关键点。Windows 是真正的图形化界面操作系统的普及者,无论转载 2016-06-11 01:44:07 · 551 阅读 · 0 评论 -
《Windows程序设计》读书笔三 窗口与消息
第三章 窗口于消息前面的例子都使用MessageBox来创建窗口 ,单他所创建的窗口灵活性有限。3.1 窗口的创建只要调用CreateWindow函数即可3.1.1 系统结构概述一个应用程序窗口可能包含,标题栏,菜单栏,工具栏,滚动条。另外还有一种类型的窗口是对话框,这种窗口可以不带标题栏还可能包含,按钮,单选按钮,复选框,列表框,滚动条,文本框等。每一个这些对象都被称为原创 2016-06-10 16:35:26 · 1094 阅读 · 0 评论 -
《Windows程序设计》读书笔记一 起步
最近因为工作的关系,要开始在windows上开发桌面应用。别看虽然只是一些UI程序,但是不深刻了解windows的各种API在开发应用的过程中会遇到不少阻碍。于是决定重拾windows API,由于MFC框架太老。除了进行旧代码维护以外已经很少使用了。所以暂时不考虑使用MFC,而是使用纯win32 API来进行开发。可能开发UI上效率会低于MFC,但是重点是为了搞清楚win32 api的应用。原创 2016-06-05 22:31:36 · 693 阅读 · 0 评论 -
《Windows程序设计》读书笔十 菜单和其他资源
第十章 菜单和资源windows通过LoadIcon LoadCursor等函数来加载资源图标鼠标指针字符串自定义资源菜单键盘加速键对话框位图10.1 图标,鼠标指针,字符串和自定义资源10.1.1 向程序添加图标Tools->Options->Build->Export makefile when saving proj原创 2016-07-14 23:07:05 · 3532 阅读 · 2 评论 -
《Windows程序设计》读书笔七 鼠标
第七章 鼠标7.1 鼠标的基础知识fMouse = GetSystemMetrics(SM_MOUSEPRESENT); //判断是否使用鼠标cButtons = GetSystemMetrics(SM_CMOUSEBUTTONS); //判断安装鼠标的个数GetSystemMetrics(SM_SWAPBUTTON); //判断鼠标按钮是否被切换Sys原创 2016-07-01 23:01:50 · 3156 阅读 · 0 评论