Extended Error Information Body Extension

The Extended Error Information Body Extension conveys extended error information concerning the original root cause of a error back to a caller [that] can deal with it. It is intended that this error information is suitable for displaying information to a human being who is the user; this information is not intended to be the basis for logical decisions in a piece of client code, for doing so couples the client code to the implementation of the server. Rather, client code should act semantically only on the information returned through the interface that it invokes. See also the ISupportErrorInfo, IErrorInfo, and ICreateErrorInfo interfaces.

This extension is identified by the UUID f1f19681-4d2a-11ce-a66a-0020af6e72f4. It is only semantically useful in Response and Fault PDUs.

There are three variations of the error information. The first of these can be used in a local context, where (i) the server knows it can reliably specify a path name to a file that can in fact be understood by the client, and (ii) the server knows the language of interest to the client. This first variation specifies the following members:

Member

Description


wszErrorString

An error string suitable for display to a human user.

_

wszHelpFile

A path to a help file that can give additional information concerning the error.

ulHelpContext

A Help context topic within that Help file.


The second variation is suitable for use in remote situations where one or the other of the requirements of the use of the first variation cannot be upheld. This second variation specifies the following members:

Member

Description


uuidErrorSemantic

A UUID signifying the semantic of the error.

_

ulErrorSemantic

A four-byte quantity that qualifies the error semantic. The semantics of these four bytes are completely determined by the uuidErrorSemantic.

cbData

The size of the data passed in pbData.

pbData

Data associated with the error marshaled as an array of bytes. The interpretation of these bytes is governed by the uuidErrorSemantic.

wszErrorString

An error string suitable for display to a human user. This is in fact of somewhat little use, as the server returning the error can usually only guess as to the appropriate language in which to form this string. However, the ability to pass such as string is provided here as a last resort.

lcidErrorString

The locale context in which the error string, if any, is formed. Locale constants are as in the Microsoft Win32 API.


The third variation allows for extensibility of the error information being passed. It specifies an object reference (an OBJREF). In practice, this reference most always contains a custom marshaled object, though this is not required.