Sumber kode peristiwa pelaporan kesalahan windows 1001. Mengungkap rahasia Windows: bagaimana cara kerja layanan pelaporan kesalahan? Menggunakan Pelaporan Kesalahan Windows

Sumber kode peristiwa pelaporan kesalahan windows 1001. Mengungkap rahasia Windows: bagaimana cara kerja layanan pelaporan kesalahan?  Menggunakan Pelaporan Kesalahan Windows
Sumber kode peristiwa pelaporan kesalahan windows 1001. Mengungkap rahasia Windows: bagaimana cara kerja layanan pelaporan kesalahan? Menggunakan Pelaporan Kesalahan Windows

Pelaporan kesalahan diaktifkan secara default di XP, Vista, dan Windows 7. Ketika kesalahan terjadi pada suatu aplikasi, deskripsi rinci kesalahan ini dan Anda diminta untuk mengirimkan informasi ini ke Microsoft. informasi ini diperoleh dari jutaan PC di seluruh dunia dan membantu dalam pembuatan patch dan paket layanan. Dalam beberapa kasus, analisis informasi kesalahan secara mandiri membantu memecahkan masalah. Namun, dalam beberapa kasus, perilaku sistem ini tidak dapat diterima dan Anda ingin menonaktifkan fungsi ini. Pada artikel ini kita akan melihat metode untuk menonaktifkan pelaporan kesalahan di semua sistem.

jendela 7

Buka menu mulai dan masukkan di bilah pencarian pengaturan pelaporan masalah, atau buka Pusat Tindakan -> Ubah Pengaturan Pusat Tindakan -> Pengaturan Pelaporan Masalah. Jika Anda menggunakan metode pencarian, pilih “Pilih cara melaporkan masalah”:

Anda kemudian dapat dengan mudah memilih opsi yang Anda perlukan dari daftar.

Nonaktifkan pelaporan kesalahan di Windows 7 menggunakan Kebijakan Grup

Komentar: Metode ini tidak tersedia untuk rumah tangga Versi Windows 7.

Klik Mulai dan masuk gpedit.msc di bilah pencarian dan tekan Enter.

Editor lokal akan terbuka kebijakan kelompok. Selanjutnya Anda harus pergi ke Konfigurasi Pengguna\Templat Administratif\Komponen Windows\Windows Pelaporan Kesalahan dan terjun ke dunia politik Cacat Kesalahan Windows Pelaporan.

Ubah status kebijakan dari Tidak Dikonfigurasi menjadi Diaktifkan, lalu klik Terapkan dan Oke dan keluar dari Editor Kebijakan Grup.

Menonaktifkan Pelaporan Kesalahan di Vista

Untuk menonaktifkan pelaporan kesalahan di Vista, klik Mulai dan buka Panel Kontrol.

Alihkan panel kontrol ke mode tampilan klasik dan klik Laporan Masalah dan Solusinya.

Seperti yang Anda lihat, kami ditawari dua opsi. Jika Anda memilih Minta saya untuk memeriksa apakah terjadi masalah, pelaporan kesalahan akan diaktifkan dan Anda akan diberikan pilihan untuk mengirim informasi ke Microsoft atau tidak. Jika Anda memilih Memeriksa untuk solusi secara otomatis (disarankan) semua data akan dikirim ke Microsoft secara otomatis. Kedua opsi tersebut tidak cocok untuk kami, karena kami ingin menonaktifkan fungsi ini sepenuhnya, jadi kami akan mengklik tautannya Pengaturan Lanjutan.

Di jendela yang muncul, di bagian Untuk program saya, pelaporan masalah adalah… pilih Mati lalu klik Ok.

Seperti yang Anda lihat sekarang, opsi sebelumnya tidak dapat diedit.

Klik Tutup pada pesan yang memberitahukan kami bahwa pelaporan kesalahan telah dinonaktifkan.

Menonaktifkan Pelaporan Kesalahan di XP

