我试图在 64 位 win7 (amd64) 上运行一些为 32 位 vista (x86) 编码的驱动程序,但它没有运行。经过大量的调试和反复试验,我让它在后者上工作,但我不知道它工作的原因。这就是我所做的:
在许多地方,缓冲区指针指向一个结构数组(在不同的地方不同),为了增加它们,在某些地方使用了这种类型的语句:
ptr = (PVOID)((PCHAR)ptr + offset);
在某些地方:
ptr = (PVOID)((ULONG)ptr + offset);
第二个是退回垃圾,所以我把它们都换成了第一个。但是我在第二个之后在网上找到了许多示例驱动程序。我的问题:
- 这些宏在哪里定义(谷歌没有多大帮助)?
- 我知道所有 P_ 宏都是指针,为什么将指针转换为 ULONG?这在 32 位上如何工作?
- PCHAR 显然会根据环境改变宽度。你知道有什么地方可以找到这方面的文件吗?