2.3.4.2.3 EmfMetafileHeaderExtension2 Record

The EmfMetafileHeaderExtension2 record is the header record used in the second extension to EMF metafiles. Following the EmfHeaderExtension2 field, the remaining fields are optional and can be present in any order.

Fields not specified in this section are specified in section 2.3.4 or 2.3.4.2.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Type

Size

EmfHeader (80 bytes)

...

...

...

EmfHeaderExtension1

...

...

EmfHeaderExtension2

...

EmfDescriptionBuffer (variable, optional)

...

EmfPixelFormatBuffer (variable, optional)

...

EmfHeaderExtension1 (12 bytes): A HeaderExtension1 object (section 2.2.10), which specifies additional information about the image in the metafile.

EmfHeaderExtension2 (8 bytes): A HeaderExtension2 object (section 2.2.11), which specifies additional information about the image in the metafile.

EmfDescriptionBuffer (variable, optional): An array of bytes that contains the EMF description string, which is not required to be contiguous with the fixed portion of the EmfMetafileHeaderExtension2 record. Thus, the undefined space field in this buffer is optional and MUST be ignored.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

UndefinedSpace1 (variable, optional)

...

EmfDescription (variable)

...

EmfDescription (variable): A null-terminated Unicode UTF16-LE string of arbitrary length and content. Its location in the record and number of characters are specified by the offDescription and nDescription fields, respectively, in EmfHeader. If the value of either field is zero, no description string is present.

EmfPixelFormatBuffer (variable, optional): An array of bytes that contains the EMF pixel format descriptor, which is not required to be contiguous with the fixed portion of the EmfMetafileHeaderExtension2 record or with the EMF description string. Thus, the field in this buffer that is labeled "UndefinedSpace" is optional and MUST be ignored.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

UndefinedSpace2 (variable, optional)

...

EmfPixelFormat (40 bytes)

...

...

...

EmfPixelFormat (40 bytes): A PixelFormatDescriptor object (section 2.2.22) that specifies the last pixel format that was defined when the metafile was recorded. Its size and location in the record are specified by the cbPixelFormat and offPixelFormat fields, respectively, in EmfHeaderExtension1. If the value of either field is zero, no pixel format descriptor is present.

Note: No single structure definition can accurately represent every possible combination of optional fields. Therefore, the implementer is responsible for writing software that determines which fields are present in each metafile, and for unmarshaling the contents of each field appropriately.

The value of the Size field can be used to distinguish between the different EMR_HEADER record types. See the flowchart in section 2.3.4.2 for details.