![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows核心编程读书笔记
文章平均质量分 76
豆浆爱蟹蟹
这个作者很懒,什么都没留下…
展开
-
windows核心编程<读书笔记一>---重写Onchar函数
【文起】:蟹儿的爱是我坚持的动力,为了你和我们的幸福第一章中,书上有一个程序用例,在一个Edit中输入错误码ID,另一个Edit中显示错误码描述。自己写完发现错误码ID能输入所有的字符,这显然是不对的,就想到了去限制只能输入数字和delete。 MFC中可以通过设置Eidt属性为NUM解决。但是我想到如果要求可以输入小数点或者负号呢?在网上搜了下,看到了MFC子类化。这原创 2011-11-18 00:29:24 · 2269 阅读 · 1 评论 -
Windows核心编程<读书笔记七>线程的调度、优先级以及亲缘性 【含有代码】
【文起】亲爱的,已经12月份了,相聚的日子已经很临近临近了。爱你蟹儿,加油线程的调度、优先级以及亲缘性1、 系统只调度可以调度的线程。如果线程的暂停次数大于1,说明该线程已经暂停运行,不会给其安排任何CPU时间。调用含有CREATE_SUSPENDED的CreateProcess或CreateThread函数,都可以创建一个暂停的线程,同时也可以使用SuspendThread和Resum原创 2011-12-02 20:26:55 · 806 阅读 · 0 评论 -
Windows核心编程<读书笔记十四>虚拟内存一
14 虚拟内存一【文起】蟹儿回家了,喉咙还有点儿不舒服,舍不得。想跟她一起过春节,奋斗。虚拟内存其实只是虚拟出来的一个地址空间,不是真正的内存。是为了提高程序加载效率而产生的一种技术。1、 系统信息:操作系统的值都是根据主机来的,比如页面大小,分配粒度的大小等。我们可以通过GetSystemInfo函数来检索主机相关的值。可以获取到的值包括:CPU类型以及型号等;CPU页面大小;原创 2012-01-15 00:21:56 · 812 阅读 · 0 评论 -
Windows核心编程<读书笔记十五>应用程序中使用虚拟内存
【文起】亲爱的,你回家才十多天,可是对我而言却好像是一个多月似的。想你,念你应用程序中使用虚拟内存一:Windows提供了3种进行内存管理的方法:1、 虚拟内存,最适合用来管理大型对象或者结构数组;2、 内存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行的多个进程之间共享数据;3、 内存堆栈,最适合用来管理大量的小对象。二:地址空间中原创 2012-01-17 00:23:42 · 645 阅读 · 0 评论 -
Windows核心编程<读书笔记十四>虚拟内存二 VMQuery程序
【文起】思念亲爱的蟹儿,一直没有忘记自己的梦想,奋斗程序最后执行的界面如:思路为:1、对话框启动时,将系统正在运行的进程名放入下拉菜单中。所以在OnInitDialog中,调用函数FindProcessRunningvoid CVMMapDlg::FindProcessRunning(){ BOOL fOk; ToolHelp st_toolhelp; TCHA原创 2012-01-15 01:23:33 · 942 阅读 · 0 评论 -
Windows核心编程<读书笔记十六>线程的堆栈
【文起】亲爱的,思念你在我的身边,没有你的鼓励,我没有办法坚持。线程的堆栈1、每当创建一个线程,系统就会为线程的堆栈保留一个堆栈空间区域,并将一些物理存储器提交给这个已保留的区域。默认大小为1MB,每次提交一个页面的内存。堆栈的起始地址是 0X08000000,堆栈区域和提交给它的所有物理存储器均拥有页面保护属性,PAGE_READWRITE2、在xp下内存地址原创 2012-01-30 00:07:20 · 655 阅读 · 0 评论 -
Windows核心编程<读书笔记十三>Windows的内存结构
第13章 Windows的内存结构【文起】蟹儿的鼓励和支持,以及有时候的激励,是我能坚持的源泉,爱你宝贝儿。1、 进程的虚拟地址空间每个进程都有自己的虚拟地址空间。32位的进程来说,地址空间为4GB()。而这个只是虚拟地址空间,只是内存地址的一个范围,而不是真正的物理地址空间。2、 虚拟地址空间如何分区每个进程的虚拟地址空间都要划分为各个分区。2.1、NULL指针分原创 2011-12-29 22:46:18 · 890 阅读 · 0 评论 -
Windows核心编程<读书笔记十二>纤程
纤程【文起】跟蟹儿在一起了,一直处于兴奋、幸福状态,爱蟹儿为了将Unix服务器应用程序移植到windows中,Windows有了纤程。纤程是以用户方式代码来实现的,内核并不知道纤程,且它们是根据用户定义的算法来调度的,所以纤程不是抢占式的调度。使用纤程时,第一步是将现有的线程转化为一个纤程。函数ConvertThreadToFiberPVOID ConverThreadToFib原创 2011-12-29 22:45:15 · 749 阅读 · 0 评论 -
Windows核心编程<读书笔记十一>线程池的使用
线程池的使用【文起】已经和蟹儿在一起了,谢谢宝贝儿的支持和鼓励。最近工作比较忙,耽搁了上传笔记1、 多线程应用程序是非常困难的。面临两个大问题:1.1 要对线程的创建和撤销进行管理;1.2 要对线程对资源的访问实施同步。如何让系统自动保护共享资源呢?我们可以通过线程池的方式来实现2、 线程池:2.1 异步调用函数;2.2 按照规定的时间间隔调用函数;2.3 当单原创 2011-12-29 22:43:07 · 971 阅读 · 0 评论 -
Windows核心编程<读书笔记十七> 内存映射文件
【文起】从蟹儿家回来了,期待跟蟹儿一起的生活,这周五一起回家,幸福。谢谢宝贝儿一如既往的对我的鼓励和支持。内存映射文件一、内存映射文件可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。内存映射文件可以用于3个不同的目的:1、 系统使用内存映射文件,以便加载和执行.exe和DLL文件。这样可以大大节省页文件空间和应用程序启动运行所需的时间。2、 可以使用内存映射原创 2012-02-07 23:24:35 · 913 阅读 · 0 评论 -
Windows核心编程<读书笔记九>手把手写Queue程序
【文起】亲爱的,谢谢你最近一直在关注租房信息。辛苦了宝贝儿,豆豆只能多看书来回报宝宝,爱你 第九章 Queue程序笔记程序运行情况:1、Queue程序的目的是熟悉两个原创 2011-12-06 23:09:39 · 1047 阅读 · 2 评论 -
Windows核心编程<读书笔记九>线程与内核对象的同步
【文起】亲爱的蟹儿,怀念你的歌声,想听你给我唱歌,期待宝贝儿的歌声。奋斗线程与内核对象的同步1、 用户方式的线程同步与内核对象的线程同步:用户方式:速度快是其优点,但是也有局限性。如互锁函数只能在单值上运行,无法使线程进入等待状态。虽然可以使用关键代码段使线程进入等待状态,但是这样又会容易陷入死锁,因为在等待进入关键代码段时无法设定超时值。内核对象方式:唯一的缺点就是速度慢原创 2011-12-05 22:30:12 · 557 阅读 · 0 评论 -
windows核心编程读书笔记一
1、windows系统中,可以调用GetLastError来获取API函数的错误ID。同时,windows提供了一个FormatMessage函数来将错误码ID转化为错误码描述。在winerror.h 有详细的错误码描述,如下所示。每个错误码包含三个部分// MessageId: ERROR_FILE_NOT_FOUND原创 2011-11-16 12:18:35 · 655 阅读 · 2 评论 -
windows核心编程<读书笔记三>内核对象
【文起】蟹儿的爱一直伴随着,奋斗!内核对象1、 定义:内核对象可以供系统和应用程序使用来管理各种各样的资源,比如线程、进程、文件等。内核对象就是内核分配的一个内存块,且只能由该内核来访问。这样做是为了确保内核对象结构保持状态的一致。而操作内核对象,只能通过Microsoft提供的一组函数。2、 内核对象的使用计数:内核对象是由内核所拥有的,而非进程所拥有的。也就是说,即原创 2011-11-19 21:01:31 · 442 阅读 · 0 评论 -
Windows核心编程<读书笔记二>Unicode和ANSI
【文起】蟹儿的爱一直激励着我,爱蟹儿,爱编码 单字节和双字节字符集1、早期在双字节字符集中,字符串中的每个字符可以包含一个字节或者两个字节。如:日文中的汉字,第一个字符在0x81与0x9F之间或者在0xE0与0xFC之间,那么必须观察下一个字节才能确定字符串的这个完整字符。如果只是调用strlen函数,无法真正了解字符串中究竟有多少个字符,只能给出到达结尾的0之前有多少字节。所原创 2011-11-18 21:42:31 · 595 阅读 · 0 评论 -
Windows核心编程<读书笔记四> 进程的概念
【文起】豆子爱蟹儿,没有你,我不可能每天坚持下去,为了你和我们的爱 进程1、 进程和线程:进程通常被定义为一个正在运行的程序实例。由两个部分组成:*操作系统用来管理进程的内核对象;*地址空间,包含所有可执行模块或DLL模块的代码和数据,还包含动态内存分配的空间。进程是不活泼的,必须拥有线程来执行包含在进程的地址空间中的代码。创建一个进程时,系统将会自动创建一个线程,称为主原创 2011-11-20 21:16:49 · 561 阅读 · 0 评论 -
Windows核心编程<读书笔记四之程序>显示系统中进程、线程、模块详细信息
【文起】豆子爱蟹儿,没有你,我不可能坚持不懈的去思考,为了我们的幸福奋斗第四章的程序1、 首先理解下面这个函数:HANDLE CreateToolhelp32Snapshot( DWORD dwFlags,DWORD th32ProcessID)dwFlags的取值如下:u TH32CS_INHERIT - 声明快照句柄是可继承的。 u TH32CS_原创 2011-11-24 00:03:14 · 1618 阅读 · 3 评论 -
Windows核心编程<读书笔记四>return exit(0) ExitProcess的不同之处
【文起】爱生活,爱编码,爱蟹儿。为了我跟蟹儿的幸福,奋斗 退出程序的几种方式1、首先说下程序是如何启动的,前面的读书笔记已经详细写了,这儿再重复下程序执行的步骤:A、 检索指向新进程的完整命令行的指针;B、 检索指向新进程的环境变量的指针;C、 对C/C++运行期的全局变量进程初始化;D、 对C运行期间内存单元分配函数和其他底层输入原创 2011-11-24 00:18:11 · 1578 阅读 · 0 评论 -
Windows核心编程<读书笔记五>作业JOB
【文起】蟹儿,有你真好。想你,吻你。亲爱的,等豆豆回去哦jobli.LimitFlags = JOB_OBJECT_LIMIT_JOB_TIME | JOB_OBJECT_LIMIT_PRIORITY_CLASS ; 作业作业可以理解为是进程的容器,对运行的进程做一种限制。对于作业进行限制,有四种类型的枚举:限制类型第二个参数的值原创 2011-11-25 23:09:17 · 1703 阅读 · 0 评论 -
Windows核心编程<读书笔记五>手把手写JobLab程序
【文起】亲爱的蟹儿,12点没去睡觉,不乖了,想多看点儿书,回去就能多陪陪你了。爱你根据书上的程序,自己用MFC完成了书上的功能。1、在OnInitDialog() 函数中对IDC_COMBO_PRIORITY 和 IDC_COMBO_SCHEDULING 初始化,并设定定时器函数。CComboBox *pcom = (CComboBox *)GetDlgItem(IDC_COMBO原创 2011-11-28 00:34:32 · 2295 阅读 · 2 评论 -
Windows核心编程<读书笔记六> 线程
【文起】亲爱的,想一觉醒来了我就在你身边,爱你。线程1、 每个进程至少有一个线程。线程包含:1、线程内核对象;2、线程堆栈(用户维护线程执行代码时需要的所有函数参数和局部变量)2、 线程需要的开销比进程少,所以尽量应该设法用增加线程来解决编程问题,而非创建新的进程。当然有些时候多个进程更为合理。3、 编写第一个线程函数。每个线程都必须从进入点函数开始执行,主线程进入点函数是:原创 2011-11-29 00:18:55 · 677 阅读 · 0 评论 -
Windows核心编程<读书笔记八>线程的同步
【文起】亲爱的蟹儿,想念你就是我坚持下去的动力。为了每天能一起喝红酒,奋斗,嘻嘻用户方式中线程的同步1、 当系统中的线程对同一共享资源进行读取时,就会涉及线程的同步,也就是线程间的相互通信。2、 原子访问:互锁为了保证同一时间内只有一个线程在访问共享资源,我们一般会建立互锁函数。如函数LONG InterlockedExchangeAdd(PLONG plTarget,LO原创 2011-12-03 21:29:07 · 547 阅读 · 0 评论 -
Windows核心编程<读书笔记十七>Applnst程序详解
【文起】最近公司比较忙,耽误了看书。亲爱的一直安慰我不要心急,不要给自己压力,可是好想好想达成目标。爱蟹儿1、程序描述:掌握可执行程序通过定义自己的节来共享变量。运行结果 2、实现原理:定义自己的节,节中定义共享变量,初始化对话框时,变量++,销毁对话框时,变量--。为了显示出来,启用一个定时器,每隔1s刷新一次。 3、定义自己的节#pragma data_se原创 2012-02-16 23:53:21 · 607 阅读 · 0 评论