Función EvtFormatMessage (winevt.h)

Aplica formato a una cadena de mensaje.

Sintaxis

BOOL EvtFormatMessage(
  [in]  EVT_HANDLE   PublisherMetadata,
  [in]  EVT_HANDLE   Event,
  [in]  DWORD        MessageId,
  [in]  DWORD        ValueCount,
  [in]  PEVT_VARIANT Values,
  [in]  DWORD        Flags,
  [in]  DWORD        BufferSize,
  [in]  LPWSTR       Buffer,
  [out] PDWORD       BufferUsed
);

Parámetros

[in] PublisherMetadata

Identificador de los metadatos del proveedor que devuelve la función EvtOpenPublisherMetadata . El identificador actúa como contexto de formato para el evento o el identificador de mensaje.

Puede establecer este parámetro en NULL si el servicio recopilador de eventos de Windows reenvía el evento. Los eventos reenviados incluyen una sección RenderingInfo que contiene las cadenas de mensaje representadas. También puede establecer este parámetro en NULL si la propiedad de evento que está formateado se define en el archivo Winmeta.xml (por ejemplo, si level está establecido en win:Error). En este último caso, el servicio usa el proveedor Winmeta como contexto de formato y solo dará formato a las cadenas de mensaje a las que haga referencia en caso de que se definan en el archivo Winmeta.xml.

[in] Event

Identificador de un evento. El parámetro Flags especifica la cadena de mensaje en caso de que desee dar formato. Este parámetro debe ser NULL si el parámetro Flags está establecido en EvtFormatMessageId.

[in] MessageId

Identificador de recurso de la cadena de mensaje a la que desea dar formato. Para obtener el identificador de recurso de una cadena de mensaje, llame a la función GetPublisherMetadataProperty . Establezca este parámetro solo si el parámetro Flags está establecido en EvtFormatMessageId.

[in] ValueCount

Número de valores del parámetro Values .

[in] Values

Matriz de valores de inserción que se usará al dar formato a la cadena de mensaje del evento. Normalmente, se establece este parámetro en NULL y la función obtiene los valores de inserción de los propios datos del evento. Usaría este parámetro para invalidar el comportamiento predeterminado y proporcionar los valores de inserción que se van a usar. Por ejemplo, puede usar este parámetro si desea resolver un SID en un nombre principal antes de insertar el valor.

Para invalidar los valores de inserción, el parámetro Flags debe establecerse en EvtFormatMessageEvent, EvtFormatMessageXML o EvtFormatMessageId. Si Flags se establece en EvtFormatMessageId, el identificador de recurso debe identificar la cadena de mensaje del evento.

[in] Flags

Marca que especifica la cadena de mensaje en el evento al que se va a dar formato. Para conocer los valores posibles, consulte la enumeración EVT_FORMAT_MESSAGE_FLAGS .

[in] BufferSize

Tamaño del búfer de búfer , en caracteres.

[in] Buffer

Búfer asignado por el autor de la llamada que recibirá la cadena de mensaje con formato. Puede establecer este parámetro en NULL para determinar el tamaño de búfer necesario.

[out] BufferUsed

Tamaño, en caracteres del búfer asignado por el autor de la llamada que usó la función o el tamaño de búfer necesario si se produce un error en la función ERROR_INSUFFICIENT_BUFFER.

Valor devuelto

Código o valor devuelto Descripción
TRUE
La función se ha realizado correctamente.
FALSE
Error en la función. Llame a la función GetLastError para obtener el código de error.

Comentarios

Cuando el servicio intenta buscar un mensaje para un evento, el servicio busca en los recursos de la tabla de mensajes del publicador indicados por el parámetro PublisherMetadata . Una vez encontrado el identificador del mensaje, se usan los siguientes algoritmos de búsqueda.

Para los mensajes de eventos:

  1. Busque el archivo especificado en el atributo messageFileName del elemento provider .
  2. Si no se encuentra, los mensajes del sistema de búsqueda.
Para los atributos Level, Opcode y Keyword del elemento event :
  1. Busque los recursos del proveedor winmeta.
  2. Busque el archivo especificado en el atributo messageFileName del elemento provider .
Para el atributo Task del elemento de evento :
  1. Busque el archivo especificado en el atributo messageFileName del elemento provider .
  2. Si no se encuentra, busque los recursos del proveedor winmeta.
Para los parámetros localizables a los que se hace referencia como %%n (donde n es el identificador del mensaje) en el mensaje de evento:
  1. Buscar archivos enumerados en el atributo parameterFileName del elemento provider de izquierda a derecha.
  2. Si no se encuentra, los mensajes del sistema de búsqueda.

Ejemplos

Para obtener un ejemplo en el que se muestra cómo usar esta función, vea Aplicar formato a los mensajes de eventos y obtener los metadatos de un proveedor.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winevt.h
Library Wevtapi.lib
Archivo DLL Wevtapi.dll

Consulte también

FormatMessage