Untuk menonaktifkan pelaporan kesalahan di XP, klik klik kanan pada ikon " Komputer saya" dan pilih Properti. Di jendela yang terbuka, buka tab Selain itu dan tekan tombolnya Laporan bug.

Di jendela yang terbuka, pilih opsi Nonaktifkan pelaporan kesalahan. Hapus centang pada opsi Namun beri tahu saya jika terjadi kesalahan kritis.

Kami bertanya-tanya di mana bisa membeli pakaian yang bagus dan murah untuk anak. Saya merekomendasikan toko online stok anak dengan banyak pilihan dan harga murah.

Ini adalah artikel berdasarkan pertanyaan di forum: “Bagaimana cara mengembalikan string dari DLL?”, “Bagaimana cara meneruskan dan mengembalikan array catatan?”, “Bagaimana cara meneruskan formulir ke DLL?”.

Agar Anda tidak menghabiskan separuh hidup Anda untuk mencari tahu, dalam artikel ini saya akan menyajikan semuanya.

Topik artikel ini telah disinggung lebih dari satu kali di blog ini dengan tingkat yang berbeda-beda, namun dalam artikel ini topik tersebut dikumpulkan bersama dan dibenarkan. Singkatnya, Anda dapat memberikan link ke artikel ini kepada mereka yang mengembangkan DLL.

Catatan Penting: artikel harus dibaca secara berurutan. Contoh kode disediakan hanya sebagai contoh, pada setiap langkah (poin) artikel, kode contoh ditambahkan dengan detail baru. Misalnya, di awal artikel tidak ada penanganan kesalahan; metode "klasik" ditunjukkan (seperti menggunakan GetLastError , konvensi sdtcall, dll.), yang diganti dengan metode yang lebih memadai seiring berjalannya artikel. Hal ini dilakukan agar desain yang “baru” (“tidak biasa”) tidak menimbulkan pertanyaan. Jika tidak, maka perlu untuk menyisipkan catatan untuk setiap contoh seperti: “ini dibahas dalam paragraf di bawah, tetapi itu dibahas dalam paragraf ini.” Bagaimanapun, di akhir artikel ada tautan ke kode yang sudah jadi, ditulis dengan mempertimbangkan semua yang disebutkan dalam artikel. Anda tinggal mengambilnya dan menggunakannya. Dan artikel tersebut menjelaskan alasannya dan alasannya. Jika Anda tidak tertarik dengan “mengapa dan mengapa”, gulir ke akhir hingga kesimpulan dan tautan untuk mengunduh contoh.

Berhenti bekerja atau tidak berfungsi dengan benar) jendela membuat laporan masalah yang dimaksudkan untuk dikirim Microsoft(untuk menemukan solusi masalah).

Mulai dari sistem operasi , untuk menggantikan “alat analisis kegagalan atau kecelakaan” Dr. Watson telah datang Pelaporan Kesalahan Windows (ADALAH) – Layanan Pendaftaran kesalahan Windows (nama lain - , Laporan masalah dan solusinya).

Layanan Pencatatan Kesalahan Windows diwakili oleh file-file berikut (semuanya terletak di direktori \Windows\System32\):

wer.dll (Perpustakaan Pesan Kesalahan Windows);

wercon.exe (Laporan masalah dan solusinya);

wercplsupport.dll ();

werdiagcontroller.dll (Pengontrol Diagnostik WER);

WerFault.exe (Laporan Kesalahan Windows);

WerFaultSecure.exe (Laporan Kesalahan Windows);

wermgr.exe (Pelaporan Masalah Windows);

wersvc.dll (Layanan Pencatatan Kesalahan Windows);

www.wertargets.wtl.

Ketika suatu proses (program) gagal, layanan Pelaporan Kesalahan Windows diluncurkan - di sesi proses yang salah - ini ( WerFault.exe),

melewati id ( PID) proses masuk baris perintah Kesalahan Wer:

