文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Windows编程 - 03 - Kernel Objects

Windows编程 - 03 - Kernel Objects

时间:2010-09-10  来源:小风_ks

1. 什么是Kernel Object
以下都是Kernel Object, 
access token objects,
event objects,
file objects,
file-mapping objects,
I/O completion port objects,
job objects,
mailslot objects,
mutex objects,
pipe objects,
process objects,
semaphore objects,
thread  objects,
waitable timer objects,
thread pool worker factory objects


Kernel Object 只能由Kernel维护, 但是Windows给我们提供了一些函数。
Kernel Object Handle 通常是32bits value, 在64bits系统上, Handle value 是64bits value

Handle Value和处理器相关, 如果要在处理器之间共享Kernel Object Handle需要一些额外处理,后面讨论

 

1.1 usage count
Kernel Object handle由内核管理,而非进程,进程创建Kernel object, 进程结束时, Kernel object未必同时销毁。内核通过 Kernel Object usage count管理Kernel Object


1.2 Security
SECURITY_ATTRIBUTES 结构管理Security
每一个创建kernelObject的函数都有一个SECURITY_ATTRIBUTES 参数

typedef struct _SECURITY_ATTRIBUTES {
   DWORD nLength;
   LPVOID lpSecurityDescriptor;
   BOOL bInheritHandle;
} SECURITY_ATTRIBUTES;


2. 进程的 Kernel Object Handler表
The details of how the handle table is structured and managed are undocumented.
MS没有提供这方面的说明文档,下面这些只是猜想,

handle表有3项内容组成
  pointer to a kernel object
  an access mask
  some flags


3. 进程间共享KernelObject
Kernel Object Handle被设计成和处理器相关的原因
(1) Robustness
(2) Security

下面介绍3种共享KernelObjectHandle的方法:

  using object handle inheritance

  naming objects

  duplicating object handles

 

3.1 using object handle inheritance
通过设置    _SECURITY_ATTRIBUTES->bInheritHandle 实现
typedef struct _SECURITY_ATTRIBUTES {
   DWORD nLength;
   LPVOID lpSecurityDescriptor;
   BOOL bInheritHandle;
} SECURITY_ATTRIBUTES;


3.2 naming objects

??


3.3 Duplicating Object Handles
BOOL DuplicateHandle(
   HANDLE hSourceProcessHandle,
   HANDLE hSourceHandle,
   HANDLE hTargetProcessHandle,
   PHANDLE phTargetHandle,
   DWORD dwDesiredAccess,
   BOOL bInheritHandle,
   DWORD dwOptions);
??

 

2个工具:

1)Sysinternal WinObj, 可以查看所有Kernel Object类型(ObjectType选项)

下载地址:http://technet.microsoft.com/en-us/sysinternals/bb896657.aspx

 

2) Process Explorer

下载地址:http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

 

参考:

Windows via C/C++, Fifth Edition,  Jeffrey Richter, Christophe Nasarre

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载