windows核心编程--SEH(结构异常处理)

SEH 的工作原理。         Windows 程序设计中最重要的理念就是消息传递,事件驱动。当GUI应用程序触发一个消息时,系统将把该消息放入消息队列,然后去查找并调用窗体的消息处理函数(CALLBACK),传递的参数当然就是这个消息。我们同样可以把异常也当作是一种消息,应用程序发生异常时就触发了该消息并告知系统。系统接收后同样会找它的“回调函数”,也就是我们的异常处理例程。当然,如果我...

2008-12-31 12:03 阅读(51) 评论(0)

windows核心编程--DLL高级

DLL的进入点函数 一个D L L可以拥有单个进入点函数。系统在不同的时间调用这个进入点函数,这个问题将在下面加以介绍。这些调用可以用来提供一些信息,通常用于供D L L进行每个进程或线程的初始化和清除操作。如果你的D L L不需要这些通知信息,就不必在D L L源代码中实现这个函数。例如,如果你创建一个只包含资源的D L L,就不必实现该函数。如果确实需要在D L L中接受通知信息,可...

2008-12-31 12:02 阅读(92) 评论(1)

windows核心编程--DLL基本

Windows API 中的所有函数都包含在D L L中: K e r n e l 3 2 . d l l,它包含用于管理内存、进程和线程的各个函数; U s e r 3 2 . d l l,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数; G D I 3 2 . d l l,它包含用于画图和显示文本的各个函数。 A d v A P I 3 2 . d l l包含用于实现对象安...

2008-12-31 12:02 阅读(79) 评论(0)

windows核心编程--内存堆栈

对内存进行操作的第三个机制是使用堆栈。堆栈可以用来分配许多较小的数据块。例如,若要对链接表和链接树进行管理,最好的方法是使用堆栈,堆栈的优点是,可以不考虑分配粒度和页面边界之类的问题,集中精力处理手头的任务。堆栈的缺点是,分配和释放内存块的速度比其他机制要慢,并且无法直接控制物理存储器的提交和回收。 从内部来讲,堆栈是保留的地址空间的一个区域。开始时,保留区域中的大多数页面没有被提交物理存储...

2008-12-31 12:01 阅读(188) 评论(0)

windows核心编程--内存映射文件

与虚拟内存一样,内存映射文件可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。它们之间的差别是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页文件。一旦该文件被映射,就可以访问它,就像整个文件已经加载内存一样。 内存映射文件可以用于3个不同的目的: • 系统使用内存映射文件,以便加载和执行. e x e和D L L文件。这可以大大节省页文件空间和应用程序启动运行所需...

2008-12-31 12:00 阅读(207) 评论(0)

windows核心编程--虚拟内存

Wi n d o w s提供了3种进行内存管理的方法,它们是: • 虚拟内存,最适合用来管理大型对象或结构数组。 • 内存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行的多个进程之间共享数据。 • 内存堆栈,最适合用来管理大量的小对象。虚拟内存的状态 Wi n d o w s函数G l o b a l M e m o r y S t a t u s可用...

2008-12-31 11:59 阅读(62) 评论(0)

windows核心编程--内存结构

每个进程都被赋予它自己的虚拟地址空间。对于3 2位进程来说,这个地址空间是4 G B,因为3 2位指针可以拥有从0 x 0 0 0 0 0 0 0 0至0 x F F F F F F F F之间的任何一个值。这使得一个指针能够拥有4 294 967 296个值中的一个值,它覆盖了一个进程的4 G B虚拟空间的范围。 由于每个进程可以接收它自己的私有的地址空间,因此当进程中的一个线程正在运...

2008-12-31 11:58 阅读(163) 评论(0)

windows核心编程--纤程

比线程更小的单位,好像用的不多的哦纤程的操作 首先要注意的一个问题是,实现线程的是Wi n d o w s内核。操作系统清楚地知道线程的情况,并且根据M i c r o s o f t定义的算法对线程进行调度。纤程是以用户方式代码来实现的,内核并不知道纤程,并且它们是根据用户定义的算法来调度的。由于你定义了纤程的调度算法,因此,就内核而言,纤程采用非抢占式调度方式。 需要了解的下一个问题...

