Selamat siang, para pembaca Habr. Posting ini adalah panduan untuk membuat pustaka .dll dinamis yang berisi pesan yang diperlukan untuk ditampilkan di logger kustom yang terletak di Windows Event Viewer \ Application and Services Logs \ uuuu (sebagai contoh).

Di log khusus, Anda dapat sering melihat pesan yang deskripsinya berisi:

Ini berarti bahwa sumber acara tttt tidak mengandung set ID dan Deskripsi yang diperlukan.
Untuk memperbaiki situasi ini, perlu:
1. Buka regedit di jalur berikut: HKLM \ SYSTEM \ CurrentControlSet \ Services \ EventLog dan pastikan partisi Anda ada.
2. Buat eventMessage.txt di mana Anda perlu menempatkan parameter Anda,
misalnya dengan msdn , simpan dalam pengkodean Windows-1251 atau Unicode yang diperlukan dan format eventMessage.mc.
Catatan: saat mengisi eventMessage dengan ID dan deskripsi Anda,
SELALU setelah deskripsi, letakkan sebuah titik di baris baru, dan setelah itu letakkan carriage di baris yang baru.
Contoh:
MessageId=0x1 SymbolicName=CAT_1 Language=English OutDescription for your application . MessageId=0x2
Jika Anda tidak mempertimbangkan fitur ini, maka mungkin ada kesalahan tak terduga selama kompilasi.
3. Jalankan cmd sebagai administrator.
4. Jalankan perintah: mc.exe -u C: \ SomeFolder \ eventMessage.mc -r C: \ SomeFolder \ result
Catatan : mc.exe, dalam kasus tertentu, terletak di
C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86
alih-alih format
-u (Unicode)
, Anda bisa menggunakan
-A (W-1251 ANSI, )
, dan opsi
-r
adalah lokasi output di mana file akan disimpan setelah kompilasi.
Setelah menjalankan perintah, berikut ini akan dibuat: file biner dan file eventMessage.rc di C: \ SomeFolder \ result
5. Jalankan perintah: rc.exe C: \ SomeFolder \ result \ eventMessage.rc
Catatan : rc.exe terletak di direktori yang sama dengan mc.exe.
Setelah kompilasi, file eventMessage.res akan dibuat, yang diperlukan untuk membuat perpustakaan dinamis.
6. Jalankan perintah: link.exe -dll -noentry /out:C:\SomeFolder\result\OurMessageSet.dll C: \ SomeFolder \ result \ eventMessage.res.
Catatan: link.exe terletak, dalam kasus tertentu, di
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\SDK\ScopeCppSDK\VC\bin
7. Selamat, kami telah membuat perpustakaan yang sudah lama ditunggu-tunggu bersamamu, tapi itu belum semuanya. Kita masuk ke regedit ke direktori kita dari langkah 1. Di bidang direktori, buat parameter string (nilai string), beri nama kreasi ini di EventMessageFile, dan dalam nilainya menunjukkan path ke pustaka kita: C: \ SomeFolder \ result \ OurMessageSet.dll. Ini terlihat seperti ini:

Alat ditinjau: mc.exe, rc.exe, link.exe.
Semoga kekuatan bersamamu.