EXPORTS Module Definition Statement
| Syntax: |
Parameters: |
EXPORTS
[enm=] inm [@ord[keywrd]]
[parms]
EXPORTS
enm [=inm] [@ord[keywrd]] [pwrds]
|
- Entry name
- Internal name for function
- Ordinal position of function
- DECORATED|CONSTANT
- Size of function's parameters
|
Use the EXPORT statement when you are creating a dynamic link
library to define the names and attributes of data and functions
exported from the DLL, and of functions that run with I/O
hardware privilege.
Give export definitions for functions and data in your DLL
that you want to make available to other .EXE or .DLL files. Data
and functions that are not exported can only be accessed
within your DLL, and cannot be accessed by other .EXE or .DLL
files.
The EXPORTS keyword marks the beginning of the export
definitions. Enter each definition on a separate line. You can
provide the following information for each export:
-
- enm
- The entry name of the data construct or function, which
is the name other files use to access it. Always provide
an entry name for each export. It is strongly recommended
that you decorate each entry name, to ensure that the
correct function is linked in.
- inm
- The internal name of the data construct or function,
which is its actual name as it appears within
the DLL. If specified, the internal name must be
decorated. If you do not specify an internal name, the
linker assumes it is the same as enm.
- ord
- The data construct or function's ordinal position in the
module definition table. If you provide the ordinal
position, the data construct or function can be
referenced either by its entry name or by the ordinal. It
is faster to access by ordinal positions, and may save
space.
keywrd
- You can specify one of the following two values.
DECORATED is the default.
-
- DECORATED
- The name should be left as-is. No decoration is
applied to the function name.
- CONSTANT
- Indicates that the export entity is a variable,
not a function.
You cannot specify both values.
keywrd
- RESIDENTNAME
Indicates that you want the data construct or
function's name kept resident in memory at all times. You
only need to specify RESIDENTNAME if you gave an ordinal
position in ord. When a data construct or function does
not have an ordinal position defined, OS/2 keeps the name
of the exported data construct or function resident in
memory by default.
NONAME
Indicates that you want the data construct or
function to always be referenced by its ordinal number.
If you specify NONAME, the data construct or function
cannot be referenced by name: it can only be referenced
by ordinal number.
You cannot specify both values.
parms
- The total size of the function's parameters, as measured
in words (bytes divided by two). This field is required
only if the function executes with I/O privilege. When a
function with I/O privilege is called, Windows consults parms
to determine how many words to copy from the caller's
stack to the stack of the I/O-privileged function.
pwrds
- The total size of the function's parameters, as measured
in words
(bytes divided by two). This field is required only if
the function executes with I/O privilege. When a function
with I/O privilege is called , OS/2 consults pwrds to
determine how many words to copy from the caller's stack
to the stack of the I/O-privileged function.
Example Export Statement
The following example defines three exported functions:
- SampleRead
- StringIn
- CharTest
EXPORTS
?SampleRead = ?read2bin @8
?StringIn = ?str1 @4
?CharTest 6
The first two functions can be accessed either by their
exported names or by an ordinal number. Note that in the module's
own source code, these functions are actually defined as read2bin and str1, respectively.
The last function runs with I/O privilege, and so has parms (the total size of
the parameters) defined for it as six words.

Summary of Module Definition Statements