首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

WINDOWS核心编程——内查对象(续)

2012-08-03 
WINDOWS核心编程——内核对象(续)上篇讲到通过DuplicateHandle共享内核对象的用法。下面先讲讲DuplicateHandl

WINDOWS核心编程——内核对象(续)

上篇讲到通过DuplicateHandle共享内核对象的用法。下面先讲讲DuplicateHandle另一种用法:

假设一个进程对一个文件映射对象拥有读写权限。在程序的某个位置,调用一个函数,并希望它对文件只有读权限。应该使用DuplicateHandle为现有的对象创建一个新的只有读权限的句柄。然后把这个句柄传给该函数,而不是用原来的句柄。

//通过ProcessIdToSessionId获得该进程所在的终端会话。DWORD processID = GetCurrentProcessId();DWORD sessionID;if(ProcessIdToSessionId(processID, &sessioId)){   tprintf(TEXT("^^^^^^^"));}else{  //.............}//显示的将内核对象创建在全局命名空间中。HANDLE h = CreateEvent(NULL,FALSE, FALSE,TEXT("Global\\MyName"));//显示的将内核对象创建在当前会话的命名空间中。HANDLE h = CreateEvent(NULL,FALSE, FALSE,TEXT("Local\\MyName"));
?

对于一般的内核对象,我们最好应该模仿上面的方式,创建自己专有的命名空间,从而防止恶意程序的Dos攻击。

?

热点排行