A polymorphic DLL contains an interface defined by a gate function and an abstract class with at least one virtual function.
The polymorphic DLL exports the gate function at ordinal 1, which typically constructs a concrete class derived from the abstract interface. The virtual function is then called, and the functions of the class are available.
Each type of interface should specify its own UID, which is used as uid2 for the polymorphic DLL.
The function responsible for loading a polymorphic DLL should check that its uid2 corresponds with the expected interface type.
For polymorphic DLLs, the interpretation of uid3 depends on the interface type. uid3 may not be required by all interfaces.
The build process for a polymorphic DLL produces an import library, but it is not used.