TraceLoggingSocketAddress macro (traceloggingprovider.h)

TraceLogging wrapper macro that adds a field with a socket address to the event.


void TraceLoggingSocketAddress(
  [in]            pValue,
  [in]            cbValue,
  [in, optional]  __VA_ARGS__


[in] pValue

A pointer to a sockaddr structure.

[in] cbValue

The size, in bytes, of the value pointed to by the pValue parameter.


The amount of data needed for a sockaddr field varies depending on the type of address. If the data is stored in a union variable, be sure to set the cbValue parameter to the size of the correct union member (or to the size of the union) to avoid truncating the data.

[in, optional] __VA_ARGS__

Optional name, description, and tags parameters for the field definition.

TraceLoggingSocketAddress can be specified with 2, 3, 4, or 5 parameters. If a parameter is not specified, a default will be used. For example, TraceLoggingSocketAddress(&x.sockAddr, sizeof(x.sockAddr)) is equivalent to TraceLoggingSocketAddress(&x.sockAddr, sizeof(x.sockAddr), "&x.sockAddr", "", 0).

  • [in, optional] name

    The name to use for the event field. If provided, the name parameter must be a string literal (not a variable) and must not contain any '\0' characters. If not provided, the event field name will be based on pValue.

  • [in, optional] description

    The description of the event field's value. If provided, the description parameter must be a string literal and will be included in the PDB.

  • [in, optional] tags

    A compile-time constant integer value. The low 28 bits of the value will be included in the field's metadata. The semantics of this value are defined by the event consumer. During event processing, this value can be retrieved from the EVENT_PROPERTY_INFO Tags field.

Return value



TraceLoggingSocketAddress(pValue, cbValue, ...) can be used as a parameter to an invocation of a TraceLoggingWrite macro. Each TraceLoggingSocketAddress parameter adds one field to the event.

The value may be any Windows sockaddr type, e.g. SOCKADDR, SOCKADDR_IN, SOCKADDR_IN6, SOCKADDR_STORAGE, etc. The event will record the raw binary data and the data size. The event decoder will use the sa_family field to determine the actual type of the socket address.


Not all decoders will support all sockaddr family types. If an unsupported sockaddr is encountered, the decoder might decode the field as raw binary data instead of formatting it as an address.


Minimum supported client Windows Vista [desktop apps | UWP apps]
Minimum supported server Windows Server 2008 [desktop apps | UWP apps]
Target Platform Windows
Header traceloggingprovider.h

See also


TraceLogging wrapper macros