`

WINDOWS核心编程--读书笔记:第三章 内核对象

阅读更多

一、系统中的内核对象有:比如存取符号对象、 事件对象、文件对象、文件映射对象、I / O 完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程对象和等待计 时器对象等。

二、对于内核的理解:

每个内 核对象只是内核分配的一个内存块,并且只能由该内核访问。

该内存块是一种数据结构,它的成员负责维护该对象的各种信息。

有些数据成员(如安全性描述符、使用计数等)在所有对象类型中是相同的,但大多数数据成员属于特定的对象类型。

例如,进程对象有一个进程I D 、一个基 本优先级和一个退出代码,而文件对象则拥有一个字节位移、一个共享模式和一个打开模式。

三、特别需要注意的一个事实:内核对象的存在时间可以比创建该对象的进程长。

实现的机理:1、内核对象由内核所拥有,而不是由进程所拥有。2内核对象的使用计数

四、究竟是用户对象还是内核对象呢?若要确定一个对象是否属于内核对象,最容易的方法是观察创建该对象所用的函数。创建内核对象的所有函数几乎都有一个参数,你可以用来设定安全属性的信息。

五、进程的内核对象句柄表

进程的句柄表,它只是个数据结构的数组。每个结构都包含一个指向内核对象的指针、一个访问屏蔽和一些标志。

六、跨越进程边界共享内核对象

在不同进程中运行的线程需要共享内核对象。下面是为何需要共享的原因:

• 文件映射对象使你能够在同一台机器上运行的两个进程之间共享数据块。

• 邮箱和指定的管道使得应用程序能够在连网的不同机器上运行的进程之间发送数据块。

• 互斥对象、信标和事件使得不同进程中的线程能够同步它们的连续运行,这与一个应用程序在完成某项任务时需要将情况通知另一个应用程序的情况相同。

七、命名对象

共享跨越进程边界的内核对象的第二种方法是给对象命名。

所有这些函数都有一个共同的最后参数p s z N a m e 。

当为该参数传递N U L L 时,就向系统指明了想创建一个未命名的(匿名)内核对象。

命名对象常常用来防止运行一个应用程序的多个实例。

创建一个命名对象后,怎么判断该命名对象是否已经创建过。

当C r e a t e *函数返回时,调用G e t L a s t E r r o r 函数。

如果G e t L a s t E r r o r 函数返回E R R O R _ A L R E A D Y _ E X I S T S ,那么你的应用程序的另一个实例正在运行

为了保证对象的唯一性,建议创建一个G U I D ,并将G U I D 的字符串表达式用作对象名。

八、 存在的几个疑惑:句柄能够在进程之间拷贝? 这样做有意义吗?

句柄,喔 用途上还没有概念。。。

分享到:
评论

相关推荐

    若干源程序资料12.rar

    2012-06-11 21:28 249,332 Windows核心编程源码.rar 2012-06-11 21:40 1,000,923 Windows程序设计(第5版)配套代码.rar 2012-06-11 21:31 5,504,736 《PC游戏编程(网络游戏篇)》光盘源代码.rar 2012-06-11 21:09 ...

    windows核心编程读书笔记六.doc

    《Windows核心编程》读书笔记六主要探讨了Windows操作系统内存管理和窗口消息处理的细节。以下是针对这两部分内容的关键知识点的详尽解析: ### 内存结构 1. **虚拟地址空间**:在32位Windows中,每个进程有4GB的...

    Professional Linux Kernel Architecture, 精通Linux内核架构

    - **第3章:内存管理** - **知识点**:讲解了Linux内核如何管理物理内存和虚拟内存,包括页表管理、内存分配与回收策略、内存碎片处理等技术细节。 - **重要性**:内存管理直接影响到系统的性能和稳定性,是内核...

    ARM体系结构与编程(第二版) 杜春雷 学习笔记ppt

    **ARM体系结构与编程(第二版)学习笔记** 在计算机科学领域,ARM(Advanced RISC Machines)架构是一种广泛使用的精简指令集计算机(RISC)架构,尤其在嵌入式系统、移动设备如智能手机和平板电脑中占据主导地位。...

    ARM入门笔记

    ### ARM入门笔记知识点详解 #### 一、ARM基础知识概述 - **ARM架构简介**:ARM是一种基于精简指令集计算(RISC)技术的处理器架构,广泛应用于移动设备、嵌入式系统等领域。ARM架构因其低功耗、高性能等特点而备受...

    《Unix Shell 实例精解》学习笔记

    - Shell是一种作为用户与内核(即UNIX操作系统的核心)之间的桥梁的特殊程序。 - 常见的Shell类型包括:C shell (csh)、Bourne shell (sh) 和 Korn shell (ksh),后者是Bourne shell的超集。 - **Shell的主要功能...

    《unix shell 实例精解》学习笔记

    - **概念**: Shell 是一种特殊的程序,它作为用户与 Unix 操作系统核心(内核)之间的接口,提供了一个交互式的环境来执行命令和脚本。 **1.2 Shell 的主要功能** - **命令解释**: 当用户在命令行提示符下输入命令...

    Professional Linux Kernel Architecture

    3. **第3章:内存管理** - **主要内容**:深入探讨Linux内核如何高效地管理物理内存资源,包括内存分配、释放、页表管理等内容。 - **学习目标**:熟悉Linux内核中的内存管理机制,理解虚拟内存和物理内存之间的...

    php核心编程第三版.rar

    《PHP核心编程》是PHP开发领域的一本经典著作,尤其第三版更是深受程序员喜爱。这本书主要针对已经熟悉PHP基础的开发者,旨在深入探讨PHP的高级特性和最佳实践,帮助读者全面掌握PHP的核心技术。 在阅读英文版的...

    linux内核分析及编程(倪继利)(5-7章)

    《Linux内核分析及编程》是由倪继利编著的一本深入探讨Linux内核的书籍,主要涵盖了第5至7章的内容。这三章通常会涉及Linux内核的基础架构、进程管理和内存管理等核心主题。以下是对这些章节的详细解析: 第5章:...

    android学习笔记

    1. **Linux内核**:作为Android的基础,提供了操作系统的核心功能,如硬件驱动程序、内存管理等。 2. **Android运行时**:主要包括了核心库(实现Java语言的核心类)和Dalvik虚拟机(专门针对Android优化的虚拟机)...

    linux内核设计与实现第二版 学习笔记

    通过阅读《Linux内核设计与实现》第二版的学习笔记,可以深入了解这些核心概念,并掌握如何分析和调试内核,这对于系统管理员、软件开发者或者对操作系统感兴趣的任何人都极其有价值。这份笔记详尽地介绍了Linux内核...

    灰狐驱动学习笔记 驱动开发

    - **第三章:编写第一个驱动程序** - **3.1 内核模式下的字符串操作**:介绍了如何在内核模式下安全高效地处理字符串。 - **3.2 内核模式下各种开头函数的区别**:探讨了不同内核函数的使用场景和注意事项。 - **...

    编程笔记本SendMessage

    它是Windows API中的一个核心函数,广泛应用于界面编程中。 #### 2. 参数详解 `SendMessage`函数的基本原型如下: ```c LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); ``` - `...

    android开发笔记

    #### 第3章 Intent的使用 **3.1 Intent简介** - Intent是Android中用于组件间通信的机制。 - 它可以携带额外数据,并指定要启动的组件或广播。 **3.2 Activity与Intent** - Intent可以用于启动一个新的Activity...

Global site tag (gtag.js) - Google Analytics