2.2.2 Header Record

The Header record is always the first record of an EMFSPOOL metafile.


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

dwVersion

cjSize

dpszDocName

dpszOutput

extraDataDocName (variable)

...

...

extraDataOutputDevice (variable)

...

...

dwVersion (4 bytes): A 32-bit unsigned integer that specifies the version of EMFSPOOL. This value MUST be 0x00010000.

cjSize (4 bytes): A 32-bit unsigned integer that specifies the size, in bytes, of the header record, including extra data attached. The size of each record in EMFSPOOL MUST be rounded up to a multiple of 32 bits.

dpszDocName (4 bytes): A 32-bit unsigned integer that specifies the offset of the document name from the start of the record (dwVersion field). The document name is stored as a NULL-terminated Unicode string, as specified in [UNICODE], in the extraDataDocName field. If this value is 0x00000000, a document name string SHOULD NOT be present in the header record.

dpszOutput (4 bytes): A 32-bit unsigned integer that specifies the offset of the output device name from the start of the record (dwVersion field). The output device name is stored as a NULL-terminated Unicode string in the extraDataOutputDevice field. If this value is 0x00000000, an output device name string SHOULD NOT be present in the header record.

extraDataDocName (variable): Variable-size storage area for the document name string. This structure MUST be 32-bit aligned.


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

PaddingDocName (variable)

...

...

DocName (variable)

...

...

AlignmentDocName (variable)

...

...

PaddingDocName (variable): An optional array of WORD structures as padding, because the DocName field is not required to immediately follow the dpszOutput field. The values of these structures are indeterminate and MUST be ignored.

DocName (variable): A null-terminated string that specifies the name of the output file, or the name of the printer port.

AlignmentDocName (variable): An optional array of WORD structures to ensure 32-bit alignment. The values of these structures are indeterminate and MUST be ignored.

extraDataOutputDevice (variable): Variable-size storage area for the output device name string. This structure MUST be 32-bit aligned.


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

PaddingOutputDevice (variable)

...

...

OutputDevice (variable)

...

...

AlignmentOutputDevice (variable)

...

...

PaddingOutputDevice (variable): An optional array of WORD structures as padding, because the OutputDevice field is not required to immediately follow the extraDataDocName field. The values of these structures are indeterminate and MUST be ignored.

OutputDevice (variable): A null-terminated string that specifies the name of the output file, or the name of the printer port.

AlignmentOutputDevice (variable): An optional array of WORD structures to ensure 32-bit alignment. The values of these structures are indeterminate and MUST be ignored.