Symbian3/SDK/Source/GUID-C135B8D8-DA5A-5852-9C2D-18622404FE99.dita
changeset 0 89d6a7a84779
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C135B8D8-DA5A-5852-9C2D-18622404FE99.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?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>
\ No newline at end of file