Adaptation/GUID-DB441DFF-0075-5122-A2EB-A6EF76375D71.dita
author Graeme Price <GRAEME.PRICE@NOKIA.COM>
Fri, 15 Oct 2010 14:32:18 +0100
changeset 15 307f4279f433
permissions -rw-r--r--
Initial contribution of the Adaptation Documentation.

<?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-DB441DFF-0075-5122-A2EB-A6EF76375D71" xml:lang="en"><title> APIs affected by the platsecprocessisolation keyword</title><shortdesc>Certain legacy APIs are insecure. Using the <codeph>platsecprocessisolation</codeph> keyword affects whether those APIs are allowed.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>Each Symbian platform release may include APIs, which are insecure.
These APIs are inherited from earlier versions of the OS, which are
based on EKA1 kernel. You may choose to allow or not allow such APIs
using the <xref href="GUID-43852F38-4841-5E6F-927B-A38ED4424F0C.dita#GUID-43852F38-4841-5E6F-927B-A38ED4424F0C/GUID-B5EE7071-532B-591B-904B-93108A42D939">platsecprocessisolation</xref> Obey file keyword. The following is
a list of APIs, which are affected by <xref href="GUID-43852F38-4841-5E6F-927B-A38ED4424F0C.dita#GUID-43852F38-4841-5E6F-927B-A38ED4424F0C/GUID-B5EE7071-532B-591B-904B-93108A42D939">platsecprocessisolation</xref> keyword. </p>
<p> <b>Note</b>: The list also states whether the API can be hidden
at build time by defining the <codeph>__SECURE_API__</codeph> macro. </p>
<table id="GUID-E864D522-8783-5858-BA8F-FBD36DCB85EC">
<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/>
<colspec colname="col2"/>
<tbody>
<row>
<entry><p> <b>API</b>  </p> </entry>
<entry><p> <b>Restriction</b>  </p> </entry>
<entry><p> <b>Hidden by __SECURE_API__ macro ?</b>  </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Kill(TInt aReason)</codeph>  </p> </entry>
<entry><p>Not allowed on threads in a different process. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Terminate(TInt aReason)</codeph>  </p> </entry>
<entry><p>Not allowed on threads in a different proces. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Panic(const TDesC&amp; aCategory,TInt
            aReason)</codeph>  </p> </entry>
<entry><p>Not allowed on threads in a different process. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Suspend()</codeph>  </p> </entry>
<entry><p>Not allowed on threads in a different process. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Resume()</codeph>  </p> </entry>
<entry><p>Not allowed on threads in a different process. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::SetPriority(TThreadPriority aPriority)</codeph>  </p> </entry>
<entry><p>Not allowed on threads in a different process. (Unless the
process has enabled PriorityControl then it's priority can be changed
between Foreground and Background.) </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::RequestComplete(TRequestStatus*&amp; aStatus,
TInt             aReason)</codeph>  </p> </entry>
<entry><p>Not allowed on threads in a different process. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Heap()</codeph>  </p> </entry>
<entry><p>Removed. Not allowed on threads in a different process. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::SetProcessPriority(TProcessPriority  
          aPriority)</codeph>  </p> </entry>
<entry><p>Deprecated. Not allowed on threads in a different process. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Protected()</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::SetProtected(TBool aState)</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-94182E2E-2CDD-3204-B2C1-18D722A14400"><apiname>User::SetCritical()</apiname></xref> instead. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::System()</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-518F09CB-9E69-301D-B181-6BDEAF7D3F77"><apiname>User::Critical()</apiname></xref> instead. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::SetSystem(TBool aState)</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-94182E2E-2CDD-3204-B2C1-18D722A14400"><apiname>User::SetCritical()</apiname></xref> instead.
Not allowed on threads in a different process. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::GetDesLength(const TAny *aPtr)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::GetDesMaxLength(const TAny *aPtr)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::ReadL(const TAny* aPtr, TDes8&amp; aBuf,
TInt             anOffset)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::ReadL(const TAny* aPtr, TDes16&amp; aBuf,
TInt             anOffset)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::WriteL(const TAny* aPtr, const TDesC8&amp;
aBuf,             TInt anOffset)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::WriteL(const TAny* aPtr, const TDesC16&amp;
aBuf,             TInt anOffset)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Rename(const TDesC&amp; aName)</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-7B587954-D211-328B-8868-5196C0ADE5D6"><apiname>User::RenameThread()</apiname></xref> instead.
Not allowed on threads in a different process </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::ExceptionHandler()</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-E11E87FD-AFA4-353F-887B-EF36154E4B4E"><apiname>User::ExceptionHandler()</apiname></xref> instead. Can only be called to get the handler for the current thread. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::SetExceptionHandler(TExceptionHandler
            aHandler,TUint32 aMask)</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-FDB3FF0D-705D-3EFE-9666-F26F7E390D54"><apiname>User::SetExceptionHandler()</apiname></xref> instead. Can only be called to set the handler for the current thread. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::ModifyExceptionMask(TUint32 aClearMask,
