调用 SetupWriteTextLogError
SetupWriteTextLogError 将有关 SetupAPI 特定错误或 Win32 错误的信息写入 SetupAPI 文本日志。 SetupWriteTextLogError 将两个连续条目写入文本日志:第一个条目包含与 SetupWriteTextLog 写入的格式相同的信息,第二个条目记录相应的错误代码和错误的用户友好说明。
若要调用 SetupWriteTextLogError,应用程序会提供与调用 SetupWriteTextLog 相同的信息,此外,还会提供特定于 SetupAPI 的错误或 Win32 错误的值。
SetupWriteTextLogError 以以下格式写入第一个日志条目:
entry_prefix time_stamp类别 ****缩进 formatted-message
SetupWriteTextLogError 以以下格式写入第二个日志条目:
entry_prefix time_stamp类别 **indentation **Error:error-number error-description
其中:
entry_prefix、时间戳、类别、缩进和格式化消息字段与文本日志节正文的格式中所述的字段相同。
错误号字段包含错误号。
错误说明字段包含错误的用户友好说明。
以下示例演示应用程序通常如何调用 SetupWriteTextLogError 来记录文本日志中有关错误的信息。 此示例中使用的错误是系统启动错误。 应用程序调用 SetupWriteTextLogError,并提供以下参数值:
LogToken 设置为通过调用 SetupGetThreadLogToken 获取的日志令牌值,或者是 日志令牌中描述的系统定义的日志令牌值之一。
类别 设置为 TXTLOG_VENDOR,表示日志条目由供应商提供的应用程序创建。 为文本日志启用事件类别中介绍了事件类别。
LogFlags 设置为 TXTLOG_ERROR。 此示例不包括时间戳或更改缩进深度。 当前缩进深度以前设置为五个单空间文本空间。 有关如何更改缩进深度的信息,请参阅 编写缩进日志条目。 设置文本日志的事件级别中介绍了事件级别。
错误 设置为 Win32 错误代码的值,ERROR_SERVICE_ALREADY_RUNNING。 此错误代码的十进制值为 1056。
MessageStr 设置为 TEXT (“启动服务: 无法启动服务'SomeService'”) 。
不提供逗号分隔的参数列表。
LogToken、Category 和 LogFlags 参数影响 SetupWriteTextLogError 操作的方式与这些参数影响 SetupWriteTextLog 操作的方式相同。
以下代码调用 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 提供字符串“服务实例已在运行”。以描述 Win32 错误,其值为 1056。