Вызов функции SetupWriteTextLogError

SetupWriteTextLogError записывает сведения об ошибке setupAPI или ошибке Win32 в текстовый журнал SetupAPI. SetupWriteTextLogError записывает две последовательные записи в текстовый журнал: первая запись содержит те же сведения в том же формате, что и записываемые функцией SetupWriteTextLog, а вторая запись регистрирует соответствующий код ошибки и понятное описание ошибки.

Чтобы вызвать SetupWriteTextLogError, приложение предоставляет те же сведения, что и для вызова SetupWriteTextLog , а также предоставляет значение ошибки SetupAPI или ошибки Win32.

SetupWriteTextLogError записывает первую запись журнала в следующем формате:

entry_prefix time_stamp категория ****отступ форматированное сообщение

SetupWriteTextLogError записывает вторую запись журнала в следующем формате:

entry_prefix time_stamp category **отступ **Ошибка:error-number error-description

Where:

  • Поля entry_prefix, time-stamp, category, indentation и formatted-message совпадают с полями, описанными в разделе Формат тела раздела текстового журнала.

  • Поле error-number содержит номер ошибки.

  • Поле error-description содержит понятное описание ошибки.

В следующем примере показано, как приложение обычно вызывает SetupWriteTextLogError для регистрации сведений об ошибке в текстовом журнале. Ошибка, используемая в примере, является ошибкой старта системы. Приложение вызывает SetupWriteTextLogError, предоставляя следующие значения параметров:

  • LogToken имеет значение маркера журнала, которое либо было получено путем вызова SetupGetThreadLogToken, либо является одним из определенных системой значений маркера журнала, описанных в токенах журнала.

  • Категория имеет значение TXTLOG_VENDOR, указывающее, что запись журнала выполняется приложением, предоставленным поставщиком. Категории событий описаны в разделе «Включение категорий событий для текстового журнала».

  • LogFlags имеет значение TXTLOG_ERROR. Этот пример не включает метку времени или не изменяет глубину отступа. Текущая глубина отступа ранее была задана как пять моноширинных пробелов. Сведения о том, как изменить глубину отступа, см. в разделе Создание записей журнала с отступами. Уровни событий описаны в разделе "Настройка уровня событий для текстового журнала".

  • Ошибка устанавливается равной значению кода ошибки Win32 ERROR_SERVICE_ALREADY_RUNNING. Десятичное значение этого кода ошибки равно 1056.

  • MessageStr имеет значение TEXT("Start Service: Failed to start service '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.