不知道标题是否正确,但我相信问题在那里。我有这段代码:指针算法
FILE_DIRECTORY_INFORMATION *Buffer;
Buffer = ExAllocatePoolWithTag (NonPagedPool, 4096, 'arK');
..<fill in data into the buffer>..
//Values here are: Buffer:0x81490000; NextEntryOffset:0x48
Buffer += Buffer->NextEntryOffset;
//Values here are: Buffer:0x81491440; NextEntryOffset:0x0
问题是,代替简单的添加,最后的代码行执行乘法。新的Buffer值应该是(或者至少我希望它是:) 81490048,但是是81491440(81490000 + 48 * 48)。任何人都能解释我为什么?
PS:我使用Windbg检查了所有的值。使用VS11编译,最后的代码行真的被翻译成imul指令。
明白了,所以基本上我只需要把它看作一个数字。投到char *做了诡计(最初我想BYTE,但它没有在我的头文件中定义)。驱动程序现在工作正常,该死的羞耻我没有发现这个时候编写用户模式的应用程序:)谢谢。 – Kra