用户对象/GDI对象/内核对象
对象的分类
Windows的对象可以分为三种,分别是用户对象,GDI对象和内核对象。系统使用用户对象支持窗口管理,使用GDI对象支持图形,并使用内核对象支持内存管理,进程执行和进程间通信(IPC) 。Windows通过句柄来标识各个对象资源。
区别
- 内核对象属于操作系统内核,存在于内核空间中不属于某个特定的进程。进程通过维护一张内核对象句柄表来访问各个内核对象,不同的进程之间可以访问同一个内核对象。GDI对象和用户对象属于进程,存在于用户空间中。虽然不能不同的进程中访问同一个GDI对象和用户对象,但是可以在一个进程中向另一个进程的窗口对象发送消息。
- 关闭内核对象引用句柄用CloseHandle(),而关闭用户对象和GDI对象句柄有专门的的Destry函数。
- 进程创建内核对象,当内核对象句柄被释放进程也结束运行后,其对应的内核对象不一定被销毁,因为用可能此内核对象被其他进程所引用了。进程创建用户对象/GDI对象,当对象的句柄被释放后进程结束运行后,其对应的用户对象/GDI对象一定会被销毁,因为这些对象都是属于此进程的存在于此进程的用户空间中,当进程结束后,其所属的用户对象/GDI对象也将销毁而不复存在。
区分
用户对象,GDI对象和内核对象实际是不易区分的,通常创建内核对象的时候其需要提供一个安全描述符结构,而创建用户对象和GDI对象时却没有。
用户对象:加速键(HACCEL),Caret,光标(HCURSOR),钩子(HHOOK),图标(HICON),菜单(HMENU),窗口(HWND),HDWP
GDI对象:位图(HBITMAP),画刷(HBRUSH),设备上下文(HDC),字体(HFONT),内存DC(HDC),调色板(HPALETTE),画笔(HPEN),区域(HRGN)
内核对象:事件对象,文件对象,文件映射对象,I/O完成对象,作业对象,邮件槽对象,互斥对象,管道对象,进程对象,信号量对象,线程对象,等待计时器对象。
用户对象/GDI对象/内核对象的更多相关文章
- GDI和内核对象区别
1.GDI对象和核心对象之间最主要的区别在于GDI对象有单一拥有者,不是进程就是线程 2.核心对象可以有一个以上的拥有者,甚至可以跨进程,为了保持对每一位(拥有者)的追踪,核心对象保持了一个引用计数, ...
- Windows内核对象
1. 内核对象 Windows中每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核进行访问,应用程序不能在内存中定位这些数据结构并直接更改其内容.这个内存块是一个数据结构,其成员 ...
- 内核对象 windows操作系统
问题: 什么是内核对象? 答:内核对象实际上时由内核分配的一块内存,而且只能由内核来访问.它时一个数据结构,成员包含有关于该对象的信息.一些成员对于所有对象类型都是一样的,比如对象名称.安全描述.使用 ...
- Windows进程的内核对象句柄表
当一个进程被初始化时,系统要为它分配一个句柄表.该句柄表只用于内核对象 ,不用于用户对象或GDI对象. 创建内核对象 当进程初次被初始化时,它的句柄表是空的.然后,当进程中的线程调用创建内核对象的函数 ...
- windows编程之内核对象
学好windows编程,理解内核对象还是至关重要的(●'◡'●).闲话不多说,下面先来了解一下关于内核对象的知识: 内核对象(kernel object):内核对象是用于管理进 ...
- 内核对象&句柄
目录 1 内核对象的概念 2 内核对象的使用计数 3 句柄 4 句柄表 项目工程代码中设计句柄的使用,一时不知句柄是何物,通过查阅自学之后,对句柄及其使用有一个初步的了解.分享出来,算是抛砖引玉吧 ...
- 内存块是一种数据结构,内核对象&句柄
内核对象&句柄 目录 1 内核对象的概念 2 内核对象的使用计数 3 句柄 4 句柄表 项目工程代码中设计句柄的使用,一时不知句柄是何物,通过查阅自学之后,对句柄及其使用有一个初步的了解. ...
- windows核心编程---第八章 使用内核对象进行线程同步
使用内核对象进行线程同步. 前面我们介绍了用户模式下线程同步的几种方式.在用户模式下进行线程同步的最大好处就是速度非常快.因此当需要使用线程同步时用户模式下的线程同步是首选. 但是用户模式下的线程同步 ...
- Windows Internals 笔记——内核对象
1.每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核访问.这个内存块是一个数据结构,其成员维护着与对象相关的信息. 2.调用一个会创建内核对象的函数后,函数会返回一个句柄,它标 ...
随机推荐
- Azure Cost alerts 费用成本分析
一,引言 依稀记得在一月初,我们在 Azure 上做成了一个 费用警报的监控,果不其然,前两天 Azure 给我发了两封封 Azure 预警警报的邮件,提醒我的预算的总费用超过了设置的通知阈值 &qu ...
- python中对类的方法中参数self的理解
我们通过下面的代码来对参数self进行理解 #coding:utf-8 2 class washer(): 3 def wash(self): 4 print("洗衣服") 5 p ...
- 对用pyinstaller打包的exe程序进行反编译,获得源码
参考文章: 1.https://www.cnblogs.com/DirWang/p/12018949.html#PyInstallerExtractor 2.https://msd.misuland. ...
- C语言可变参函数分析
code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...
- 【Visual Studio调教小记录】C++指针靠前靠后??
本文地址:https://www.cnblogs.com/oberon-zjt0806/p/14631149.html 甜咸之争 经常写C++的基本上避不开使用指针,而且C++中指针类型的写法大体上有 ...
- ICMP主机探测过程
#1from scapy.all import * from random import randint from optparse import OptionParser #2 对用户输入的参数进行 ...
- [模拟]P1046 陶陶摘苹果
陶陶摘苹果 ## 题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试 ...
- Python函数参数和注解是什么
四种参数 Python函数func定义如下: def func(first, *args, second="Hello World", **kwargs): print(first ...
- OO_Unit4暨学期总结
OO_Unit4暨学期总结 一.本单元架构设计 1.1 第13次作业架构设计 就我个人而言,这次作业应该是本单元难度最大的一次作业,原因在于陡然转向UML后,对UML各个元素的关系理解需要先下一番功夫 ...
- lms微服务框架主机介绍
目录 概念 .net的通用主机 .net的web主机 lms的业务主机类型 用于托管业务应用的普通主机 1. 创建一个应用台程序 2. 安装Silky.Lms.NormHost包 3. 注册LMS服务 ...