Ale*_*aev 1 windows printf driver stdio
我想在驱动程序代码(DDK)中使用"printf",因此我已经包含了stdio.h.但是编译器说:
error LNK2001: unresolved external symbol __imp__printf
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我在某个地方看到这是不可能的 - 但那太糟糕了 - 我无法相信.为什么我不能在内核代码中使用标准C例程?
Windows内核仅支持部分标准C运行时.特别是,不支持高级功能 - 如文件流,控制台I/O和网络.相反,您需要使用本机内核API来实现类似功能.
stdio.h包含在WDK中的原因是因为为了方便起见,提供了C运行库的某些部分.例如,您可以使用memcmp(尽管本机RtlCompareMemory是首选).微软没有通过CRT标题选择#ifdef中内核模式中不可用的零碎.一旦你开发了一些编写内核驱动程序的经验,你就可以了解内核中的可能性,以及可能无法工作的内容.
要解决您的高级问题:您可能正在寻找一些调试/日志记录机制.你真的有两个选择:
DbgPrintEx是最容易使用的.它基本上是printf的一个插件(尽管在运行> = DISPATCH_LEVEL时需要注意某些类型的字符串插入).输出转到调试器,或者,如果您愿意,也转到DbgView.Print("My IP address is: %!IPV4!", ip);),并且它非常快(Microsoft在大多数Windows组件的非调试版本中发布WPP跟踪).| 归档时间: |
|
| 查看次数: |
2071 次 |
| 最近记录: |