摘要:作者:matt pietrek本文中大部分内容翻译自msdn.如有翻译不正确的地方,还望大家多多指点.摘要: 对pe文件格式的深入理解能够帮助我们更好的理解操作系统.如果你真正理解dll和exe的本质是什么,那么将有助于你成为一名更加优秀的程序员.这篇是两篇中深入理解关于pe格式中的第一篇,首先浏览一下最近几年pe格式所发生的变化,以及pe格式 大约有好几年前(1994年),我为microso......
摘要:○、序 这篇文章写于1年前,因为某些原因,没有把它完成。今天整理一下 shadowstars home,偶然发现这篇未完的文章。虽是年前的东西,但现在仍没有过时,对想了解 sniffer 的朋友应该有所帮助。爸爸说做事情要有始有终,今天是端午节,谨以此文给远隔千里的亲人送一份心意。一、引言 上一次介绍了用 raw socket 实现 sniffer 的方法,实现起来比较简单,但有个缺点就是只能......
Windows图像编程概要
图形设备接口(gdi,graphics device interface)的主要目标之一是支持在输出设备(如视频显示器.打印机与绘图仪)上的与设备无关的图形. gdi通过将应用程序与不同输出设备特性相隔离,使windows应用程序能够毫无问题地在windows支持的任何图形输出设备上运行.windows中的图形基本上是由从gdi.exe模块中输出的函数处理的(尽管一些绘制函数实际上具有user.exe的入口点),gdi.exe模块调用在不同驱动程序文件中的例程,其中有一个.drv驱动程序文件用于控制显示屏幕,并且可能有一个或多个其他的.drv驱动程序文件用来控制打印机或绘图仪.windows gdi使用两种坐标系统.使用虚拟坐标系统可以使程序不依赖于具体的硬件,使用设备坐标系统可以使程序与硬件紧密相联.gdi含有在windows应用程序内部执行.且与设备无关的图形操作函数,这些函数可产生各种各样的线.正文与位图,它们可以输出到许多不同的输出设备上.gdi允许一个应用程序产生笔.刷子.字体与位图,以供特定的输出操作使用.下面列出gdi中几组比较常用的函数:·椭圆与多边形函数 【程序编程相关:
多线程编程:何时使用同步类
】·设备上下文函数 【推荐阅读:
使用VC6时:关于WinAPI的版本问题】·位图函数 【扩展信息:
在VC中实现扩展广告条 马骏
】·绘图工具函数·绘图属性函数·正文函救·映射函数.·坐标函数·元文件(metafile)函数·区域函数·裁剪(clipping)函数·窗口应用程序输出图形的操作步骤如下:①取得指定窗口的当前显示设备上下文,显示设备上下文实际上是一个数据结构,它包括该窗口的参数及各种图形.文字属性的现行设定值,它们对以后的图形.文字输出命令起控制作用.②选择用户坐标系及映射方式.③设定用户坐标系中的观察窗口与设备坐标系中的显示视区.④输出图形.文字与图象.⑤释放所使用的显示设备上下文.当想要在图形输出设备(例如屏幕或打印机)上绘制图形时,必须首先获得设备上下文的句柄.先给出这个句柄,windows才允许程序使用设备,在gdi函数中将句柄作为一个参数传入,向windows标明需要使用的设备.设备上下文中包含许多属性,当gdi在不同的设备上工作时都要用到这些属性.使用这些属性可使gdi只关心起始与终止坐标的大小,而不必关心有关对象的其他属性,如颜色.背景等等,因为这些都是设备上下文的一部分.当需要修改这些属性时,只需调用一个修改设备上下文中属性的参数,以后的程序中都使用修改后的设备上下文属性.设备上下文是连接windows应用程序.设备驱动程序以及输出设备的纽带.获取设备上下文句柄有多种方法.最一般的方法是当处理一条消息时获得了设备上下文.并在退出窗口之前释放它.一般的处理方法如下:在处理wm_paint消息时case wm_paint:hdc=beginpaint(hwnd,&ps) //代码endpaint (hwnd,&ps);其数据结构为:hdc hwnd;paintstruct ps;而在windows.h中定义了paintstruct的数据结构.type struct tagpaintstruct {hdc hdc;bool ferase;rect rcpaint;bool frestore;bool flncupdate;byte rgbreserved[16];}paintstruct;其中,hdc用于标识显式上下文,ferase指出背景是否重画,rcpaint是涂色矩形,其余的域均为保留.这里的hdc是beginpaint返回的设备上下文句柄,有了从beginpaint获取的设备上下文句柄,就可以也只能在ps指出的rcpaint的矩形内绘图,endpaint调用使这一区域有效.第二种方法如下所示,使用这种方法获取与释放设备上下文可以在整个用户区内画图,图形在整个用户区域内都有效:hdc=getdc (hwnd );…画图操作…releasedc (hwnd , hdc );使用下面第三种方法获取与释放设备上下文,可以在整个窗口内画图,图形在整个窗口内有效:hdc=getwindowdc(hwnd);…画图操作…releasedc(hwnd,hdc);使用下面第四种方法获取与释放设备上下文,可以在整个显示器区域内画图,图形在整个显示器区域内部有效:hdc=createdc (lpszdriver ,lpszdevice ,lpszoutput , lpdata);…画图操作…...
下一页 摘要:什么是subsystem?nt架构(windows nt、windows xp、windows 2003)的初始设计是很有野心的,它希望在nt上可以不加修改地运行os2、unix程序。所以在nt中有subsystem的概念,每个subsystem针对一个平台,ntdll.dll是所有subsystem的基础。或者说ntdll.dll统一提供nt系统的api接口,subsystem为各个平台的应用程......