Windows中的对象

来源  http://www.0xaa55.com/forum.php?mod=viewthread&tid=1401&extra=page%3D1

windows里常用句柄操作资源,而对应的对象由操作系统维护,

对象分:用户对象、GDI对象和内核对象;

用户对象用于windows管理,GDI对象用于绘图,内核对象用于内存、进程和IPC,

Windows核心编程写道识别内核对象的方法是看有没有SECURITY_DESCRIPTOR参数

用户对象的资源包括:快捷键、光标、标记、dde转换、钩子、图标、菜单、窗口等
    GDI对象包括:位图、画刷、画笔、设备上下文、图元、字体、调色板、区域等
    内核对象包括:访问令牌、设备、控制台、桌面、事件、文件、文件映射、堆、作业、油槽、模块、互斥体、管道、信号量、socket、线程、计时器等

用户对象,每个对象只能有一个句柄,不允许进程间复制和继承句柄,一个session的进程不能引用另一个session进程的句柄。每个session最多用户句柄有上限(200,18000),

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota


GDI对象,每个对象只能有一个句柄,GDI对象的句柄对于进程是私有的,只有创建对象的进程可以使用对象句柄,句柄数最多用户句柄有上限(256,16384),
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota

内核对象句柄是进程所有的,也就是说进程要么打开已有对象,要么创建对象以获取内核对象句柄,该句柄可以复制和继承,每个进程句柄上限是2^24,然而句柄是存在分页内存中的,因此实际句柄数与可用内存有关。




来自为知笔记(Wiz)

时间: 2024-12-21 21:37:48

Windows中的对象的相关文章

windows系统的对象管理

windows中的对象和高级编程语言中所说的对象还欧区别,准确来讲,windows中的对象其实指的是一种数据结构并且是一种带着“对象头(object head)” 的数据结构! 所以windows中的对象可以基本分为三个部分:对象头.基本对象结构.可选部分! 对象数据结构 可以如图所示 objectheader结构定义 1 lkd> dt _object_header 2 nt!_OBJECT_HEADER 3 +0x000 PointerCount : Int4B 4 +0x004 Handl

windows中根据进程PID查找进程对象过程深入分析

这里windows和Linxu系列的PID 管理方式有所不同,windows中进程的PID和句柄没有本质区别,根据句柄索引对象和根据PID或者TID查找进程或者线程的步骤也是一样的. 句柄是针对进程而言,也就是句柄一定所属于某个进程,为某个进程私有的资源.句柄的分配来自于进程私有的句柄表.而进程PID和线程TID和句柄的分配原理是一样的,但是来源就不同了.进程PID来源于系统中一张全局的句柄表PSpcidtable.从级别上来说Pspcidtable和进程对象eprcess中的objecttab

【转】Windows 中不规则窗体的编程实现

一.序言 在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我们常用的,“记事本”,“扫雷”,等等.矩形窗体,具有编程实现简单,风格简洁的优点,所以在普通文档应用程序和简单小游戏中使用足矣.但在某些娱乐游戏程序中使用就略显呆板些了,这时若用不规则窗体替代原先的矩形窗体,将会使这类程序更添情趣.典型的例子有windows 自代的Media Player,新版本的Media Player有个控制面板的选项,选中这些面板,播放器就以选中的面板形状出现,这时的播放器比以前版本

js中window对象详解以及页面跳转

js中window对象详解以及页面跳转 转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%90%9C/39219.shtml 1.window.top.window.location = "index.asp"; 2.window.top.location.href="index.asp" 3. window.top.location.replace("index.asp");

C++中堆对象的构造函数和析构函数逆向分析

实验环境: 操作系统:Windows XP Professional Service Pack 3 集成开发环境:Microsoft Visual C++ 6.0 构建版本:Debug版本 实验代码: 1 #include <stdio.h> 2 3 class People 4 { 5 public: 6 People() { printf("Constructor!\n"); } 7 ~People() { printf("Destructor!\n"

谈windows中的句柄

每当一个进程打开一个对象,系统就返回一个句柄作为凭证,由此可以想到,句柄是依赖于具体的进程的,换句话说,句柄一定属于某个进程,以后在访问这个对象时就要使用这个凭证! 所以句柄还可以认为是一个进程和一个对象之间建立的一种连接,一座桥梁,一个上下文,就像一个门一样,已经打开.这种连接就持续存在,直到关闭. 一个进程可打开对个对象,就会拥有多个句柄,所以每个进程都拥有一个句柄表,在进程控制块EPROCESS中有个指针ObjectTable是_HANDLE_TABLE类型,指向本进程的句柄表! 看下_H

在Windows中实现Java调用DLL(转载)

本文提供调用本地 C 代码的 Java 代码示例,包括传递和返回某些常用的数据类型.本地方法包含在特定于平台的可执行文件中.就本文中的示例而言,本地方法包含在 Windows 32 位动态链接库 (DLL) 中. 不过我要提醒您,对 Java 外部的调用通常不能移植到其他平台上,在 applet 中还可能引发安全异常.实现本地代码将使您的 Java 应用程序无法通过 100% 纯 Java 测试.但是,如果必须执行本地调用,则要考虑几个准则: 将您的所有本地方法都封装在单个类中,这个类调用单个

第二十三篇:Windows中的ACPI

一直不太清楚ACPI驱动在WINDOWS中的作用. 甚至不了解ACPI协议的作用. 于是, 随便翻了下"格蠹汇编"中的第24章, 如何跟踪ACPI代码, 算是对ACPI有了一个初步性的了解. ACPI向OS报告硬件信息, 而OS通过ACPI控制硬件. ACPI就是OS与硬件/固件之间的一个标准接口协议. ACPI通过ASL(ACPI SOURCE LANGUAGE)来描述系统硬件的属性与方法, ASL最终会被编译为AML(ACPI MACHINE LANGUAGE)的字节码(BYTEC

zg手册 之 python2.7.7源码分析(1)-- python中的对象

源代码主要目录结构 Demo: python 的示例程序 Doc: 文档 Grammar: 用BNF的语法定义了Python的全部语法,提供给解析器使用 Include: 头文件,在用c/c++编写扩展模块时使用 Lib: Python自带的标准库,用python编写的 Modules: 用c编写的内建模块的实现,zlib,md5 等 Objects: 内建对象类型的实现 list,dict 等 PC:      windows 平台相关文件 PCbuild: Microsoft Visual