读书人

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

发布时间: 2012-08-03 00:12:14 作者: rapoo

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攻击。

?

读书人网 >编程

热点推荐