Windows
老火
这个作者很懒,什么都没留下…
展开
-
Windows核心编程(五)
十一、Windows线程池Windows提供了一个(与I/O完成端口相配套的)线程池机制来简化线程的创建、销毁以及日常管理。这个通用的线程池可能并不适用于所有的情况,但很多情况下能够满足需要并节省大量的开发时间。这些新的线程池函数允许我们做以下这些事情:1、以异步的方式来调用一个函数2、每隔一段时间调用一个函数3、当内核对象触发的时候调用一个函数4、当异步I/O请求完成的时原创 2013-07-05 21:30:47 · 493 阅读 · 0 评论 -
MSVC启动过程
VC9的默认入口函数源码:__declspec(noinline)int__tmainCRTStartup( void ){ int initret; int mainret=0; int managedapp;#ifdef _WINMAIN_ _TUCHAR *lpszCommandL原创 2013-06-09 15:29:59 · 609 阅读 · 0 评论 -
PE文件格式
1 PE文件结构2 文件头PE 文件头是一个 IMAGE_NT_HEADERS 类型的结构,它在WINNT.H文件中定义。typedef struct _IMAGE_NT_HEADERS { DWORD Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER Optional原创 2013-05-28 21:23:36 · 795 阅读 · 0 评论 -
Windows核心编程(四)
十、同步设备I/O与异步设备I/OHANDLE WINAPI CreateFile( __in LPCTSTR lpFileName, __in DWORD dwDesiredAccess, __in DWORD dwShareMode, __in LPSECURITY_ATTRIBUTES lpSec原创 2013-07-03 22:21:41 · 572 阅读 · 0 评论 -
Windows核心编程(三)
六、线程基础进程有两个组成部分:一个进程内核对象和一个地址空间。类似地,线程也有两个组成部分:1)一个是线程的内核对象,操作系统用它管理线程。系统还用内核对象来存放线程统计信息的地方。2)一个线程栈,用于维护线程执行时所需的所有函数参数和局部变量。一个进程中的所有线程共享同一个地址空间,共享同一个句柄表。原创 2013-07-03 13:10:18 · 574 阅读 · 0 评论 -
Windows核心编程(二)
4 进程进程通常被定义为一个正在运行的实例,由两部分组成:系统用来管理这个进程的内核对象、地址空间(包括所有可执行模块或DLL模块的数据和代码)。应用程序进入点32位系统中,HINSTANCE和HMODULE是完全相同的对象,它表示可执行文件或DLL文件加载到进程空间时所用的基地址。可以用下面的函数得到一个模块的句柄/基地址:原创 2013-07-01 14:24:54 · 464 阅读 · 0 评论 -
Windows核心编程(十)
第十九章 DLL基础动态链接库(dynamic-link library,DLL)一直以来都是Windows操作系统的基石。Windows应用程序编程接口(application programming inferface,API)提供的所有函数都包含在DLL中。其中三个最重要的DLL分别是:Kernel32.dll,包含的函数用来管理内存、进程及线程;User32.dll,包含的函数用来执行原创 2013-07-15 09:38:11 · 716 阅读 · 0 评论 -
Windows核心编程(九)
第十八章 堆堆的优点是它能让我们专心解决手头上的问题,而不必理会分配粒度和页面边界这类事情。它的缺点是分配和释放内存块的速度比其它方式慢,而且了却无法物理存储器的调拨和撤销调拨进行直接控制。在系统内部,堆是一块预订的地址空间区域。刚开始,区域内的大部分页面都没有调拨物理存储器。随着我们不断从堆中分配内存,堆管理器会给堆调拨越来越多的物理存储器。这些物理存储器始终是从页交换文件中分配的。释放原创 2013-07-13 20:48:32 · 499 阅读 · 0 评论 -
Windows核心编程(一)
一、对程序错误的处理调用Windows函数时,为是查看函数是否调用成功,通常查看函数的返回值来确定是否成功,还可以使用GetLastError()来确定是什么具体问题。Windows函数运行失败时,应立即调用GetLastError(),否则可能被别的函数修改。在VS中调试时,在watch窗口输入"@err,hr",就能查看到当前的错误代码和错误详细描述。使用FormatMessage原创 2013-06-26 14:41:02 · 595 阅读 · 0 评论 -
Windows核心编程(八)
第十七章 内存映射文件与虚拟内存相似,内存映射文件允许开发人员预订一块地址空间区域并给区域调拨物理存储器。不同之处在于,内存映射文件的物理存储器来自磁盘上已有的文件,而不是来自系统的页交换文件。内存映射文件主要用于以下三种情况:1)系统使用内存映射文件载入并运行.exe和动态链接库(DLL)文件。这大量节省了页交换文件的空间以及应用程序启动的时间。2)开发人员可以用内存映射文件来访原创 2013-07-09 23:20:58 · 700 阅读 · 1 评论 -
Windows核心编程(七)
十五、在应用程序中使用虚拟内存Microsoft Windows提花了以下三种机制来对内存进行操控。1)虚拟内存 最适合用来管理大型对象数组或大型结构数组。2)内存映射文件 最适合用来管理大型数据流(通常是文件),以及在同一机器上运行的多个进程之间共享数据。3)堆 最适合用来管理大量的小型对象。Windows提供了一些用来操控虚拟内存的函数,我们可以通过这些函数直接预订地址空原创 2013-07-09 23:19:33 · 521 阅读 · 0 评论 -
Windows核心编程(六)
十三、Windows内存体系结构每个进程都有自己的虚拟地址空间,对32位进程来说,这个地址空间大小为4GB = 2^32。对于64位地址来说,大小为16EB=2^64。每个进程的虚拟地址空间被划分为许多分区,Windows内核不同分区略有变化,以X86 32位Windows为例,0x00000000~0x0000FFFF为空指针赋值分区;0x00010000~0x7FFFFFFFF原创 2013-07-09 21:44:03 · 549 阅读 · 0 评论 -
深入解析Windows操作系统(一)概念和工具
1 关于Windows NT和Windows 95Windows NT:Microsoft Windows NT(New Technology)是Microsoft在1993年推出的面向工作站、网络服务器和大型计算机的网络操作系统,也可做PC操作系统。它与通信服务紧密集成,基于OS/2 NT基础编制。OS/2由微软和IBM联合研制,分为微软的Microsoft OS/2 NT与IBM的IBM原创 2013-06-23 16:11:27 · 1313 阅读 · 0 评论 -
深入解析Windows操作系统(二)系统结构(1)
线上面的方框代表了用户的进程,线下面的组件是内核模式的操作系统。用户模式的线程在一个受保护的进程地址空间中执行,因此系统支持进程、服务进程、用户应用程序和环境子系统都有它们各自的私有进程地址空间。1)系统支持进程(system support processes),比如登录(logon)进程和会话管理器(session manager),它们并不是WINDOWS的服务(不是由服务控制器来启动的原创 2013-08-28 22:35:47 · 752 阅读 · 0 评论