CDebugReportHook-Klasse
Verwenden Sie diese Klasse, um Debugberichte an eine benannte Pipe zu senden.
Syntax
class CDebugReportHook
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CDebugReportHook::CDebugReportHook | Ruft SetPipeName, SetTimeout und SetHook auf. |
CDebugReportHook::~CDebugReportHook | Ruft CDebugReportHook::RemoveHook auf. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CDebugReportHook::CDebugReportHookProc | (Statisch) Die benutzerdefinierte Berichterstellungsfunktion, die in den C-Laufzeit-Debugberichtsprozess eingebunden ist. |
CDebugReportHook::RemoveHook | Rufen Sie diese Methode auf, um das Senden von Debugberichten an die benannte Pipe zu beenden und den vorherigen Berichtshaken wiederherzustellen. |
CDebugReportHook::SetHook | Rufen Sie diese Methode auf, um mit dem Senden von Debugberichten an die benannte Pipe zu beginnen. |
CDebugReportHook::SetPipeName | Rufen Sie diese Methode auf, um den Computer und den Namen der Pipe festzulegen, an die die Debugberichte gesendet werden. |
CDebugReportHook::SetTimeout | Rufen Sie diese Methode auf, um die Zeit in Millisekunden festzulegen, die diese Klasse wartet, bis die benannte Pipe verfügbar ist. |
Hinweise
Erstellen Sie eine Instanz dieser Klasse in Debugbuilds Ihrer Dienste oder Anwendungen, um Debugberichte an eine benannte Pipe zu senden. Debugberichte werden durch Aufrufen _CrtDbgReport oder Verwenden eines Wrappers für diese Funktion wie die ATLTRACE - und ATLASSERT-Makros generiert.
Mithilfe dieser Klasse können Sie komponenten, die in nicht interaktiven Fensterstationen ausgeführt werden, interaktiv debuggen.
Beachten Sie, dass Debugberichte mithilfe des zugrunde liegenden Sicherheitskontexts des Threads gesendet werden. Der Identitätswechsel ist vorübergehend deaktiviert, sodass Debugberichte in Situationen angezeigt werden können, in denen identitätswechsel von Benutzern mit geringen Berechtigungen stattfindet, z. B. in Webanwendungen.
Anforderungen
Header: atlutil.h
CDebugReportHook::CDebugReportHook
Ruft SetPipeName, SetTimeout und SetHook auf.
CDebugReportHook(
LPCSTR szMachineName = ".",
LPCSTR szPipeName = "AtlsDbgPipe",
DWORD dwTimeout = 20000) throw();
Parameter
szMachineName
Der Name des Computers, an den die Debugausgabe gesendet werden soll. Standardmäßig wird der lokale Computer verwendet.
szPipeName
Der Name der benannten Pipe, an die die Debugausgabe gesendet werden soll.
dwTimeout
Die Zeit in Millisekunden, die diese Klasse wartet, bis die benannte Pipe verfügbar ist.
CDebugReportHook::~CDebugReportHook
Ruft CDebugReportHook::RemoveHook auf.
~CDebugReportHook() throw();
CDebugReportHook::CDebugReportHookProc
Die benutzerdefinierte Berichterstellungsfunktion, die in den C-Laufzeit-Debugberichtsprozess eingebunden ist.
static int __cdecl CDebugReportHookProc(
int reportType,
char* message,
int* returnValue) throw();
Parameter
reportType
Der Typ des Berichts (_CRT_WARN, _CRT_ERROR oder _CRT_ASSERT).
message
Die Nachrichtenzeichenfolge.
returnValue
Der Wert, der von _CrtDbgReport zurückgegeben werden soll.
Rückgabewert
Gibt FALSE zurück, wenn der Hook die betreffende Nachricht vollständig verarbeitet, sodass keine weitere Berichterstattung erforderlich ist. Gibt TRUE zurück, wenn _CrtDbgReport
die Nachricht normal berichtet werden soll.
Hinweise
Die Berichtsfunktion versucht, das benannte Pipe zu öffnen und mit dem Prozess am anderen Ende zu kommunizieren. Wenn die Pfeife ausgelastet ist, wartet die Berichtsfunktion, bis die Pfeife frei ist oder das Timeout abläuft. Das Timeout kann vom Konstruktor oder einem Aufruf von CDebugReportHook::SetTimeout festgelegt werden.
Der Code in dieser Funktion wird im zugrunde liegenden Sicherheitskontext des aufrufenden Threads ausgeführt, d. h. der Identitätswechsel wird für die Dauer dieser Funktion deaktiviert.
CDebugReportHook::RemoveHook
Rufen Sie diese Methode auf, um das Senden von Debugberichten an die benannte Pipe zu beenden und den vorherigen Berichtshaken wiederherzustellen.
void RemoveHook() throw();
Hinweise
Ruft _CrtSetReportHook2 auf, um den vorherigen Berichtshaken wiederherzustellen.
CDebugReportHook::SetHook
Rufen Sie diese Methode auf, um mit dem Senden von Debugberichten an die benannte Pipe zu beginnen.
void SetHook() throw();
Hinweise
Ruft _CrtSetReportHook2 auf, dass Debugberichte über CDebugReportHookProc an die benannte Pipe weitergeleitet werden. Diese Klasse verfolgt den vorherigen Berichtshaken, sodass er wiederhergestellt werden kann, wenn RemoveHook aufgerufen wird.
CDebugReportHook::SetPipeName
Rufen Sie diese Methode auf, um den Computer und den Namen der Pipe festzulegen, an die die Debugberichte gesendet werden.
BOOL SetPipeName(
LPCSTR szMachineName = ".",
LPCSTR szPipeName = "AtlsDbgPipe") throw();
Parameter
szMachineName
Der Name des Computers, an den die Debugausgabe gesendet werden soll.
szPipeName
Der Name der benannten Pipe, an die die Debugausgabe gesendet werden soll.
Rückgabewert
Gibt WAHR für Erfolg, FALSE bei Fehler zurück.
CDebugReportHook::SetTimeout
Rufen Sie diese Methode auf, um die Zeit in Millisekunden festzulegen, die diese Klasse wartet, bis die benannte Pipe verfügbar ist.
void SetTimeout(DWORD dwTimeout);
Parameter
dwTimeout
Die Zeit in Millisekunden, die diese Klasse wartet, bis die benannte Pipe verfügbar ist.