Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Gunakan kelas ini untuk mengirim laporan debug ke pipa bernama.
Sintaks
class CDebugReportHook
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| CDebugReportHook::CDebugReportHook | Memanggil SetPipeName, SetTimeout, dan SetHook. |
| CDebugReportHook::~CDebugReportHook | Memanggil CDebugReportHook::RemoveHook. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| CDebugReportHook::CDebugReportHookProc | (Statis) Fungsi pelaporan kustom yang terkait dengan proses pelaporan debug run-time C. |
| CDebugReportHook::RemoveHook | Panggil metode ini untuk berhenti mengirim laporan debug ke pipa bernama dan pulihkan hook laporan sebelumnya. |
| CDebugReportHook::SetHook | Panggil metode ini untuk mulai mengirim laporan debug ke pipa bernama. |
| CDebugReportHook::SetPipeName | Panggil metode ini untuk mengatur komputer dan nama pipa tempat laporan debug akan dikirim. |
| CDebugReportHook::SetTimeout | Panggil metode ini untuk mengatur waktu dalam milidetik bahwa kelas ini akan menunggu pipa bernama tersedia. |
Keterangan
Buat instans kelas ini di build debug layanan atau aplikasi Anda untuk mengirim laporan debug ke pipa bernama. Laporan debug dihasilkan dengan memanggil _CrtDbgReport atau menggunakan pembungkus untuk fungsi ini seperti makro ATLTRACE dan ATLASSERT .
Penggunaan kelas ini memungkinkan Anda men-debug komponen secara interaktif yang berjalan di stasiun jendela non-interaktif.
Perhatikan bahwa laporan debug dikirim menggunakan konteks keamanan yang mendasar dari utas. Peniruan identitas untuk sementara dinonaktifkan sehingga laporan debug dapat dilihat dalam situasi di mana peniruan pengguna dengan hak istimewa rendah sedang berlangsung, seperti di aplikasi web.
Persyaratan
Header: atlutil.h
CDebugReportHook::CDebugReportHook
Memanggil SetPipeName, SetTimeout, dan SetHook.
CDebugReportHook(
LPCSTR szMachineName = ".",
LPCSTR szPipeName = "AtlsDbgPipe",
DWORD dwTimeout = 20000) throw();
Parameter
szMachineName
Nama komputer tempat output debug harus dikirim. Default ke komputer lokal.
szPipeName
Nama pipa bernama tempat output debug harus dikirim.
dwTimeout
Waktu dalam milidetik bahwa kelas ini akan menunggu pipa bernama tersedia.
CDebugReportHook::~CDebugReportHook
Memanggil CDebugReportHook::RemoveHook.
~CDebugReportHook() throw();
CDebugReportHook::CDebugReportHookProc
Fungsi pelaporan kustom yang terkait dengan proses pelaporan debug run-time C.
static int __cdecl CDebugReportHookProc(
int reportType,
char* message,
int* returnValue) throw();
Parameter
reportType
Jenis laporan (_CRT_WARN, _CRT_ERROR, atau _CRT_ASSERT).
message
String pesan.
returnValue
Nilai yang harus dikembalikan oleh _CrtDbgReport.
Tampilkan Nilai
Mengembalikan FALSE jika hook menangani pesan yang dimaksud sepenuhnya sehingga tidak diperlukan pelaporan lebih lanjut. Mengembalikan TRUE jika _CrtDbgReport harus melaporkan pesan dengan cara normal.
Keterangan
Fungsi pelaporan mencoba membuka pipa bernama dan berkomunikasi dengan proses di ujung lainnya. Jika pipa sibuk, fungsi pelaporan akan menunggu hingga pipa bebas atau batas waktu habis. Batas waktu dapat diatur oleh konstruktor atau panggilan ke CDebugReportHook::SetTimeout.
Kode dalam fungsi ini dijalankan dalam konteks keamanan yang mendasar dari utas panggilan, yaitu, peniruan identitas dinonaktifkan selama durasi fungsi ini.
CDebugReportHook::RemoveHook
Panggil metode ini untuk berhenti mengirim laporan debug ke pipa bernama dan pulihkan hook laporan sebelumnya.
void RemoveHook() throw();
Keterangan
Memanggil _CrtSetReportHook2 untuk memulihkan hook laporan sebelumnya.
CDebugReportHook::SetHook
Panggil metode ini untuk mulai mengirim laporan debug ke pipa bernama.
void SetHook() throw();
Keterangan
Memanggil _CrtSetReportHook2 memiliki laporan debug yang dirutekan melalui CDebugReportHookProc ke pipa bernama. Kelas ini melacak hook laporan sebelumnya sehingga dapat dipulihkan saat RemoveHook dipanggil.
CDebugReportHook::SetPipeName
Panggil metode ini untuk mengatur komputer dan nama pipa tempat laporan debug akan dikirim.
BOOL SetPipeName(
LPCSTR szMachineName = ".",
LPCSTR szPipeName = "AtlsDbgPipe") throw();
Parameter
szMachineName
Nama komputer tempat output debug harus dikirim.
szPipeName
Nama pipa bernama tempat output debug harus dikirim.
Tampilkan Nilai
Mengembalikan TRUE pada keberhasilan, FALSE pada kegagalan.
CDebugReportHook::SetTimeout
Panggil metode ini untuk mengatur waktu dalam milidetik bahwa kelas ini akan menunggu pipa bernama tersedia.
void SetTimeout(DWORD dwTimeout);
Parameter
dwTimeout
Waktu dalam milidetik bahwa kelas ini akan menunggu pipa bernama tersedia.