1. 程式人生 > >那些年犯過的錯

那些年犯過的錯

blog 問題 加載 導致 class oid 代碼 clas 函數

  今天模擬讀寫內存函數時,遇到了個很奇葩的問題,添加了新的函數後,驅動居然安裝失敗,當時我第一反應就是我的函數中使用了XP沒有的函數,結果回去重新開的時候,都是些常規的函數,老辦法,一分為二排除法,最後發現是這個代碼的問題

  PVOID PoolArea;

  LONGLONG Stack[512];

  PoolArea = ( PVOID )&Stack[0];

  但是這個賦值也只是普通的賦值,而且就算Stack地址處的內存不能訪問,也應該是運行中出錯,不應該是驅動安裝失敗啊,然後我嘗試調整Stack,將其大小降低,發現驅動居然又安裝成功了,後來我去看了VS對這個函數的堆棧保留大小,發現是1M,而我Stack本身就占用了1M,再加上其他的變量,已經超過1M了,原來這才是導致驅動安裝失敗的原因,既然知道哪裏的問題了,接下來就好辦了,調整堆棧保留大小為2M 其默認單位是k,需要輸入2097152(2048*1024 = 2097152),OK 驅動成功加載了

那些年犯過的錯