Ini akan menampilkan sebuah jendela Microsoft Windows dengan pesan kesalahan - "Pekerjaan terhenti<Название_программы>. Lain kali Anda terhubung ke jendela internet:


dapat mencari cara untuk menghilangkan kesalahan ini" Saat Anda menekan tombol Tampilkan detail masalah


Anda dapat melihat tanda masalahnya: Tanda tangan masalah disimpan dalam laporan kesalahan, yang disimpan dalam direktori\Pengguna\Master\AppData\Local\Microsoft\Windows\WER\ReportArchive\ , setiap laporan masuk folder terpisah Laporan******** (Misalnya, Laporan0a003e48 ), dalam berkas.

Laporkan.wer ), dalam berkas:

Perkiraan isi file

Versi=1

Tipe Peristiwa=APPCRASH

Waktu Peristiwa=129234418886148269

Tipe Laporan=2

Persetujuan=1

Respon.type=4

Sig.Name=Nama aplikasi

Sig.Nilai=iexplore.exe

Sig.Name=Versi Aplikasi

Nilai Sig=8.0.6001.18928

Sig.Name=Stempel Waktu Pendaftaran

Nilai Sig.=4bdfa327

Sig.Name=Nama modul error

Sig.Nilai=mshtml.dll

Sig.Name=Versi Aplikasi

Sig.Name=Versi modul error

Sig.Name=Stempel waktu modul mengalami kesalahan

Sig.Nilai=4bdfb76d

Sig.Name=Kode pengecualian

Sig.Nilai=c0000005

Sig.Name=Pengecualian Offset

Sig.Nilai=000da33f

DynamicSig.Name=Versi OS

DynamicSig.Nilai=6.0.6002.2.2.0.768.3

DynamicSig.Name=Kode bahasa

Tanda Dinamis.Nilai=1049

DynamicSig.Name=Informasi tambahan 1

DynamicSig.Nilai=fd00

DynamicSig.Name=Informasi tambahan 2

DynamicSig.Name=Informasi tambahan 1

DynamicSig.Name=Informasi tambahan 3

DynamicSig.Name=Informasi tambahan 4

Tanda Dinamis.Nilai= UI=C:\Program Files\ Penjelajah Internet

\iexplore.exe UI=Dihentikan pekerjaan internet

Penjelajah

UI=Cari solusi masalah di Internet dan tutup program

UI=Periksa perbaikan online nanti dan tutup program

UI=Tutup program

FriendlyEventName=Hentikan pekerjaan

PersetujuanKey=APPCRASH

NamaAplikasi=Internet Explorer

AppPath=C:\Program Files\Internet Explorer\iexplore.exe

Cara memulai layanan Laporan masalah dan solusinya

Klik Mulai -> Panel Kontrol -> Laporan tentang masalah dan solusinya;


- di jendela Laporan masalah dan solusinya dalam menu Tugas Opsi berikut tersedia:

· Carilah solusi baru(koneksi Internet terbuka diperlukan);

Pada artikel sebelumnya di seri ini, yang didedikasikan untuk mekanisme Restart dan Pemulihan Aplikasi, kami menyebutkan mekanisme Pelaporan Kesalahan Windows (WER). Ini akan dibahas dalam artikel seri ini.

Pada artikel sebelumnya di seri ini, yang didedikasikan untuk mekanisme Restart dan Pemulihan Aplikasi, kami menyebutkan mekanisme Pelaporan Kesalahan Windows (WER). Ini akan dibahas dalam artikel seri ini.

Mekanisme Pelaporan Kesalahan Windows

