Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Используйте этот класс для отправки отчетов отладки в именованный канал.
Синтаксис
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
Время в миллисекундах, которое этот класс ожидает, пока именованный канал станет доступным.