
Windows核心编程笔记
文章平均质量分 83
Day_Day_UP
这个作者很懒,什么都没留下…
展开
-
windows同步和互斥总结
一、关键段(CRITICAL_SECTION)(非内核对象)使用关键段进行线程互斥时非常简单,只涉及到以下四个函数函数功能:初始化函数原型:void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection);函数说明:定义关键段变量后必须先初始化。函数功能:销毁函数原型:void Dele原创 2015-06-16 19:47:23 · 848 阅读 · 0 评论 -
《Windows核心编程》——九 用内核对象进行线程同步
前言: 在用户模式下进行线程同步的最大好处就是速度非常快。与用户模式下的同步机制相比,内核对象的用途要广泛的多,内核对象唯一的缺点就是它们的性能。调用本章介绍的任何一个新函数时,调用线程必须从用户模式切换到内核模式。对于线程同步来说,这些内核对象中的每一种要么处于触发状态,要么处于未触发状态。比如进程创建时,进程内核对象为未触发状态;进程结束时,进程内核对象为触发状态,当进程内核对象被触转载 2015-01-08 17:18:00 · 665 阅读 · 0 评论 -
《Windows核心编程》——八 用户模式下的线程调度
前言转载 2015-01-07 19:52:49 · 665 阅读 · 0 评论 -
《Windows核心编程》——七 线程调度、优先级和关联性
前言 每个线程都有一个上下文(CONTEXT),后者保存在线程的内核对象中。这个上下文反映了线程上一次执行时CPU寄存器的状态。大约每隔20ms,Windows都会查看所有当前存在的线程内核对象。在这些对象中,只有一些被认为是可调度的。Windows在可调度的线程内核对象中选择一个,并将上次保存在线程上下文的值载入CPU寄存器。这一操作被称为上下文切换。Windows实际上会记录每个线程转载 2015-01-07 13:55:23 · 811 阅读 · 0 评论 -
《Windows核心编程》——六 线程基础
前言: 线程也有两部分组成: a.一个是线程的内核对象,操作系统用它来管理线程。系统还用内核对象来存放线程统计信息的地方 b.一个线程栈,用于维护线程执行时所需的所有函数参数和局部变量 线程必然是在某个进程的上下文创建的,而且会在这个进程内部”终其一生“。这意味着线程要在其进程的地址空间内执行代码和处理数据。所以假如一个进程上下文中有两个以上线程运转载 2015-01-06 16:04:36 · 678 阅读 · 0 评论 -
《Windows核心编程》——五 作业
前言 Windows提供了一个作业(job)内核对象,它允许我们将进程组合在一起并创建一个“沙箱”来限制进程能够做什么。最好把作业对象想象成一个进程容器。但是,创建只包含一个进程的作业同样非常有用,因为这样可以对进程施加平时不能施加的限制。 如果进程已与一个作业关联,就无法将当前进程或者它的任何子进程从作业中去除。这个安全特性可以确保进程无法摆脱对它的限制。 关闭一个转载 2015-01-06 10:22:11 · 592 阅读 · 0 评论 -
《Windows核心编程》——四 进程
前言 一般将进程定义为一个正在运行的程序的一个实例,它由两部分组成: ①一个内核对象,操作系统用它来管理进程。内核对象也是系统保存进程统计信息的地方 ②一个地址空间,其中包含所有可执行文件或dll模块的代码和数据。此外,它还包含动态内存分配,比如线程堆栈和堆的分配。 进程是有“惰性”的,进程要做任何事情,都必须让一个线程在它的上下文中运行。该线程负责执行进程转载 2015-01-05 17:11:14 · 850 阅读 · 0 评论 -
《Windows核心编程》——三 内核对象
前言内核对象用于管理进程、线程和文件等诸多种类的大量资源。3.1 何为内核对象内核对象包括访问令牌对象、事件对象、文件对象、文件映像对象、I/O完成端口对象、作业对象、邮件槽对象、互斥量对象、管道对象、进程对象、信号量对象、线程对象、可等待的计时器对象以及线程池工厂对象等。每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核访问。这个内存块是一个数据结构,其成员转载 2015-01-05 10:53:03 · 643 阅读 · 0 评论 -
《Windows核心编程》——二字符与字符串处理
Unicode的好处:Unicode会增加程序的执行性能,并为本地化工作奠定基础,有利于同COM和.Net Framework的互操作。2.1 字符编码用户一直在将文本字符串编码成一组以0结尾的单字节字符,并调用strlen,它会返回“以0结尾的一个ANSI单字节字符数组”中的字符数。但是一个字节最多只能表示256个符号。但是很多国家的文字超过256个符号。所以就有了双字节字符串,转载 2015-01-04 18:39:03 · 445 阅读 · 0 评论 -
Windows核心编程一 错误处理
DWORD iErrorValue; while(std::cin>>iErrorValue) { HLOCAL hlocal = NULL; // Buffer that gets the error message string // Use the default system locale since we look fo转载 2015-01-04 15:19:51 · 360 阅读 · 0 评论