ID Number: Q70934
3.00
WINDOWS
docerr
Summary:
Chapter 10 in the "Microsoft Windows Software Development Kit
Reference" manual discusses module definition (DEF) files. The
information below discusses two areas of that chapter and clarifies
some misconceptions.
More Information:
Each Windows application and dynamic-link library (DLL) must have a
module definition file. The DEF file is used by the linker when it
creates the executable image (EXE or DLL) file. The DEF file specifies
the sizes for the application's stack and heap segments, and the
desired attributes for code and data segments.
The errors in the documentation relate to defining the default
attributes for CODE and DATA segments. The following information uses
the CODE statement and code segments as an example; however, analogous
rules apply to the DATA statement and data segments.
The CODE statement declares segment attributes for all code segments,
not specifically the _TEXT segment, as stated on page 10-2 of the
"Microsoft Windows Software Development Kit Reference" manual.
Microsoft has confirmed this to be a documentation error on page 10-2
of the "Microsoft Windows Software Development Kit Reference" manual.
We will post new information here once this error has been corrected.
Because all code segments acquire the attributes specified in the CODE
statement, the SEGMENTS statement is not required to provide
attributes for other code segments. The CODE statement is required
because Windows does not assign any default attributes to code
segments. The requirement for the SEGMENTS statement can be inferred
from the "Comments" section on page 10-2 of the "Microsoft Windows
Software Development Kit Reference" manual.
Microsoft has confirmed this to be a documentation error on page 10-2
of the "Microsoft Windows Software Development Kit Reference" manual.
We will post new information here once this error has been corrected.
The following is an example of the CODE and SEGMENTS statements for a
standard DEF file:
CODE MOVEABLE PRELOAD DISCARDABLE
SEGMENTS
TEST_TEXT NONDISCARDABLE
OTHER_TEXT LOADONCALL NONDISCARDABLE
In this example, all segments are given the attributes of MOVEABLE,
PRELOAD, and DISCARDABLE. The SEGMENTS statement then overrides some
of the attributes for the TEST_TEXT and OTHER_TEXT segments. The final
attributes are:
Segment Name Attributes
------------ ----------
TEST_TEXT MOVEABLE PRELOAD NONDISCARDABLE
OTHER_TEXT MOVEABLE LOADONCALL NONDISCARDABLE
All others MOVEABLE PRELOAD DISCARDABLE
For more information, see pages 33-42 in the "Microsoft C Reference"
for version 6.0.