摘要: 在win32内核程序开发中,我们常常需要取得某进程的pid或句柄,或者需要检索进程的eprocess结构,很多API函数需要的参数也不同,所以掌握pidhandleeprocess相互转换的方法会大大提高我们的开发效率。以下就是我自己在实际开发中总结出来的转换方法,在此记录下来,以供需要的朋友参考。... 阅读全文
posted @ 2015-01-22 16:09 银河彼岸 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 在驱动程序中常常需要与用户层程序进行同步,但是由于ring0与ring3之间的天然壁障,导致它们不能使用通常的方法。比如在用户层CreateEvent得到的句柄无法在内核之中使用。然而EVENT对象生来就是为了进行同步使用的,只不过要想在内核层和用户层之间共享同一个EVENT对象的话,需要一点小小的... 阅读全文
posted @ 2015-01-22 16:00 银河彼岸 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 如果在自己的程序中,即包含ntddk.h和ntifs.h的时候,编译的时候会出现如下编译错误:7600.16385.0\inc\ddk\ntifs.h(85) : error C2371: 'PEPROCESS' : redefinition; different basic types,7600.... 阅读全文
posted @ 2015-01-22 13:29 银河彼岸 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 使用CTL_CODE宏定义来定义一个控制码:#define MY_PORT CTL_CODE(\ FILE_DEVICE_UNKNOWN, \ 0x801, \ METHOD_OUT_DIRECT, \ FILE_ANY_ACCESS)//向内核传递一个用户的等待事件#def... 阅读全文
posted @ 2015-01-19 23:01 银河彼岸 阅读(693) 评论(0) 推荐(0) 编辑
摘要: 使用CTL_CODE宏定义来定义一个控制码:#define MY_PORT CTL_CODE(\ FILE_DEVICE_UNKNOWN, \ 0x801, \ METHOD_BUFFERED, \ FILE_ANY_ACCESS)//向内核传递一个用户的等待事件#defin... 阅读全文
posted @ 2015-01-19 22:40 银河彼岸 阅读(1043) 评论(0) 推荐(0) 编辑
摘要: 最近在学习驱动编程,因为大部分程序在Ring0层获得信息后,都要传递到Ring3层,将从内核获得的信息交由用户层处理。所以了解Ring3层与Ring0层的通信就显得至关重要了。下面简单介绍Ring3层与Ring0层的通信。首先要了解IRP,开发一个驱动可能要处理各种各样的IRP。应用层为了和驱动通信... 阅读全文
posted @ 2015-01-19 18:15 银河彼岸 阅读(659) 评论(0) 推荐(0) 编辑
摘要: 为了支持Unicode编码,需要多字节与宽字节之间的相互转换。这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《Windows核心编程》,总结出正确的用法。WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。MultiByteToWid... 阅读全文
posted @ 2015-01-07 23:07 银河彼岸 阅读(180) 评论(0) 推荐(0) 编辑
摘要: error:1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义1>uafxcwd.lib(... 阅读全文
posted @ 2015-01-07 22:06 银河彼岸 阅读(1723) 评论(0) 推荐(0) 编辑
摘要: LARGE_INTEGER tima,timb;QueryPerformanceCounter(&tima);在 Windows Server 2003 和 WindowsXP 中使用 QueryPerformanceCounter 函数的程序可能执行不当QueryPerformanceCounte... 阅读全文
posted @ 2015-01-07 21:50 银河彼岸 阅读(309) 评论(0) 推荐(0) 编辑