FlyingPig

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2011年1月19日

摘要: 一个进程可以有四种方式终止: 一、主线程的入口点函数返回 这个方式是最正常也是最值得推荐的方式,主线程的入口点函数返回确保了:任何由这个线程创建的 C++ 对象会通过该对象的析构函数清理;操作系统会释放由线程栈使用的内存;系统会将线程的入口点函数的返回值设置为进程的退出码(这个退出码由进程内核对象维护);系统将减少内核对象的使用计数。 二、进程的一个线程调用 ExitProcess 函数 进程内的... 阅读全文
posted @ 2011-01-19 15:45 nrj 阅读(2052) 评论(0) 推荐(1) 编辑

2011年1月18日

摘要: CreateProcess 函数原型:当一个线程调用 CreateProcess 函数时,系统会创建一个进程内核对象,并将这个内核对象的使用计数初始化为 1,系统然后为这个新进程创建一个虚拟地址空间并将可执行文件的代码和数据还有所有需要的 DLL 加载到这个地址空间中,接着,系统为新进程的主线程创建了一个线程内核对象,这个线程开始执行由链接器设置的 C/C++ 运行时启动代码,最后才是你提供的 m... 阅读全文
posted @ 2011-01-18 17:06 nrj 阅读(2855) 评论(0) 推荐(0) 编辑

摘要: 进程通常定义为一个运行程序的实例,它有两个部分组成:一个是内核对象,操作系统用它管理进程;一个是地址空间,它包含了所有可执行的模块的代码和数据,也包含动态内存分配(如线程栈)和堆内存分配。 进程本身不会执行,为了完成某件事,必须有一个运行在它的上下文中的线程,这个线程负责执行进程空间中的代码。系统创建一个进程时会自动创建一个线程,叫做主线程,主线程还可以创建另外的线程,另外的线程还可以继续创建其它... 阅读全文
posted @ 2011-01-18 12:57 nrj 阅读(1006) 评论(0) 推荐(0) 编辑

2011年1月15日

摘要: 系统创建和维护了多种类型的内核对象,如:令牌对象、事件对象、文件对象、文件映射对象、I/O完成端口对象、作业对象、邮件槽对象、互斥对象、管道对象、进程对象、信号量对象、线程对象、等待对象和线程池工作工厂对象。 内核对象只不过是一块由内核分配的内存,这个内存块的数据结构成员维护着这个内核对象,一些成员对所有内核对象来说是相同的,如安全标识符、使用计数等,但多数成员是特定于对象类型的,如进程对象有一个... 阅读全文
posted @ 2011-01-15 16:26 nrj 阅读(611) 评论(0) 推荐(0) 编辑

2011年1月11日

摘要: Windows 给出的带有字符串参数的函数都有两个相同版本的函数与之对应,一个是 Unicode 版本,一个是 ANSI 版本,分别以 FunctionNameW 和 FunctionNameA 表示,FunctionName 实际上是一个宏定义。 用户在使用 FunctionNameA 版本的 ANSI 函数时,WIndows 内部会分配一块内存来将 ANSI 字符串转换为 Unicode 字符... 阅读全文
posted @ 2011-01-11 16:33 nrj 阅读(1339) 评论(0) 推荐(0) 编辑

摘要: UTF – Unicode Transformation Format Windows 中的 Unicode字符 使用 UTF-16 编码,UTF-16 编码的每一个字符由2个字节(16位)组成。 UTF-8 编码:使用1到4字节表示一个字符。值小于 0x0080 的字符使用一字节,美国字符集一般属于这类;值位于 0x0080和0x07FF之间的字符使用两个字节,欧洲和中东国家的字符属于这一类;大... 阅读全文
posted @ 2011-01-11 08:56 nrj 阅读(374) 评论(0) 推荐(0) 编辑

2011年1月10日

摘要: 参考MSDN(http://msdn.microsoft.com/en-us/library/aa383701.aspx) Header annotation 表示一个函数怎样使用它的参数和返回值。 在编译器的命令行中增加 /analyze 开关可以进行代码分析,当你在函数中使用违反注解定义的语法规则时编译器可以进行提示。 有两种注解:缓冲区注解和高级注解 缓冲区注解 缓冲区注解表示函数怎样使用它... 阅读全文
posted @ 2011-01-10 22:27 nrj 阅读(901) 评论(0) 推荐(2) 编辑

摘要: Microsoft C/C++ 编译器定义了一个内置的 wchar_t 数据类型,表示一个 UTF-16 字符,这个类型只有在编译器指定了 /Zc:wchar_t 开关后才有效。(之前的编译器将 wchar_t 类型定义为 unsigned short) 定义一个 wchar_t 类型的变量:字符串之前的“L”告诉编译器这是一个Unicode字符串。实际编写源代码时,一般用 TCHAR 来声明一个... 阅读全文
posted @ 2011-01-10 21:41 nrj 阅读(395) 评论(0) 推荐(0) 编辑

摘要: 当调用一个Windows例程发生错误时,调用 GetLastError 函数获取一个错误编号来表明发生了什么错误,必须在例程返回后立即调用 GetLastError,否则返回的错误号可能已被更改。所有的Microsoft预定义的错误编号都在 WinError.h 头文件中定义。可以使用 VS 的“错误查找”工具来获得错误的文本信息。 某些例程成功返回,需要调用 GetLastError 来知道一些... 阅读全文
posted @ 2011-01-10 16:40 nrj 阅读(289) 评论(0) 推荐(0) 编辑