Dengan menggunakan Windows Error Reporting (WER), Anda dapat mengumpulkan data tentang kesalahan yang terjadi dalam aplikasi dan mengirimkan informasi ini ke situs khusus Microsoft (http://winqal.microsoft.com) atau menyimpannya secara lokal. Mengumpulkan informasi rinci tentang kesalahan dan kegagalan membantu menghilangkan kekurangan aplikasi, koreksi kesalahan, menyederhanakan rilis paket layanan dan versi aplikasi baru, dan memastikan stabilitas dan keandalan keseluruhan aplikasi itu sendiri dan sistem operasi.

Perlu diketahui bahwa Microsoft sendiri secara aktif menggunakan mekanisme Windows Error Reporting baik selama proses pengembangan maupun setelah merilis produk ke pasar. Ya, grup produk Microsoft Office memperbaiki 50% kesalahan di Office Service Pacl 2, grup produk Visual Studio - 74% kesalahan di Beta 1 Visual Studio 2005, 29% kesalahan di Windows XP diperbaiki di Windows XP Service Pack 1. Saat ini, lebih dari 2 ribu perusahaan gunakan layanan Windows Error Reporting untuk meningkatkan kualitas aplikasi Anda.

Pelaporan Kesalahan Windows pertama kali muncul di Windows XP, diperluas secara signifikan di Windows Vista, dan dikembangkan lebih lanjut di Server Windows 2008, Vista Service Pack 1 dan Windows 7 dan Windows Server 2008 R2. Ya, aktif tingkat jendela Vista memberikan kesempatan kepada pengembang untuk tidak hanya menerima informasi tentang kegagalan yang terjadi pada aplikasi, tetapi juga data kinerja. Kini Anda dapat membuat, mengonfigurasi, dan mengirim laporan masalah dengan lebih fleksibel, alat analisis data online telah ditingkatkan, dan mekanisme komunikasi dengan pengguna telah disederhanakan - melalui Laporan Masalah dan Solusinya(di Windows Vista - Awal -> Panel Kontrol -> Sistem dan Pemeliharaan -> Laporan Masalah dan Solusi -> Lihat Riwayat Masalah) Dan Pusat Aksi(di Windows 7). Kemudian, Windows Server 2008 dan Vista Service Pack 1 memperkenalkan kemampuan untuk membuat dump lokal, dan Windows 7 dan Windows Server 2008 R2 menambahkan kemampuan untuk menampilkan pengecualian yang tidak akan ditangani oleh penangan tradisional dan akan mengakibatkan penghentian segera aplikasi dan mulai otomatis mekanisme Pelaporan Kesalahan Windows, serta kemampuan untuk menentukan proses eksternal - penangan pengecualian, yang akan dipanggil untuk mendapatkan nama peristiwa, parameter pelaporan kesalahan, dan peluncuran debugger opsional.

Menggunakan Pelaporan Kesalahan Windows

Mari kita lihat sekilas bagaimana pengembang dapat menggunakan Pelaporan Kesalahan Windows untuk mendapatkan informasi tentang kerusakan dan masalah lain pada aplikasi mereka. Dimulai dengan Windows Jendela Vista secara default, memberikan laporan kerusakan, macet, dan kesalahan kernel untuk semua aplikasi - tidak diperlukan perubahan pada kode aplikasi. Jika perlu, laporan tersebut menyertakan dump memori mini dan dump heap aplikasi; aplikasi memerlukan penggunaan antarmuka pemrograman jika perlu mengirim beberapa aplikasi khusus informasi tambahan. Karena kernel Windows secara otomatis melaporkan informasi tentang pengecualian yang tidak tertangani, aplikasi tidak perlu menangani pengecualian yang menyebabkan kesalahan fatal.

Jika terjadi crash, macet, atau kesalahan pada tingkat kernel sistem operasi, mekanisme Pelaporan Kesalahan Windows melakukan urutan tindakan berikut:

  1. Terjadi masalah.
  2. Kernel sistem operasi memanggil WER.
  3. WER mengumpulkan data, membuat laporan dan, jika perlu, meminta konfirmasi pengguna untuk mengirimkan laporan.
  4. Setelah menerima konfirmasi, WER mengirimkan laporan ke Microsoft (yang disebut Watson Server).
  5. Jika server memerlukan data tambahan, WER mengumpulkannya dan, jika perlu, meminta konfirmasi dari pengguna untuk mengirimkannya.
  6. Jika aplikasi didaftarkan untuk restart (topik yang kita bahas sebelumnya), maka WER mengeksekusi fungsi aplikasi yang disebut secara tidak langsung.
  7. Jika ada solusi untuk masalah yang menyebabkan kegagalan, pengguna akan diberitahu melalui alat sistem operasi yang sesuai.

Tergantung pada situasinya, file CAB mungkin berisi berbagai jenis dumps, yang dapat dibedakan berdasarkan ekstensi nama file ( meja 1).

Aplikasi dapat menggunakan fungsi berikut untuk menyesuaikan konten laporan yang dikirim ke Microsoft - fungsi registrasi menginstruksikan Web untuk menyertakan file dan blok memori tertentu dalam laporan yang dihasilkan.

Untuk menyertakan file dalam laporan, gunakan fungsi WerRegisterFile(), yang diteruskan sebagai parameter: nama lengkap file, jenisnya (salah satu nilai WER_REGISTER_FILE_TYPE) dan dua tanda: WER_DELETE_FILE_WHEN_DONE, yang menunjukkan bahwa file harus dihapus setelah mengirim laporan, dan WER_ANONYMOUS_ DATA, yang menunjukkan bahwa file tersebut tidak berisi data pribadi. Nilai yang mungkin parameter WER_REGISTER_FILE_TYPE diberikan meja 2.

Perhatikan bahwa tugas menghasilkan dump memori diberikan kepada pengembang aplikasi - untuk menyelesaikannya, Anda dapat menggunakan, misalnya, mekanisme debugging yang dijelaskan dalam SDK Windows(lihat fungsi MiniDumpWriteDump()).

Untuk mengecualikan file dari laporan, gunakan fungsi WerUnRegisterFile(), dengan menentukan nama file yang dikecualikan sebagai parameter.

Dalam sebagian besar skenario, referensinya file tambahan hanya terjadi ketika permintaan terkait diterima dari server. Jika mengirim file tambahan, Anda perlu menggunakan flag WER_ADD_ REGISTERED_DATA saat memanggil fungsi WerReportSubmit() - kita akan membicarakannya nanti.

Untuk menyertakan salinan area memori dalam laporan, fungsi WerRegisterMemoryBlock() digunakan, parameternya adalah alamat awal blok memori yang akan disertakan dan ukuran blok ini dalam byte (ukuran maksimum blok memori adalah WER_MAX_MEM_BLOCK_SIZE). Untuk membatalkan penyertaan salinan area memori dalam laporan, gunakan fungsi WerUnRegisterMemoryBlock(). Jika mengirim data dari memori, Anda harus menggunakan tanda WER_ADD_REGISTERED_DATA saat memanggil fungsi WerReportSubmit().

Fungsi WerSetFlags() dan WerGetFlags() masing-masing dapat digunakan untuk mengontrol status proses saat membuat laporan kesalahan dan memperoleh informasi konfigurasi.

Proses pembuatan dan pengiriman laporan terdiri dari beberapa langkah. Laporan diinisialisasi dengan memanggil fungsi WerReportCreate(), yang menentukan jenis kejadian yang membuat laporan, jenis laporan ( WerReportNonKritis- untuk kegagalan dengan kemungkinan pemulihan dan WerReportCritical - untuk kegagalan yang menyebabkan aplikasi mogok), tautan ke informasi yang disertakan dalam laporan (lihat struktur WER_REPORT_INFORMATION), dan variabel yang akan berisi tautan ke laporan yang dihasilkan - LaporanHandle.

Setelah laporan berhasil diinisialisasi, Anda perlu menambahkan parameter grup pertama dan kedua ke dalamnya. Parameter grup pertama disetel menggunakan fungsi WerReport-Set-Parameter(), yang meneruskan tautan ke laporan yang dibuat (hasil eksekusi fungsi WerReportCreate yang berhasil), sekumpulan tanda, nama parameter dan nilainya (string 16-bit di Unicode, diakhiri dengan nol).

Untuk dimasukkan dalam laporan parameter tambahan Fungsi WerReportAddSecondaryParameter() digunakan, yang meneruskan tautan ke laporan, nama parameter, dan nilainya.

Selain kemampuan untuk menyertakan file dan cuplikan area memori dalam laporan, dimungkinkan untuk mengirimkan dump memori sebagai bagian dari laporan - untuk ini Anda dapat menggunakan fungsi WerReportAddDump(), yang parameternya menyertakan tautan ke laporan , tautan ke proses dan thread tempat dump dibuat, tipe dump (salah satu nilai WER_DUMP_TYPE), informasi pengecualian (penunjuk ke struktur tipe WER_EXCEPTION_INFORMATION), opsi tambahan(tipe data WER_DUMP_CUSTOM_OPTIONS) dan bendera. Perhatikan bahwa proses pembuatan dump harus memiliki hak akses STANDARD_RIGHTS_READ dan PROCESS_QUERY_INFORMATION.

Untuk menyertakan file dalam laporan, kami menggunakan fungsi WerReportAddFile(), yang mana kami meneruskan link ke laporan, nama file lengkap, jenis file (WER_FILE_TYPE) dan tanda tambahan.

Selain itu, pengembang diberi kesempatan untuk melakukan penyesuaian antarmuka pengguna- memilih informasi yang ditampilkan di panel dialog sistem. Untuk tujuan ini, fungsi WerReportSetUI Option() digunakan, yang meneruskan tautan ke laporan, jenis antarmuka laporan (WER_REPORT_UI) dan nilai string yang ditampilkan. Aplikasi dapat mengubah salah satu bidang elemen antarmuka yang ditentukan oleh parameter WER_REPORT_UI; Setiap pemanggilan fungsi memungkinkan Anda mengubah hanya satu bidang. Fungsi WerReportSetUIOption() dapat dipanggil kapan saja selama pengoperasian aplikasi sebelum laporan dikirim secara langsung.

Setelah laporan dibuat dan dikonfigurasi, kami menggunakan fungsi WerReportSubmit() untuk mengirimkan laporan. Parameter fungsi ini adalah tautan ke laporan, jenis antarmuka pengguna (hak administrator, konfirmasi pengiriman, dll.) dan serangkaian tanda. Setelah laporan dikirim, link ke laporan tersebut harus ditutup menggunakan fungsi WerReportCloseHandle().

Untuk memutuskan sambungan aplikasi dari mekanisme Pelaporan Kesalahan Windows, gunakan fungsi WerAddExcludedApplication(), dan untuk menyambungkannya kembali, gunakan fungsi WerRemoveExcludedApplication().

Pengaturan Pelaporan Kesalahan Windows terletak di dua cabang registri:

  • Pelaporan Kesalahan HKEY_CURRENT_USER\Software\Microsoft\Windows\Windows;
  • Pelaporan Kesalahan HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows.

Paling pengaturan yang berguna ditampilkan di meja 3.

Kesimpulan

DI DALAM siklus ini Dalam artikel tersebut, kami membahas berbagai masalah untuk meningkatkan stabilitas aplikasi. Kami membahas teknik untuk menghindari kebocoran memori dan mencegah pembekuan aplikasi, membahas penggunaan mekanisme Mulai Ulang dan Pemulihan Aplikasi, yang memungkinkan Anda memulai ulang aplikasi yang memblokir beberapa sumber daya atau berhenti merespons pesan sistem, dan mekanisme Pelaporan Kesalahan Windows , yang memungkinkan untuk mengumpulkan data tentang kegagalan yang terjadi dalam aplikasi.

Dalam artikel berikut tentang sistem operasi Windows 7 untuk pengembang, kita akan melihat sejumlah perubahan pada tingkat kernel sistem operasi yang mungkin menarik bagi pengembang aplikasi.