TUint32             aSetMask)</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-77B2CCE3-B8FB-331A-9E61-15B2040CEC70"><apiname>User::ModifyExceptionMask()</apiname></xref> instead. Can only be called to modify the exception mask for the
current thread. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::RaiseException(TExcType aType) </codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-6AB971F1-EE72-38E9-AA4A-9E0D8FACD4FE"><apiname>User::RaiseException()</apiname></xref> instead.
Can only be called to raise an exception on the current thread. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::IsExceptionHandled(TExcType aType) </codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-3016380F-1101-395E-AEC8-1A1BA8DF3914"><apiname>User::IsExceptionHandled()</apiname></xref> instead. Can only be called to query the current thread. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Create(const TDesC&amp; aName,TThreadFunction
            aFunction,TInt aStackSize,TAny* aPtr,RLibrary* aLibrary,RHeap*
aHeap, TInt             aHeapMinSize,TInt aHeapMaxSize,TOwnerType
aType)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::Kill(TInt aReason)</codeph>  </p> </entry>
<entry><p>Unless PowerMgmt capabilility is held this can only allowed
to be called by the process itself, or by the process which created
it (if it has not yet been resumed). </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::Terminate(TInt aReason)</codeph>  </p> </entry>
<entry><p>Unless PowerMgmt capabilility is held this can only allowed
to be called by the process itself or by the process which created
it (if it has not yet been resumed). </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::Panic(const TDesC&amp; aCategory,TInt
            aReason)</codeph>  </p> </entry>
<entry><p>Unless PowerMgmt capabilility is held this can only allowed
to be called by the process itself or by the process which created
it (if it has not yet been resumed). </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::SetType(const TUidType&amp; aType) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::Resume() </codeph>  </p> </entry>
<entry><p>Can only be called by the process which created the process
to be resumed. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::CommandLineLength()</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-6791564A-717D-3FD7-873D-BAD51DD98E4F"><apiname>User::CommandLineLength()</apiname></xref> instead. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::CommandLine(TDes&amp; aCommand)S</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-26212880-9DD8-3D5A-BEA9-AD79D72F6224"><apiname>User::CommandLine()</apiname></xref> instead. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::SetPriority(TProcessPriority aPriority)</codeph>  </p> </entry>
<entry><p>Can only be called by a process to change it's own priority,
or by the process which created the process having it's priority changed
if it hasn't yet been resumed. Iff a process has enabled PriorityControl
then it's priority can be changed between Foreground and Background. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::Protected()</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-59C2CE5A-75F9-3D36-B801-2EB6AB08C77F"><apiname>User::ProcessCritical()</apiname></xref> instead. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::SetProtected(TBool aState)</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-E2FD7D21-83EE-3EB5-8516-5ABCE7976853"><apiname>User::ProcessSetCritical()</apiname></xref> instead. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::System()</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-59C2CE5A-75F9-3D36-B801-2EB6AB08C77F"><apiname>User::ProcessCritical()</apiname></xref> instead. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::SetSystem(TBool aState)</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-E2FD7D21-83EE-3EB5-8516-5ABCE7976853"><apiname>User::ProcessSetCritical()</apiname></xref> instead. Can only be used on the current process. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::SetJustInTime(TBool aState)</codeph>  </p> </entry>
<entry><p>Can only be called by a process to change it's own JustInTime
state or by the process which created the process having it's JustInTime
state changed if it hasn't yet been resumed. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::Owner(RProcess&amp; aOwner)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::SetOwner(const RProcess&amp; aProcess) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::Rename(const TDesC&amp; aName)</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-F2781607-FD9A-3CCA-BB0B-3ADA6C993E33"><apiname>User::RenameProcess()</apiname></xref> instead.
Only allowed for a process renaming itself. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessagePtr2::Read(TInt aParam,TDes8&amp; aDes,TInt
            aOffset)O</codeph>  </p> </entry>
