Compartilhar via


Arquivos de Mensagem

Cada origem do evento deve registrar arquivos de mensagem que contenham cadeias de caracteres de descrição para cada identificador de evento, categoria de evento e parâmetro. Registre esses arquivos nos valores do Registro EventMessageFile, CategoryMessageFile e ParameterMessageFile para a origem do evento.

Você pode criar um arquivo de mensagem que contenha descrições para os identificadores de evento, categorias e parâmetros ou criar três arquivos de mensagem separados. Os identificadores de mensagem para todas as suas mensagens devem ser exclusivos se você especificar as mensagens em um arquivo ou três arquivos. Vários aplicativos podem compartilhar o mesmo arquivo de mensagem. Para obter mais informações sobre arquivos de mensagem, consulte Compilador de mensagens. Para obter detalhes sobre a sintaxe de um arquivo de mensagem, consulte Arquivos de texto de mensagem.

Arquivo de mensagem de exemplo

Veja a seguir um exemplo de arquivo de mensagem.

; /* --------------------------------------------------------
; HEADER SECTION
;*/
SeverityNames=(Success=0x0:STATUS_SEVERITY_SUCCESS
               Informational=0x1:STATUS_SEVERITY_INFORMATIONAL
               Warning=0x2:STATUS_SEVERITY_WARNING
               Error=0x3:STATUS_SEVERITY_ERROR
              )
;
;
FacilityNames=(System=0x0:FACILITY_SYSTEM
               Runtime=0x2:FACILITY_RUNTIME
               Stubs=0x3:FACILITY_STUBS
               Io=0x4:FACILITY_IO_ERROR_CODE
              )
;
;/* ------------------------------------------------------------------
; MESSAGE DEFINITION SECTION
;*/

MessageIdTypedef=WORD

MessageId=0x1
SymbolicName=CAT_1
Language=English
Category 1
.

MessageId=0x2
SymbolicName=CAT_2
Language=English
Category 2
.

MessageId=0x3
SymbolicName=CAT_3
Language=English
Category 3
.

MessageIdTypedef=DWORD

MessageId=0x100
Severity=Error
Facility=Runtime
SymbolicName=MSG_COMMAND_ERR
Language=English
The command is incorrect. 
.

MessageId=0x101
Severity=Success
Facility=System
SymbolicName=MSG_STRIKE_ANY_KEY
Language=English
Press any key to continue . . . %0
.

MessageId=0x102
Severity=Error
Facility=System
SymbolicName=MSG_FILE_BAD_CONTENTS
Language=English
File %1 contains %2, which is in error
.

MessageId=0x103
Severity=Warning
Facility=System
SymbolicName=MSG_RETRYS
Language=English
There have been %1 retrys with %2 success! Disconnect from
the server and retry later.
.

MessageId=0x104
Severity=Informational
Facility=System
SymbolicName=MSG_INSERT_DISK
Language=English
Insert %%1000 in %%1001 and hit any key when ready... 
.

;/* Insert string parameters */
;

MessageId=1000
Severity=Success
Facility=System
SymbolicName=DISK
Language=English
disk%0
.

MessageId=1001
Severity=Success
Facility=System
SymbolicName=DRIVE
Language=English
drive%0
.

O aplicativo de exibição de eventos pode usar o procedimento a seguir para obter acesso às cadeias de caracteres de mensagem na DLL da mensagem.

Para obter cadeias de caracteres de descrição

  1. Chame a função RegOpenKey para abrir a origem do evento.
  2. Chame a função RegQueryValueEx para obter o conteúdo do valor EventMessageFile para a origem do evento, que é o nome da DLL da mensagem.
  3. Chame a função LoadLibraryEx para carregar a DLL da mensagem determinada pela etapa 2.
  4. Chame a função FormatMessage com o identificador de mensagem para obter a descrição da DLL. (Observe que os identificadores de mensagens são definidos no . Arquivo H gerado pelo compilador de mensagem.) A função FormatMessage substituirá as cadeias de caracteres de inserção usando os valores de argumento que você passar, mas não substituirá as cadeias de caracteres de inserção de parâmetro; você deve substituir as cadeias de caracteres de inserção de parâmetros por conta própria antes de exibir a cadeia de caracteres.