Udostępnij przez


Korzystanie z usługi WER

Począwszy od systemu Windows Vista, system Windows zapewnia domyślnie awarie, brak odpowiedzi i raportowanie błędów jądra bez konieczności wprowadzania zmian w aplikacji. Raport będzie zawierać informacje o minidumpie i zrzutie stert, jeśli jest to wymagane. Zamiast tego aplikacje używają interfejsu API usługi WER do wysyłania raportów dotyczących problemów specyficznych dla aplikacji do firmy Microsoft.

Ponieważ system Windows automatycznie zgłasza nieobsługiwane wyjątki, aplikacja nie powinna obsługiwać wyjątków krytycznych. Jeśli proces jest zawodzący lub nieodpowiadający, usługa WER wyświetla interfejs użytkownika informujący o problemie. Aplikacja jest uznawana za nieodpowiadaną, jeśli nie odpowiada na komunikaty systemu Windows przez pięć sekund, gdy użytkownik próbuje wchodzić w interakcję z aplikacją.

Przepływ raportu błędów systemu Windows dotyczący awarii, braku odpowiedzi i błędów jądra

Poniżej przedstawiono kroki, które występują w przypadku awarii aplikacji, braku odpowiedzi lub błędu jądra.

  1. Wystąpiło zdarzenie problematyczne.
  2. System operacyjny wywołuje WER.
  3. Usługa WER zbiera dane, tworzy raport i monituje użytkownika o zgodę (w razie potrzeby).
  4. Usługa WER wysyła raport do firmy Microsoft (Watson Server), jeśli użytkownik wyraził zgodę.
  5. Jeśli serwer Watson żąda dodatkowych danych, usługa WER zbiera dane i monituje użytkownika o zgodę (w razie potrzeby).
  6. Jeśli aplikacja została zarejestrowana do odzyskiwania i ponownego uruchomienia, usługa WER wykonuje zarejestrowane funkcje wywołania zwrotnego, gdy dane są kompresowane i wysyłane do firmy Microsoft (jeśli użytkownik wyraził zgodę).
  7. Jeśli odpowiedź na problem jest dostępna od firmy Microsoft, użytkownik zostanie powiadomiony.

Aplikacje mogą używać następujących funkcji, aby dostosować zawartość raportu wysyłanego do firmy Microsoft. Funkcje rejestracji informują usługę WER o dołączeniu określonych plików i bloków pamięci do utworzonego raportu o błędach.

Przepływ raportowania błędów systemu Windows na potrzeby ogólnego raportowania zdarzeń

W poniższych krokach pokazano, jak aplikacje mogą uzyskać raport o niekrytycznym błędzie.

  1. Wydarzenie niegroźne ma miejsce.
  2. Aplikacja rozpoznaje zdarzenie i używa następującej sekwencji wywołań funkcji do wygenerowania raportu.
    1. Wywołaj funkcję WerReportCreate , aby utworzyć raport.
    2. Wywołaj funkcję WerReportSetParameter , aby ustawić parametry raportu.
    3. Wywołaj funkcję WerReportAddFile, aby dodać pliki do raportu.
    4. Wywołaj funkcję WerReportAddDump , aby dodać minidump do raportu (w razie potrzeby).
    5. Wywołaj funkcję WerReportSubmit , aby wysłać raport.
    6. Wywołaj obiekt WerReportCloseHandle , aby zwolnić zasoby.
  3. W zależności od określonych opcji używanych podczas wywoływania funkcji w kroku 2 usługa WER zakończy raportowanie błędów. Usługa WER zapewni, że raportowanie jest wykonywane zgodnie z zasadami ustawionymi przez użytkownika. Na przykład usługa WER wyśle raport do firmy Microsoft, umieści raport w kolejce i wyświetli użytkownikowi odpowiednie interfejsy użytkownika.

Wykluczanie aplikacji z raportowania błędów systemu Windows

Aby wykluczyć aplikację z raportowania błędów systemu Windows, użyj funkcji WerAddExcludedApplication . Aby przywrócić raportowanie błędów dla aplikacji, użyj funkcji WerRemoveExcludedApplication .

Automatyczne odzyskiwanie danych i ponowne uruchamianie uszkodzonej aplikacji

Aplikacja może używać funkcji Odzyskiwania aplikacji i ponownego uruchamiania, aby zapisać dane i informacje o stanie przed zamknięciem aplikacji z powodu nieobsługiwanego wyjątku lub gdy aplikacja przestanie odpowiadać. Aplikacja jest również ponownie uruchamiana, jeśli jest to wymagane. Aby uzyskać szczegółowe informacje, zobacz Odzyskiwanie aplikacji i ponowne uruchamianie.

Starszy interfejs API

Aplikacja może zgłosić błąd, wywołując funkcję ReportFault . Nie należy jednak używać funkcji ReportFault , chyba że istnieje bardzo szczególne wymaganie, że domyślne zachowanie raportowania błędów systemu operacyjnego nie może zostać spełnione.

Jeśli raportowanie błędów jest włączone, system wyświetli użytkownikowi okno dialogowe wskazujące, że aplikacja napotkała problem i zostanie zamknięta. Jeśli w kluczu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug skonfigurowano debuger, użytkownik otrzymuje opcję uruchomienia debugera. Użytkownik ma również możliwość wysłania raportu do firmy Microsoft. Jeśli użytkownik wyśle raport, system wyświetli kolejne okno dialogowe z podziękowaniem użytkownikowi za raport i podanie linku do dodatkowych informacji.

System raportowania błędów obsługuje następujące tryby operacji.

Tryb operacji Opis
Raportowanie pamięci udostępnionej Jeśli kontekst zabezpieczeń aplikacji jest taki sam jak kontekst zabezpieczeń zalogowanego użytkownika, system raportowania błędów używa bloku pamięci udostępnionej do komunikacji. Tryb ten nie może być używany razem z trybem raportowania manifestu.
Raportowanie manifestów Jeśli kontekst zabezpieczeń aplikacji nie jest taki sam jak kontekst zabezpieczeń zalogowanego użytkownika, system raportowania błędów używa pliku do komunikacji. Ten tryb jest również używany do raportowania nieodpowiadujących aplikacji i błędów jądra. Tego trybu nie można używać z trybem raportowania pamięci udostępnionej.
Raportowanie internetowe System raportowania błędów wysyła wszystkie dane do firmy Microsoft za pośrednictwem Internetu. Jest to domyślny tryb operacji. Nie można jej używać w trybie raportowania firmowego. Ten tryb jest używany, gdy nie ma ścieżki przesyłania firmowej określonej przez administratora.
Raportowanie firmowe System raportowania błędów wysyła wszystkie dane do udostępniania plików, zamiast przekazywać je bezpośrednio do firmy Microsoft. Dzięki temu menedżerowie IT firmy mogą przeglądać dane przed wysłaniem ich do firmy Microsoft. Ten tryb jest używany, gdy istnieje ścieżka przesyłania danych korporacyjna określona przez administratora. Nie można jej używać w trybie raportowania internetowego.
Raportowanie bezgłówne System raportowania błędów nie wyświetli żadnych okien dialogowych dla użytkownika. Dzięki temu menedżerowie IT w firmie mogą zbierać raporty o błędach od pracowników przez cały czas. Ten tryb jest używany, gdy raportowanie jest włączone przez administratora, ale powiadomienie jest wyłączone. Można go używać tylko w trybie raportowania firmowego.

Aby wykluczyć aplikację z raportowania błędów, użyj funkcji AddERExcludedApplication .