生成基本的 v4 打印机驱动程序-CustomWppCommands.cpp
- CustomWppCommands.cpp
//
// File Name:
//
// CustomWppCommands.cpp
//
// Abstract:
//
// Custom WPP Tracing functions.
//
#include "precomp.h"
#include "WppTrace.h"
#include "CustomWppCommands.tmh"
namespace MyV4PrintDriver_Render_Filter
{
void TraceFailedHRESULT(
HRESULT hr,
char const *fileName,
int lineNum,
wchar_t const *extraText
)
{
DoTraceMessage(
RENDERFILTER_TRACE_ERROR,
"Failed HRESULT (%!HRESULT!) at %s:%d (%S)",
hr,
fileName,
lineNum,
extraText
);
}
} // namespace MyV4PrintDriver_Render_Filter
- 文件头部
文件说明,明确这是一个实现自定义WPP tracing功能的源码文件。WPP tracing是Windows驱动开发常用的日志和调试机制 - 头文件引用
precomp.h
:预编译头文件,通常包含一些常用的系统/WDK头。
WppTrace.h
:本项目的WPP tracing封装接口。
CustomWppCommands.tmh
:WPP编译器自动生成的trace message header,配合DoTraceMessage
使用。 - 命名空间
把函数限定在自定义命名空间,这里很明显是V4打印机驱动的渲染过滤器(Render Filter)相关的模块。 - 核心函数
TraceFailedHRESULT
void TraceFailedHRESULT(
HRESULT hr,
char const *fileName,
int lineNum,
wchar_t const *extraText
)
参数:
HRESULT hr
:Windows API/COM 风格的返回码,表示函数执行结果(S_OK 成功,其它为错误)。
fileName
:出错的源文件名。
lineNum
:出错的行号。
extraText
:额外的文本说明(Unicode 字符串)。
这个函数的作用:在驱动中输出失败的HRESULT错误信息。
- 日志实现
DoTraceMessage(
RENDERFILTER_TRACE_ERROR,
"Failed HRESULT (%!HRESULT!) at %s:%d (%S)",
hr,
fileName,
lineNum,
extraText
);
DoTraceMessage(...)
:WPP tracing 提供的宏,用于写日志。
RENDERFILTER_TRACE_ERROR
:日志类别(这里是错误级别)。
格式化字符串:
%!HRESULT!
:WPP特有的格式化输出,会把hr
转换为HRESULT错误码的名字和数值。
%s:%d
:打印出错的文件名和行号。
%S
:输出一个Unicode宽字符串(即extraText
)。
示例输出:
Failed HRESULT (E_FAIL: 0x80004005) at RenderFilter.cpp:120 (InitPipeline failed)
- 总结
这段程序的作用是:
封装一个专门用于HRESULT错误日志输出的函数,让驱动开发者能快速定位失败位置和原因。
使用WPP tracing,日志会输出到Windows Event Tracing系统,方便后续调试/诊断。
带上文件名 + 行号 + 自定义提示文本,便于快速查错。
原始资料地址:
生成基本的 v4 打印机驱动程序
如有侵权联系删除 仅供学习交流使用