关于Windows核心编程中的内核对象
来源:互联网 发布:财富赢家炒股票软件 编辑:程序博客网 时间:2024/05/27 16:43
对内核对象的理解。
何为内核对象:
访问令牌对象,事件对象,文件对象,文件映射对象,I/O 完成端口对象,作业对象,邮件槽(mailslot)对象,互斥量对象(mutex),管道(pipe)对象,进程对象,信 号量(semaphore)对象,线程对象,可等待的计时器(waitable timer)对象,以及线程池工厂(thread pool worker factory)对象等。
我们可以利用 WinObj工具可以查看内核对像类型的类表。
内核对象用于管理进程线程和文件。
每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核访问。这个内存块是一个数据结构,其成员维护者与对象相关的信息。
对于进程对象有一个进程ID,一个基本的优先级和一个退出代码;而文件对象有一个字节偏移量,一个共享模式和一个打开模式。
因为内核对象的数据结构只能有操作系统内核来访问,所以应用程序不能在内存中定位这些数据结构并直接更改内容。
为了让操作系统知道我们要对哪个内核对象进行操作,我们需要将这个句柄传给各种Windows函数。
介绍3中机制,来实现多个进程成功共享同一个内核对象。
1.使用计数.: 操作系统内核知道当前有多少个进程正在使用一个特定的内核对象。
2.内核对象的安全性
内核对象可以用一个安全描述符(Security descriptor, SD)来保护。 安全描述符描述了谁拥有对象; 哪些组和用户被允许访问或使用此对象。
typedef struct _SECURITY_ATTRIBUTES {
DWORD nLength;
LPVOID lpSecurityDescriptor;
BOOL bInheritHandle;
} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
如果想对我们创建的内核对象加以访问限制,就必须创建一个安全描述符。
初始化它
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof sa;
sa.lpSecurityDescriptor = &sd_wideopen;
sa.bInheritHable = FALSE;
HANDLE m_hMutexHandle = ::CreateMutex(& sa, FALSE, "7k7k_LH_FlashTips_2010-10-26");
- 关于Windows核心编程中的内核对象
- windows核心编程--内核对象
- windows核心编程--内核对象
- Windows核心编程:内核对象
- windows核心编程--内核对象
- 内核对象 《Windows核心编程》
- Windows核心编程 内核对象
- Windows核心编程:内核对象
- windows核心编程---内核对象
- 【Windows 核心编程】Windows 核心编程 -- 内核对象
- 《windows核心编程》学习笔记 内核对象
- WINDOWS核心编程--第二章内核对象
- windows核心编程第三章--内核对象
- windows核心编程<读书笔记三>内核对象
- WINDOWS核心编程学习1------内核对象
- windows核心编程心解--内核对象
- Windows核心编程笔记---内核对象
- Windows-核心编程-03-什么是内核对象
- 又见DLL
- 【MSSql2000】sql分页
- [VIEW]成績龍虎榜(Ranking List),排序算法 with PHP
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 【MSSql2000】触发器
- 关于Windows核心编程中的内核对象
- 【MSSql2000】数据连接
- 传输综合网管后台整体架构
- 【MSSql2000】select
- C语言学习笔记(22结构体综合应用学生信息管理)
- 【MSSql2000】游标
- 1251 trie树(返回前缀数)(我对find函数进行啦修改)
- 【Validation】正则表达式
- DM8168评估板上供电电源的设计