我試圖在64位win7(amd64)上運行一些編碼爲32位vista(x86)的驅動程序,但它並未運行。經過大量的調試和試用後,我開始研究後者,但我不知道它的工作原因。這是我做過什麼:指針遞增差異黑白32位和64位
在很多地方,緩衝區指針指向的結構(在不同的地方不同)的陣列,並增加他們在一些地方使用了這種類型的語句:
ptr = (PVOID)((PCHAR)ptr + offset);
而在一些地方:
ptr = (PVOID)((ULONG)ptr + offset);
第二屆一個返航垃圾,所以我把它們全部改爲一日一。但是在第二個之後,我在網上發現了很多示例驅動程序。我的問題:
- 這些宏 在哪裏定義(谷歌沒有幫助太多)?
- 我明白所有的P_宏都是 指針,爲什麼指針 要ULONG?這是如何工作在32位的 ?
- PCHAR根據環境明顯改變寬度 。你知道有什麼地方可以找到這方面的文件嗎?
重新閱讀您的問題,我注意到它正在投射ULONG而不是ULONG *,所以我在回答的頂部添加了部分,我認爲這是最重要的部分。其餘的只是背景信息。 – 2010-11-25 14:05:51