Symbian3/SDK/Source/GUID-C135B8D8-DA5A-5852-9C2D-18622404FE99.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Tue, 20 Jul 2010 12:00:49 +0100
changeset 13 48780e181b38
parent 0 89d6a7a84779
permissions -rw-r--r--
Week 28 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 1897 and Bug 1522.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-C135B8D8-DA5A-5852-9C2D-18622404FE99" xml:lang="en"><title>UID Protection</title><shortdesc>Describes the identifiers used in a polymorphic DLL.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>All files have an associated compound identifier, a <xref href="GUID-B6D6B0AD-B15C-339A-8540-40540885089A.dita"><apiname>TUidType</apiname></xref>,
comprising three component UIDs that together identify the file. A compound
identifier is also commonly known as a UID type.</p>
<p>For a polymorphic DLL, the first UID component always has the value <codeph>KDynamicLibraryUidValue</codeph>.
The second UID component is used to verify that the DLL satisfies the protocol
defined by the programming interface. Indeed, this UID <i>identifies</i> that
protocol. The third UID component is used to identify a specific implementation;
the use of the third component UID depends on the protocol.</p>
<p>For a UI application, the second UID component takes the value <codeph>KAppUidValue</codeph>.
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.</p>
<p>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.</p>
<p>A polymorphic interface DLL is loaded dynamically. The handle to the DLL
is encapsulated by an <codeph>RLibrary</codeph> object. The <codeph>Type()</codeph> member
function of <codeph>RLibrary</codeph> is used to return the DLL's <codeph>TUidType</codeph> from
which the individual UID components can be extracted.</p>
<p><codeph>KDynamicLibraryUidValue</codeph> is defined in <filepath>e32uid.h</filepath> and <codeph>KAppUidValue</codeph> is
defined in <filepath>apadef.h</filepath>.</p>
</conbody></concept>