![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
windows核心编程
文章平均质量分 67
wwwwwwolf
挣扎而又彷徨
展开
-
第二章 字符和字符串处理
这章。。。想先跳过了呀。用的编译器是VC++6.0,一般来说都是使用的ansi函数,_T和_TEXT()宏基本用不到。另我非常不理解的是为什么windows的单字节和多字节转化函数要写的那么复杂,至少Linux下转换是方便多了。个人感觉对于VC6而言,这章不是很重要,先跳过吧,后面有需要回来再补。原创 2015-10-12 22:32:26 · 188 阅读 · 0 评论 -
第一章 错误处理
使用GetLastError()得到上一个函数设置的32位错误代码。要自己定义错误代码使用SetLastError()函数,得到错误代码后最简单的方法使用Error LookUp软件看看代码的具体含义,当然,也可以使用FormatMessage函数转化成字符串描述。然而,FormatMessage函数并不能完全看懂,先放着吧。看看后面的,在回顾一下前面的。原创 2015-10-12 20:25:09 · 314 阅读 · 0 评论 -
第三章 内核对象(1)
内核对象有访问令牌对象,事件对象,文件对象,文件映射对象等。几乎所有创建内核对象的函数都有一个允许我们指定安全属性信息的参数,这点与用户对象或者GDI对象不同。内核对象都包含一个引用计数,初次创建时被设为1,再次被使用时增加,当使用计数变成0时,操作系统内核才会销毁改对象。不是调用一次CloseHandle就销毁改对象,调用CloseHandle只是将改对象的引用计数-1.跨进程边界共原创 2015-10-13 21:30:48 · 282 阅读 · 0 评论 -
第三章 内核对象(2)
跨进程边界共享内核对象的第二个方式是创建命名对象。Create一系列函数,最后一个参数PCTSTR pszName,如果传入NULL,相当于向系统表明我们要创建未命名的内核对象。当创建一个命名的对象后,在其他进程中创建改名字对象时,发现存在这样一个对象,会检查对象类型,如果类型相同。会在第二个进程中创建对象句柄,句柄值可能不同,但是引用的是和第一个进程相同的内核对象。第三章后面原创 2015-10-14 18:36:00 · 206 阅读 · 0 评论