To build a device-driver DLL, you must have a module-definition (.DEF) file. In the module-definition file, you must export at least two of the following entry-point functions:
Functions are exported by ordinal, as shown in the following example MSSB16.DEF file:
LIBRARY MSSB16
DESCRIPTION 'wave,aux,mixer:Creative Labs Sound Blaster 16 Driver'
EXETYPE WINDOWS
PROTMODE
CODE MOVEABLE DISCARDABLE LOADONCALL
DATA FIXED SINGLE PRELOAD
SEGMENTS
_TEXT FIXED PRELOAD
WEP_TEXT FIXED PRELOAD
INIT MOVEABLE DISCARDABLE PRELOAD
COMMON MOVEABLE DISCARDABLE PRELOAD
MIXER MOVEABLE DISCARDABLE PRELOAD
WAVE MOVEABLE DISCARDABLE PRELOAD
HEAPSIZE 2048
EXPORTS
WEP @1 RESIDENTNAME
DriverProc @2 RESIDENTNAME
wodMessage @3 RESIDENTNAME
widMessage @4 RESIDENTNAME
auxMessage @5 RESIDENTNAME
mxdMessage @6 RESIDENTNAME
The actual ordinal values you assign to each exported function are not significant, though each must be unique within the DLL. For more information on the entry-point functions listed in this example, see .
The module name line should specify a unique module name for your device driver. Windows will not load two different modules with the same module name. It's a good idea to use the base of your driver filename since, in certain instances, LoadLibrary will assume that to be your module name. For example, the previous fragment used LIBRARY MSSB16.
The module description line in the module-definition file should specify the type of device the driver supports. For example, here is the module description line from the module-definition file for the Sound Blaster driver:
DESCRIPTION 'wave,aux,mixer:Creative Labs Sound Blaster 16 Driver'
The beginning of the module description indicates the driver supports waveform, auxiliary, and mixer devices. Use one of the following device-type names, followed by a colon (:) to indicate the type of device your driver supports. If the driver supports more than one type of device, separate each device-type name with a comma (,).