Windows內核僅支持部分標準C運行時。特別是,不支持像文件流,控制檯I/O和網絡—這樣的高級功能—。相反,您需要使用本機內核API來實現類似的功能。
stdio.h包含在WDK中的原因是因爲C運行庫的某些部分是爲了您的方便而提供的。例如,您可以使用memcmp
(儘管本機RtlCompareMemory
是首選)。微軟還沒有選擇通過CRT頭來#ifdef出內核模式下不可用的零碎。一旦你開發了編寫內核驅動程序的一些經驗,你就會得到內核中可能的東西,以及可能無法工作的東西。
爲了解決您的高級問題:您可能正在尋找一些調試/日誌記錄機制。你真的有兩個選擇:
DbgPrintEx
是最容易使用。它基本上是printf的一個插件(儘管在運行> = DISPATCH_LEVEL時需要注意某些類型的字符串插入)。輸出到調試器,或者,如果您願意,可以到DbgView。
- WPP是工業強度的選擇。最初的學習曲線非常陡峭(儘管WDK中有樣本)。但是,它非常靈活(例如,您可以創建自己的尖叫,如
Print("My IP address is: %!IPV4!", ip);
),並且速度非常快(Microsoft在大多數Windows組件的非調試版本中發佈了WPP跟蹤)。
你不在堪薩斯了,內核驅動程序沒有控制檯。你可以使用KdPrintf(),輸出到調試器。 – 2011-06-09 23:24:10