What is an Ordinal Number?

Updated May 22, 2018

Issue Details

I am trying to fix an error that indicates a particular ordinal number could not be located. What is an ordinal number?

Solution


An ordinal number an identifier for an exported function in a DLL. Each exported function in a DLL has a unique identifier assigned to it - its ordinal number. When you make calls to a Dynamic Link Library (DLL) you can access exported functions by either referencing the function name or ordinal number. Ordinal numbers are sometimes used to allow programmers to change the function names in a DLL and still retain backwards compatibility with previous versions of DLLs.

Some older development tools from the Windows 3.1 era, such as older editions of the Borland compiler, would link to DLLs by ordinal numbers. Most development environments today link by function name. 

There are a couple of possible scenarios for errors that involve ordinal numbers that could not be located.
  1. An older version of the driver is installed on the machine than was used during the development of the program. If a newer version of the driver was used during the development of the program, it may contain newer functions, and therefore ordinal numbers, that older drivers would lack.
  2. A different version of the driver is installed on the machine than was used to develop the program, and the ordinal numbers could have changed. It is possible for ordinal numbers to change between releases if the source code used to create the DLL changed the order of the functions. The ordinal number for a function should not change between releases of our drivers. However, there are some previous issues that have associated CARs, linked below, that indicate that the ordinal numbers have changed at times in our drivers, which was not intended. In this case it may be necessary to install the exact version of the driver on the machine that was used during development.
  3. The driver itself is not installed on the machine, or the installation has somehow become corrupted. In this case, (re)installing the driver should fix the problem. You may want to do a Force Reinstall. 

WAS THIS ARTICLE HELPFUL?

Not Helpful