调用 SetupWriteTextLogError

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 错误。