SetupWriteTextLogError 将有关 SetupAPI 特定错误或 Win32 错误的信息写入 SetupAPI 文本日志。 SetupWriteTextLogError 将两个连续条目写入文本日志:第一个条目包含与 SetupWriteTextLog 写入的信息相同且格式也相同的信息,第二个条目记录相应的错误代码和错误的用户友好说明。
若要调用 SetupWriteTextLogError,应用程序将提供用于调用 SetupWriteTextLog 的相同信息,此外,还提供特定于 SetupAPI 的错误或 Win32 错误的值。
SetupWriteTextLogError 采用以下格式写入第一个日志条目:
entry_prefix time_stamp category **** 缩进格式消息
SetupWriteTextLogError 采用以下格式写入第二个日志条目:
entry_prefix time_stamp category **indentation **Error:error-number error-description
Where:
entry_prefix、时间戳、类别、缩进和格式化消息字段与文本日志节正文格式中描述的字段相同。
错误编号字段包含错误号。
错误说明字段包含该错误的用户友好说明。
以下示例演示应用程序通常如何调用 SetupWriteTextLogError 来记录有关文本日志中错误的信息。 此示例中使用的错误是系统启动错误。 应用程序调用 SetupWriteTextLogError,提供以下参数值:
LogToken 设置为一个日志令牌值,该值是通过调用 SetupGetThreadLogToken 获取的,或者是 日志令牌中描述的系统定义的日志令牌值之一。
类别 设置为TXTLOG_VENDOR,指示日志条目是由供应商提供的应用程序创建的。 事件类别在 为文本日志启用事件类别 中进行了说明。
LogFlags 设置为TXTLOG_ERROR。 此示例不包括时间戳,也不会更改缩进深度。 当前缩进深度之前设为五个等宽字体空格。 有关如何更改缩进深度的信息,请参阅 编写缩进日志条目。 事件级别在设置文本日志的事件级别中进行了说明。
错误 被设置为 Win32 错误代码 ERROR_SERVICE_ALREADY_RUNNING 的值。 此错误代码的十进制值为 1056。
MessageStr 被设置为 TEXT("启动服务:无法启动服务 'SomeService'")。
未提供逗号分隔的参数列表。
参数 LogToken、Category 和 LogFlags 以与这些参数影响 SetupWriteTextLog 的方式相同的方式影响 SetupWriteTextLogError 的运行方式。
以下代码调用 SetupWriteTextLogError 来编写此示例的日志条目:
//The LogToken value was previously returned by call to
//SetupGetThreadLogToken or one of the system-defined log token values
DWORD Category = TXTLOG_VENDOR;
DWORD Flags = TXTLOG_ERROR ;
DWORD ErrorCode = 1056; // The corresponding Win32 error code
SetupWriteTextLog(LogToken, Category, Flags, ErrorCode, TEXT("Start Service: Failed to start service 'SomeService'"),);
如果启用了TXTLOG_VENDOR事件类别,并且为文本日志设置了TXTLOG_ERROR事件级别,则此代码将在文本日志中创建一个条目,格式如下:
!!! : Start Service: Failed to start service 'SomeService'
!!! : Error 1056: An instance of the service is already running.
请注意,SetupWriteTextLogError 提供字符串“服务的一个实例已在运行。”用于描述值为 1056 的 Win32 错误。