2008-12-31 11:58 阅读(95) 评论(0)

windows核心编程--线程的同步

由于同一进程的所有线程共享进程的虚拟地址空间,并且线程的中断是汇编语言级的,所以可能会发生两个线程同时访问同一个对象(包括全局变量、共享资源、API函数和MFC对象等)的情况,这有可能导致程序错误。属于不同进程的线程在同时访问同一内存区域或共享资源时,也会存在同样的问题。因此,在多线程应用程序中,常常需要采取一些措施来同步线程的执行。需要同步的情况包括以下几种: 在多个线程同时访问同...

2008-12-31 11:56 阅读(60) 评论(0)

windows核心编程--线程高级

暂停和恢复线程的运行在线程内核对象的内部有一个值,用于指明线程的暂停计数。当调用C r e a t e P r o c e s s或C r e a t e T h r e a d函数时,就创建了线程的内核对象,并且它的暂停计数被初始化为1。当线程的暂停计数是0的时候,除非线程正在等待其他某种事情的发生,否则该线程就处于可调度状态。恢复线程,可以用将调用R e s u m e T h r e a ...

2008-12-31 11:55 阅读(67) 评论(0)

windows核心编程--线程

进程是由两个部分构成的,一个是进程内核对象,另一个是地址空间。同样,线程也是由两个部分组成的: • 一个是线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。 • 另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量进程从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。如果在单进...

2008-12-31 11:53 阅读(59) 评论(0)

作业

作业: 作业可以看作是一组进程的容器,把这些进程当作一个整体,对这个整体整个加入更多的限制.                    因为Wi n d o w s并不维护进程之间的父/子关系。即使父进程已经终止运行,子进程仍然会继续运行。Microsoft Windoss 2000提供了一个新的作业内核对象,使你能够将进程组合在一起,并且创建一个“沙框”,以便限制进程能够进行的操作。最好将作...

2008-12-31 11:51 阅读(51) 评论(0)

windows核心编程--进程

进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: • 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。 • 另一个是地址空间,它包含所有可执行模块或 D L L 模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。   进程是不活泼的。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,该线程负责执行包...

2008-12-31 11:50 阅读(62) 评论(0)

windows核心编程--内核对象

内核对象是系统的一种资源。系统对象一旦产生,任何应用程序都可以开启并且使用该对象。系统给内核对象一个计数值作为管理只用,内核对象包括: event,mutex,semaphore,file,file-mapping,preocess,thread. 这些内核对象每次产生都会返回一个handle,作为标示,每使用一次,对应的计数值加1,调用CloseHandle可以结束内核对象的使用。具体:...

2008-12-31 11:48 阅读(41) 评论(0)

windows核心编程--字符集

1 软件的本地化要解决的真正问题,实际上就是如何来处理不同的字符集。以前我们习惯与用单字节字符集来编程.2 单字符集:将文本串作为一系列单字节字符来进行编码,并在结尾处放上一个零。(每个字符用一个字节来表示)3 双字节字符集(D B C S ):在双字节字符集中,字符串中的每个字符可以包含一个字节或包含两个字节。4 unicode字符集:U n i c o d e 提供了一种简单而又一致的表示字...

2008-12-31 11:47 阅读(63) 评论(0)

windows核心编程--函数返回错误

windows API的返回类型数据类型 表示失败的值 V O I D 该函数的运行不可能失败。Wi n d o w s 函数的返回值类型很少是V O I D B O O L如果函数运行失败,那么返回值是0 ,否则返回的是非0 值。最好对返回值进行测试,以确定它是0 还是非0 。不要测试返回值是否为T R U E H A N D L...

转载于:https://www.cnblogs.com/titer1/archive/2011/12/16/2289960.html

