(七)、宏与断言

一、宏

0
 
KdPrint是DbgPrint的宏
 
设置预处理到文件
 
0
 
重新生成后打开下面的.i文件即可
0
 
0
这既是去宏后的代码

二、断言(ASSERT)

ASSERT也是一个比较复杂的宏
0
 
我们测试一下他的作用
代码
#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;
}
 
0
当ASSERT内的参数为0时,可以输出断言的位置,可以用于调试
ASSERT只能用在Debug模式下,如果是其他模式,他的宏定义相当于NULL
0
 
当然,ASSERT也可以用在用户层,但是需要#include 头文件,并且使用的时候需要小写
 
posted @ 2022-04-03 23:23  TLSN  阅读(39)  评论(0编辑  收藏  举报