All files have an associated compound identifier, a TUidType
, comprising three component UIDs that together identify the file. A compound identifier is also commonly known as a UID
type.
For a polymorphic DLL, the first UID component always has the value KDynamicLibraryUidValue
. The second UID component is used to verify that the DLL satisfies the protocol defined by the programming interface. Indeed,
this UID identifies that protocol. The third UID component is used to identify a specific implementation; the use of the third component UID
depends on the protocol.
For a UI application, the second UID component takes the value KAppUidValue
. The third UID component must be defined and must be unique in order to differentiate it from all other applications. In
contrast, a DLL which implements a printer driver does not require a third UID component.
The use of UIDs in DLLs provides a guarantee that the loaded DLL is the correct type. This prevents files which just happen to have the right name from being loaded inadvertently.
A polymorphic interface DLL is loaded dynamically. The handle to the DLL is encapsulated by an RLibrary
object. The Type()
member function of RLibrary
is used to return the DLL's TUidType
from which the individual UID components can be extracted.
KDynamicLibraryUidValue
is defined in e32uid.h
and KAppUidValue
is defined in apadef.h
.