Класс CDebugReportHook
Используйте этот класс для отправки отчетов отладки в именованный канал.
Синтаксис
class CDebugReportHook
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CDebugReportHook::CDebugReportHook | Вызывает SetPipeName, SetTimeout и SetHook. |
CDebugReportHook::~CDebugReportHook | Вызывает CDebugReportHook::RemoveHook. |
Открытые методы
Имя | Описание |
---|---|
CDebugReportHook::CDebugReportHookProc | (статический) Настраиваемая функция создания отчетов, которая подключена к процессу создания отчетов во время выполнения C. |
CDebugReportHook::RemoveHook | Вызовите этот метод, чтобы остановить отправку отчетов отладки в именованный канал и восстановить предыдущий перехватчик отчета. |
CDebugReportHook::SetHook | Вызовите этот метод, чтобы начать отправку отчетов отладки в именованный канал. |
CDebugReportHook::SetPipeName | Вызовите этот метод, чтобы задать компьютер и имя канала, в который будут отправляться отчеты отладки. |
CDebugReportHook::SetTimeout | Вызовите этот метод, чтобы задать время в миллисекундах, которое этот класс будет ожидать, пока именованный канал станет доступным. |
Замечания
Создайте экземпляр этого класса в отладочных сборках служб или приложений для отправки отчетов отладки в именованный канал. Отчеты отладки создаются путем вызова _CrtDbgReport или с помощью оболочки для этой функции, например макросов ATLTRACE и ATLASSERT .
Использование этого класса позволяет интерактивно отлаживать компоненты, работающие в неинтерактивных станциях окон.
Обратите внимание, что отчеты отладки отправляются с помощью базового контекста безопасности потока. Олицетворение временно отключено, чтобы отчеты отладки можно просматривать в ситуациях, когда происходит олицетворение пользователей с низкими привилегиями, например в веб-приложениях.
Требования
Заголовок: atlutil.h
CDebugReportHook::CDebugReportHook
Вызывает SetPipeName, SetTimeout и SetHook.
CDebugReportHook(
LPCSTR szMachineName = ".",
LPCSTR szPipeName = "AtlsDbgPipe",
DWORD dwTimeout = 20000) throw();
Параметры
szMachineName
Имя компьютера, на который должны отправляться выходные данные отладки. По умолчанию используется локальный компьютер.
szPipeName
Имя именованного канала, в который должны отправляться выходные данные отладки.
dwTimeout
Время в миллисекундах, которое этот класс ожидает, пока именованный канал станет доступным.
CDebugReportHook::~CDebugReportHook
Вызывает CDebugReportHook::RemoveHook.
~CDebugReportHook() throw();
CDebugReportHook::CDebugReportHookProc
Настраиваемая функция создания отчетов, которая подключена к процессу создания отчетов во время выполнения C.
static int __cdecl CDebugReportHookProc(
int reportType,
char* message,
int* returnValue) throw();
Параметры
reportType
Тип отчета (_CRT_WARN, _CRT_ERROR или _CRT_ASSERT).
message
Строка сообщения.
returnValue
Значение, возвращаемое _CrtDbgReport.
Возвращаемое значение
Возвращает значение FALSE, если перехватчик обрабатывает сообщение полностью, чтобы дальнейшие отчеты не требовались. Возвращает значение TRUE, если _CrtDbgReport
сообщение должно сообщаться обычным образом.
Замечания
Функция отчетов пытается открыть именованный канал и взаимодействовать с процессом в другом конце. Если канал занят, функция отчетов будет ждать, пока канал не будет свободен или истекает время ожидания. Время ожидания можно задать конструктором или вызовом CDebugReportHook::SetTimeout.
Код в этой функции выполняется в базовом контексте безопасности вызывающего потока, то есть олицетворение отключено в течение длительности этой функции.
CDebugReportHook::RemoveHook
Вызовите этот метод, чтобы остановить отправку отчетов отладки в именованный канал и восстановить предыдущий перехватчик отчета.
void RemoveHook() throw();
Замечания
Вызывает _CrtSetReportHook2 для восстановления предыдущего перехватчика отчета.
CDebugReportHook::SetHook
Вызовите этот метод, чтобы начать отправку отчетов отладки в именованный канал.
void SetHook() throw();
Замечания
Вызывает _CrtSetReportHook2 отправку отчетов отладки через CDebugReportHookProc в именованный канал. Этот класс отслеживает предыдущий перехватчик отчета, чтобы его можно было восстановить при вызове RemoveHook .
CDebugReportHook::SetPipeName
Вызовите этот метод, чтобы задать компьютер и имя канала, в который будут отправляться отчеты отладки.
BOOL SetPipeName(
LPCSTR szMachineName = ".",
LPCSTR szPipeName = "AtlsDbgPipe") throw();
Параметры
szMachineName
Имя компьютера, на который должны отправляться выходные данные отладки.
szPipeName
Имя именованного канала, в который должны отправляться выходные данные отладки.
Возвращаемое значение
Возвращает значение TRUE при успешном выполнении, false при сбое.
CDebugReportHook::SetTimeout
Вызовите этот метод, чтобы задать время в миллисекундах, которое этот класс будет ожидать, пока именованный канал станет доступным.
void SetTimeout(DWORD dwTimeout);
Параметры
dwTimeout
Время в миллисекундах, которое этот класс ожидает, пока именованный канал станет доступным.