<entry><p>The client descriptor refered to by <codeph>aParam</codeph> must be a <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref> (not a <codeph>TDesC16</codeph>). Failure is indicated by a return code of <codeph>KErrBadDescriptor</codeph>. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessagePtr2::Read(TInt aParam,TDes16&amp; aDes,TInt
            aOffset)</codeph>  </p> </entry>
<entry><p>The client descriptor refered to by <codeph>aParam</codeph> must be a <codeph>TDesC16</codeph> (not a <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref>). Failure is indicated by a return code of <codeph>KErrBadDescriptor</codeph>. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessagePtr2::Write(TInt aParam,const TDesC8&amp;
aDes,TInt             aOffset)</codeph>  </p> </entry>
<entry><p>The client descriptor refered to by <codeph>aParam</codeph> must be a <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes8</apiname></xref> (not a <codeph>TDes16</codeph>). Failure is indicated by a return code of <codeph>KErrBadDescriptor</codeph>. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessagePtr2::Write(TInt aParam,const TDesC16&amp;
aDes,TInt             aOffset)</codeph>  </p> </entry>
<entry><p>The client descriptor refered to by <codeph>aParam</codeph> must be a <codeph>TDes16</codeph> (not a <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes8</apiname></xref>). Failure is indicated by a return code of <codeph>KErrBadDescriptor</codeph>. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessagePtr2::SetProcessPriority(TProcessPriority
            aPriority)</codeph>  </p> </entry>
<entry><p>Client must have enabled priority control with <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-4A8EA8E2-9493-3CCC-BFAA-7EA10D2216DB"><apiname>User::SetPriorityControl()</apiname></xref>. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessage::ReadL(const TAny* aPtr,TDes8&amp; aDes) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessage::ReadL(const TAny* aPtr,TDes8&amp; aDes,TInt
            anOffset)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessage::ReadL(const TAny* aPtr,TDes16&amp; aDes)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessage::ReadL(const TAny* aPtr,TDes16&amp; aDes,TInt
            anOffset)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessage::WriteL(const TAny* aPtr,const TDesC8&amp;
            aDes)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessage::WriteL(const TAny* aPtr,const TDesC8&amp;
aDes,TInt             anOffset)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessage::WriteL(const TAny* aPtr,const TDesC16&amp;
            aDes)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessage::WriteL(const TAny* aPtr,const TDesC16&amp;
            aDes,TInt anOffset)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessage::RMessage(const RMessagePtr2&amp; aPtr) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RMessage (all other methods)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>TFindChunk::Next(TFullName&amp; aResult)</codeph>  </p> </entry>
<entry><p>Can't find objects without a name. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>TFindLogicalDevice::Next(TFullName&amp; aResult) </codeph>  </p> </entry>
<entry><p>Can't find objects without a name. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>TFindPhysicalDevice::Next(TFullName&amp; aResult) </codeph>  </p> </entry>
<entry><p>Can't find objects without a name. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>TFindLibrary::Next(TFullName&amp; aResult)</codeph>  </p> </entry>
<entry><p>Can't find objects without a name </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>TFindServer::Next(TFullName&amp; aResult)</codeph>  </p> </entry>
<entry><p>Can't find objects without a name. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>TFindMutex::Next(TFullName&amp; aResult)</codeph>  </p> </entry>
<entry><p>Can't find objects without a name. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>TFindProcess::Next(TFullName&amp; aResult)</codeph>  </p> </entry>
<entry><p>Can't find objects without a name. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>TFindSemaphore::Next(TFullName&amp; aResult) </codeph>  </p> </entry>
<entry><p>Can't find objects without a name. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>TFindThread::Next(TFullName&amp; aResult)</codeph>  </p> </entry>
<entry><p>Can't find objects without a name. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RChunk::OpenGlobal(const TDesC&amp; aName,TBool
            isReadOnly,TOwnerType aType)</codeph>  </p> </entry>