转 windows核心编程 学习笔记 目录相关推荐

  1. Windows核心编程学习笔记

    字符串处理 strcpy和wcscpy不安全,是因为无法判断缓冲区最大长度的参数,不知道是否会破坏内存 一个进程-> 一个内核对象+一个地址空间 每个对象只是一个内存块 文件地址包括字节偏移量. ...

  2. windows核心编程学习笔记(六)动态链接库

    动态链接库有很多优点: •扩展了应用程序的特性 •可以用许多种编程语言来编写 •简化了软件项目的管理 •有助于节省内存 •有助于资源的共享 •有助于应用程序的本地化 •有助于解决平台差异 •可以用于一 ...

  3. windows核心编程学习笔记(八)结构化异常处理(Structured Exception Handling)

    首先要要知道,结构化异常处理(SEH)和C++提供的异常处理不相同. 一.Termination HandlersTermination Handlers使用很简单.在想使用SEH处理的地方使用 __ ...

  4. DLL的高级操作技术——Windows核心编程学习手札之二十

    DLL的高级操作技术 --Windows核心编程学习手札之二十 显示加载DLL模块: HINSTANCE LoadLibrary(PCTSTR pszDLLPathName); HINSTANCE L ...

  5. 进程——Windows核心编程学习手札系列之四

    进程 --Windows核心编程学习手札系列之四 进程是一个正在运行的程序的实例,有两个部分组成:一个是操作系统用来管理进程的内核对象,内核对象是系统用来存放关于进程的统计信息的地方:另一个是地址空间 ...

  6. 窗口消息——Windows核心编程学习手札之二十六

    窗口消息 --Windows核心编程学习手札之二十六 Windows允许一个进程至多建立10000个不同类型的用户对象(user object):图符.光标.窗口类.菜单.加速键表等,当一个线程调用一 ...

  7. 未处理异常和C++异常——Windows核心编程学习手札之二十五

    未处理异常和C++异常 --Windows核心编程学习手札之二十五 当一个异常过滤器返回EXCEPTION_CONTINUE_SEARCH标识符时是告诉系统继续上溯调用树,寻找另外的异常过滤器,但当每 ...

  8. 异常处理程序和软件异常——Windows核心编程学习手札之二十四

    异常处理程序和软件异常 --Windows核心编程学习手札之二十四 CPU负责捕捉无效内存访问和用0除一个数值这种错误,并相应引发一个异常作为对错误的反应,CPU引发的异常称为硬件异常(hardwar ...

  9. 结束处理程序——Windows核心编程学习手札之二十三

    结束处理程序 --Windows核心编程学习手札之二十三 使用SEH可以只关注程序要完成任务,而运行中发生的错误,系统将会发现并通知.Windows引入SHE是为了便于操作系统的开发,使用SHE所造成 ...

最新文章

  1. ORBBuf : 一种鲁棒的协同视觉SLAM缓冲方法
  2. linux异常 - 无法分配内存
  3. php-cgi导致的502 Bad Gateway错误
  4. ToString()、Convert.ToString()、(string)、as string 的区别
  5. ansile(3)playbook 使用说明
  6. Mac系统下安装Homebrew后无法使用brew命令
  7. ARM 之九 Cortex-M/R 内核启动过程 / 程序启动流程(基于ARMCC、Keil)
  8. SAP CRM business partner determination原理介绍
  9. vue --- 动画执行的周期(动画的钩子函数)
  10. JSP的HTML基础实验原理,实验四 JSP基础语法
  11. mysql 日期列表_MySQL 生成日期表
  12. Linux 串口编程二 深入了解 termios
  13. windows phone 了解LinearGradientBrush类和RadialGradienBrush类(11)
  14. Leetcode每日一题:1024.video-stitching(视频拼接)
  15. Linux-目录和文件管理(二)
  16. Linux:计算机网络基础
  17. 解决Windows server 2003不认U盘
  18. 如何查看电脑是否已经虚拟化
  19. 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测
  20. 概率分析和随机算法_雇佣问题

热门文章

  1. php ruby 优缺点,php,python,ruby,perl的优缺点?
  2. 基于LSTM的中文文本多分类
  3. 传统版生产者消费者模式2.0
  4. 简述vue-router实现原理
  5. 唯一的确定一棵二叉树
  6. hive优化--增加减少map数
  7. MATLAB 线性运算之图像相加去噪
  8. 通信协议之广播---recvfrom 放回客户端的ip地址第一次全为0.0.0.0
  9. DataTable操作(建表,建行,建列,添加数据)
  10. 使用PHP实现请求响应和MySql访问