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