<entry><p>Can't open objects without a name or objects that are not
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RDevice::Open(const TDesC&amp; aName,TOwnerType
aType)</codeph> </p> </entry>
<entry><p>Can't open objects without a name or objects that are not
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RMutex::OpenGlobal(const TDesC&amp; aName,TOwnerType
            aType)</codeph>  </p> </entry>
<entry><p>Can't open objects without a name or objects that are not
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RCondVar::OpenGlobal(const TDesC&amp; aName, TOwnerType
            aType)</codeph>  </p> </entry>
<entry><p>Can't open objects without a name or objects that are not
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RSemaphore::OpenGlobal(const TDesC&amp; aName,TOwnerType
            aType)</codeph>  </p> </entry>
<entry><p>Can't open objects without a name or objects that are not
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::Open(const TDesC&amp; aName,TOwnerType
            aType)</codeph>  </p> </entry>
<entry><p>Can't open objects without a name or objects that are not
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Open(const TDesC&amp; aName,TOwnerType
aType)             </codeph>  </p> </entry>
<entry><p>Can't open objects without a name or objects that are not
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RMsgQueueBase::OpenGlobal(const TDesC&amp; aName,
TOwnerType             aType)</codeph>  </p> </entry>
<entry><p>Can't open objects without a name or objects that are not
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RChunk::Duplicate(const RThread&amp; aSrc,TOwnerType
            aType=EOwnerProcess)</codeph>  </p> </entry>
<entry><p>If the handle being duplicated belongs to a different process
then it can't be duplicated if the object doesn't have a name or isn't
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RDevice::Duplicate(const RThread&amp; aSrc,TOwnerType
            aType=EOwnerProcess)</codeph>  </p> </entry>
<entry><p>If the handle being duplicated belongs to a different process
then it can't be duplicated if the object doesn't have a name or isn't
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RMutex::Duplicate(const RThread&amp; aSrc,TOwnerType
            aType=EOwnerProcess)</codeph>  </p> </entry>
<entry><p>If the handle being duplicated belongs to a different process
then it can't be duplicated if the object doesn't have a name or isn't
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RCondVar::Duplicate(const RThread&amp; aSrc,TOwnerType
            aType=EOwnerProcess)</codeph>  </p> </entry>
<entry><p>If the handle being duplicated belongs to a different process
then it can't be duplicated if the object doesn't have a name or isn't
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RSemaphore::Duplicate(const RThread&amp; aSrc,TOwnerType
            aType=EOwnerProcess)</codeph>  </p> </entry>
<entry><p>If the handle being duplicated belongs to a different process
then it can't be duplicated if the object doesn't have a name or isn't
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::Duplicate(const RThread&amp; aSrc,TOwnerType
            aType=EOwnerProcess)</codeph>  </p> </entry>
<entry><p>If the handle being duplicated belongs to a different process
then it can't be duplicated if the object doesn't have a name or isn't
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Duplicate(const RThread&amp; aSrc,TOwnerType
            aType=EOwnerProcess)</codeph>  </p> </entry>
<entry><p>If the handle being duplicated belongs to a different process
then it can't be duplicated if the object doesn't have a name or isn't
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RMsgQueueBase::Duplicate(const RThread&amp; aSrc,TOwnerType
            aType=EOwnerProcess)</codeph>  </p> </entry>
<entry><p>If the handle being duplicated belongs to a different process
then it can't be duplicated if the object doesn't have a name or isn't
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::Open(TThreadId aID, TOwnerType       
     aType=EOwnerProcess)</codeph>  </p> </entry>
<entry><p>Can't open objects without a name. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>RHandleBase::Open(const TFindHandleBase&amp;  
          aFindHandle,TOwnerType aType)</codeph>  </p> </entry>
