Wywoływanie funkcji SetupWriteTextLogError

SetupWriteTextLogError zapisuje informacje o błędzie specyficznym dla interfejsu SetupAPI lub błędzie Win32 w dzienniku tekstowym SetupAPI. SetupWriteTextLogError zapisuje dwa kolejne wpisy w dzienniku tekstowym: pierwszy wpis zawiera te same informacje w tym samym formacie, co zapisane przez SetupWriteTextLog , a drugi wpis rejestruje odpowiedni kod błędu i przyjazny dla użytkownika opis błędu.

Aby wywołać metodę SetupWriteTextLogError, aplikacja dostarcza te same informacje, które należy podać w celu wywołania elementu SetupWriteTextLog , a ponadto dostarcza wartość błędu specyficznego dla interfejsu SetupAPI lub błędu Win32.

SetupWriteTextLogError zapisuje pierwszy wpis dziennika w następującym formacie:

entry_prefix time_stamp kategoria ****wcięcie sformatowane-komunikat

SetupWriteTextLogError zapisuje drugi wpis dziennika w następującym formacie:

kategoria ** entry_prefix time_stampwcięcia **Error:error-number error-description

Gdzie:

  • Pola entry_prefix, sygnatury czasowej, kategorii, wcięcia i sformatowanego komunikatu są takie same jak te opisane w Formacie treści sekcji dziennika tekstowego.

  • Pole error-number zawiera numer błędu.

  • Pole opis-błędu zawiera przyjazny dla użytkownika opis błędu.

W poniższym przykładzie pokazano, jak aplikacja może zwykle wywoływać błąd SetupWriteTextLogError w celu rejestrowania informacji o błędzie w dzienniku tekstowym. Błąd użyty w przykładzie to błąd uruchomienia systemu. Aplikacja wywołuje metodę SetupWriteTextLogError, podając następujące wartości parametrów:

  • LogToken jest ustawiona na wartość tokenu dziennika, która została uzyskana przez wywołanie setupGetThreadLogToken lub jest jedną z wartości tokenów dziennika zdefiniowanych przez system, które są opisane w tokenach dziennika.

  • Dla kategorii ustawiono wartość TXTLOG_VENDOR, co oznacza, że wpis dziennika jest wprowadzany przez aplikację dostarczaną przez dostawcę. Kategorie zdarzeń opisano w temacie Włączanie kategorii zdarzeń dla dziennika tekstowego.

  • LogFlags jest ustawiony na TXTLOG_ERROR. W tym przykładzie nie ma sygnatury czasowej ani to nie zmienia głębokości wcięcia. Bieżąca głębokość wcięcia została wcześniej ustawiona na pięć spacji tekstu monospace. Aby uzyskać informacje na temat zmiany głębokości wcięcia, zobacz Zapisywanie wcięć wpisów dziennika. Poziomy zdarzeń opisano w temacie Ustawianie poziomu zdarzeń dla dziennika tekstowego.

  • Błąd jest ustawiony na wartość kodu błędu Win32, ERROR_SERVICE_ALREADY_RUNNING. Wartość dziesiętna tego kodu błędu to 1056.

  • Właściwość MessageStr jest ustawiona na TEXT("Uruchomienie usługi: Nie udało się uruchomić usługi 'SomeService'").

  • Nie podano listy parametrów rozdzielanych przecinkami.

Parametry LogToken, Category i LogFlags wpływają na działanie SetupWriteTextLogError w taki sam sposób, jak te parametry wpływają na działanie SetupWriteTextLog.

Poniższy kod wywołuje metodę SetupWriteTextLogError , aby zapisać wpis dziennika w tym przykładzie:

//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'"),);

Jeśli kategoria zdarzeń TXTLOG_VENDOR jest włączona, a poziom zdarzeń TXTLOG_ERROR jest ustawiony dla dziennika tekstowego, ten kod utworzy wpis w dzienniku tekstowym, który będzie sformatowany w następujący sposób:

!!!     :  Start Service: Failed to start service 'SomeService' 
!!!   :  Error 1056: An instance of the service is already running.

Należy pamiętać, że błąd SetupWriteTextLogError zawiera ciąg "Wystąpienie usługi jest już uruchomione"." w celu opisania błędu Win32, którego wartość to 1056.