(七)、宏与断言
一、宏
KdPrint是DbgPrint的宏
设置预处理到文件
重新生成后打开下面的.i文件即可
这既是去宏后的代码
二、断言(ASSERT)
ASSERT也是一个比较复杂的宏
我们测试一下他的作用
代码
#include <ntddk.h> VOID Unload(PDRIVER_OBJECT driver) { DbgPrint("Driver Unload\n"); } NTSTATUS DriverEntry(PDRIVER_OBJECT driver) { DbgPrint("Driver Load\n"); KdPrint(("驱动测试\n")); ASSERT(0); DbgPrint("断言"); driver->DriverUnload = Unload; return STATUS_SUCCESS; }
当ASSERT内的参数为0时,可以输出断言的位置,可以用于调试
ASSERT只能用在Debug模式下,如果是其他模式,他的宏定义相当于NULL
当然,ASSERT也可以用在用户层,但是需要#include 头文件,并且使用的时候需要小写