<entry><p>Can't open objects without a name or those which aren't
global. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::CaptureEventHook()</codeph>  </p> </entry>
<entry><p>Can only be called by the Window Server process. </p> </entry>
<entry><p>No </p> </entry>
</row>
<row>
<entry><p> <codeph>class CSharableSession</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class CSession</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class CServer </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class RServer</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RSessionBase::Share(TAttachMode             aAttachMode=EExplicitAttach)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RSessionBase::Attach()</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RSessionBase::Send(TInt aFunction,TAny* aPtr) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RSessionBase::SendReceive(TInt aFunction,TAny*
            aPtr,TRequestStatus&amp; aStatus)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RSessionBase::SendReceive(TInt aFunction,TAny*
aPtr)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RSubSessionBase::CreateSubSession(RSessionBase&amp;
            aSession,TInt aFunction,const TAny* aPtr)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RSubSessionBase::Send(TInt aFunction,const TAny*
aPtr)</codeph> </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RSubSessionBase::SendReceive(TInt aFunction,const
TAny*             aPtr,TRequestStatus&amp; aStatus)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RSubSessionBase::SendReceive(TInt aFunction,const
TAny*             aPtr)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::DllGlobalAlloc(TInt aHandle,TInt aSize) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::DllGlobalAllocated(TInt aHandle) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::DllGlobalRead(TInt aHandle,TInt aPos,TInt
            aLength,TDes8&amp; aDes)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::DllGlobalWrite(TInt aHandle,TInt aPos,const
            TDesC8&amp; aDes)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>Dll::GlobalAlloc(TInt aSize)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>Dll::GlobalAllocated()</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>Dll::GlobalRead(TInt aPos, TInt aLength, TDes8&amp;
            aDes)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>Dll::GlobalWrite(TInt aPos,const TDesC8&amp; aDes) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>TBusLocalDrive::Lock(TMediaPassword&amp; aOldPassword,
            TMediaPassword&amp; aNewPassword, TBool aStorePassword)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class CSecurityEncryptBase</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class CSecurityDecryptBase</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class CSecurityBase </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class CBoundedSecurityBase</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class Security</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RBusLogicalChannel::DoCreate(const TDesC&amp; aDevice,const
            TVersion&amp; aVer,const TDesC* aChan,TInt aUnit,const
TDesC* aDriver,const             TDesC8* anInfo,TOwnerType aType=EOwnerProcess)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RHeap::Adjust(TAny* aCell,TInt anOffset,TInt aDelta)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RHeap::AdjustL(TAny* aCell,TInt anOffset,TInt aDelta)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RHeap::FreeAll()</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class THeapWalk</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>enum TDllReason </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class RDebug </codeph>  </p> </entry>
<entry><p>) Removed. (Apart from Printf functions </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class TFindLogicalChannel</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>Rdevice::IsAvailable(TInt aUnit, const TDesC* 
           aPhysicalDevice, const TDesC16* anInfo)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RLibrary::EntryPoint()</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RLibrary::DllRefTable()</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RThread::GetRamSizes(TInt&amp; aHeapSize,TInt&amp;
            aStackSize)</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-699F8282-62EF-3F13-85DC-5C0F7910A43D"><apiname>RThread::StackInfo()</apiname></xref> instead. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RProcess::GetRamSizes(TInt&amp; aCodeSize, TInt&amp;
            aConstDataSize, TInt&amp; anInitialisedDataSize, TInt&amp;
            anUninitialisedDataSize)</codeph>  </p> </entry>
<entry><p>Removed. Use <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-7E02F11A-8E57-36BB-802B-2CF31BC707B2"><apiname>RThread::GetMemoryInfo()</apiname></xref> instead. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class TNotifyInfo</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>class Password</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>User::Adjust(TAny* aCell,TInt aOffset,TInt aDelta)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>User::AdjustL(TAny* aCell,TInt aOffset,TInt aDelta)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>User::__DbgMarkStart(RHeap::TDbgHeapType aHeapType)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>User::__DbgMarkCheck(RHeap::TDbgHeapType aHeapType,TBool
            aCountAll,TInt aCount,const TDesC8&amp; aFileName,TInt
aLineNum)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>User::__DbgMarkEnd(RHeap::TDbgHeapType aHeapType,TInt
            aCount)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>User::__DbgSetAllocFail(RHeap::TDbgHeapType   
         aHeapType,RHeap::TAllocFail aType,TInt aRate)</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::InitRegisterCallback(TCallBack, TInt) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::ChangeLocale(RLibrary aLibrary) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::DllInitialiseData(TInt aHandle) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::DllFreeData(TInt aHandle) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::WsRegisterThread(TThreadFunction) </codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>UserSvr::ServerStarted()</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RMutex::Count()</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
<row>
<entry><p> <codeph>RSemaphore::Count()</codeph>  </p> </entry>
<entry><p>Removed. </p> </entry>
<entry><p>Yes </p> </entry>
</row>
</tbody>
</tgroup>
</table></conbody></concept>