The resident and non-resident name tables define
the ASCII names and ordinal numbers for exported entries in the module.
In addition the first entry in the resident name table contains the module
name. These tables are used to translate a procedure name string into an
ordinal number by searching for a matching name string. The ordinal number
is used to locate the entry point information in the entry table. The resident
name table is kept resident in system memory while the module is loaded.
It is intended to contain the exported entry point names that are frequently
dynamicaly linked to by name. Non-resident names are not kept in memory
and are read from the EXE file when a dynamic link reference is made. Exported
entry point names that are infrequently dynamicaly linked to by name or
are commonly referenced by ordinal number should be placed in the non-resident
name table. The trade off made for references by name is performance vs
memory usage. Import references by name require these tables to be searched
to obtain the entry point ordinal number. Import references by ordinal
number provide the fastest lookup since the search of these tables is not
required.
Installable File Systems, Physical Device Drivers, and Virtual Device Drivers
are closed after the file is loaded. Any refeference to the non-resident
name table after this time will fail. The strings are CASE SENSITIVE and
are NOT NULL TERMINATED. Each name table entry has the following format
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄ¿
00h ³ LEN ³ ASCII STRING . . . ³ ORDINAL # ³
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÙ
Resident or Non-resident Name Table Entry
LEN = DB String Length. This defines the length of the string in bytes.
A zero length indicates there are no more entries in table. The length of
each ascii name string is limited to 127 characters. The high bit in the
LEN field (bit 7) is defined as an Overload bit. This bit signifies that
additional information is contained in the linear EXE module and will be
used in the future for parameter type checking.
ASCII STRING = DB ASCII String. This is a variable length string with it's
length defined in bytes by the LEN field. The string is case case sensitive
and is not null terminated.
ORDINAL # = DW Ordinal number. The ordinal number in an ordered index into
the entry table for this entry point.
[Back: Resource Table]
[Next: Entry Table]