随笔分类 - Windows
与Windows一切的相关技术
摘要:Win32 Portable Executable File Format(PE)的格式源于COFF文件格式。用VC编译器生成的Obj文件是COFF文件格式的。Exe和DLL文件都是PE文件格式。介绍关于PE和COFF文件的格式的资料: MSDN官方文档:Microsoft PE and COFF Specification Matt Pietrek写的文章:An In-Depth Look into the Win32 Portable Executable File Format(part1, part2) PE文件RVA地址与文件地址(file offset)转换:Portable...
阅读全文
摘要:在存储介质(硬盘、软盘、光盘)中有一块特殊的区域,叫做引导区。在计算机启动后,BIOS会读取引导区内的代码到内存中去,然后将执行这些代码。引导区的位置和大小与计算机的平台有关,对于IBM-PC兼容机,引导区位于存储介质的第一个扇区,大小为512字节。位于引导区内的代码就称为引导程序。引导区内是否含有引导程序由引导区内的标记标识。对于IBM-PC兼容机,如果引导区内的最后两个字节为0x55,0xAA,则BIOS检测程序认为引导区内包含引导程序。引导程序并不一定要实现加载操作的功能,它可以是任何程序。
IBM-PC兼容机的具体启动过程如下:
1.按下计算机的电源键后,x86 CPU就开始在实模式下运行位于物理地址0xFFFFFFF0(通常这个地址是指向的是位于ROM中的BIOS的入口点)处的指令,这个指令是一个跳转指令,跳转到BIOS的启动程序。启动程序运行硬件检测和初始化操作。
2.在初始化所需要的硬件后,BIOS就依据设定的启动顺序遍历存储设备,直到找到一个可引导的设备。一个可引导的存储设备是引导区内包含引导程序。BIOS通过检查引导区的最后两个字节是否为0x55,0
阅读全文
摘要:对于MFC对话框应用程序,如果要在窗口显示之前对窗口控件赋值,一般都是在OnInitDialog()函数中编写相关代码。这是正确的,因为在调用OnInitDialog()函数的时候,对话框应用程序已经建立好了窗口及其子控件,只是还没有显示出来,窗口控件的句柄值是有效的。如果你需要获取窗口控件相对于屏幕的坐标位置呢?通过实验可以得知,在主对话框的OnInitDialog()中调用GetWindowRect()函数,得到窗口大小值(宽高)是正确的,但是左上角的坐标点是(0,0)值,而我们的对话框窗口不是在(0,0)点。同样,在主对话框的OnInitDialog()函数中获取其他控件的屏幕坐标也..
阅读全文
摘要:1.什么是Widnows内核对象内核对象是系统和应用程序用于管理各种资源的(比如进程、线程、文件等等)的一种数据结构,由内核管理,对应用程序不透明,即应用程序不能访问其数据结构。2.内核对象有哪些按照类型来分类,内核对象有:访问标记对象,事件对象,文件对象,文件映射对象,I/O完成端口对象,作业对象,信号槽对象,进程对象,线程对象等等。使用Sysinternal工具中的WinObj可以查看所有的内核对象。3.怎样使用Windows内核对象通过操作系统提供的CreateXXX或者OpenXXX函数来创建或者打开对应类型的内核对象。比如进程对象:CreateProcess(),OpenProces
阅读全文
摘要:How to stop explorer.exe add process to pca-prefixed job默认情况下,从资源管理器中启动一个应用程序时,资源管理器会自动的将所创建的进程放入一个专用的PCA前缀的Job。由于作业(Job)中的进程退出时,我们可以收到一个通知,这样当资源管理器启动老版本的应用程序出现问题时,就会触发Program Compatibility Assistant(程序兼容性助手)。如果确定我们编写的程序没有任何兼容性问题,可以通过添加manifest文件来组织资源管理器将我们的进程添加进PCA前缀的Job中。1.将下面的XML代码为Compatibility.
阅读全文
摘要:理解一个系统的内存体系结构能够让你对系统内部是怎么运作的有一个更深入的了解;能够使你知道怎么在两个进程之间共享数据、系统在哪里存放了我们的数据以及怎样编写更高效的应用程序。
在32位的Windows系统中,每一个进程有4G的虚拟地址空间,之所以说是虚拟的,因为4G只是一个地址空间,一个数值而已,应用程序实际能够使用的内存还是要视计算机中实际的物理内存而定(包括系统提供的页面文件)。
进程虽然拥有4G的地址空间,但是并不是所有的地址空间都能为进程使用。进程的地址空间被分为下面几个模块。
阅读全文
摘要:方法一:开始->控制面板->网络和共享中心->更改适配器设置->本地连接属性(右键单击本地连接,然后选择属性)->共享->勾选“允许其他网络用户通过此计算机的Internet连接来连接” 方法二:1.重设winsock,win+R打开运行,然后输入CMD,然后输入Netsh winsock reset,然后重启 2.装反间谍软件因为有些间谍软件会不让你使用系统防火墙。 3.去控制面板,双击administrative tools管理工具,找到服务项,勾上Windows Firewall/Internet Connection Sharing (ICS)的服务
阅读全文
摘要:其实这个也没有什么用,毕竟已经是过时的技术了。不过技术的更新跟实际的使用还是有差距了,免不了还是要用这种过时的技术,所以还是记录下来,方便以后查阅。
GDI+没记错的话是跟随XP诞生的,是XP系统上的图形绘制系统(以前的是GDI),GDI+相对于GDI提供了一些新的特性,比如渐变的画刷,支持多种图像格式等等。不过我觉得最大的变化,还是编程模型上的变化。GDI+使用了面向对象的思想,对接口进行了类封装,使用更加方便。
在应用程序中使用GDI+库应该遵循一下步骤:
阅读全文