不知道標題是否正確,但我相信問題在那裏。我有這段代碼:指針算法
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