class RHandleBase |
A handle to an object.
The class encapsulates the basic behaviour of a handle, hiding the handle-number which identifies the object which the handle represents.
The class is abstract in the sense that a RHandleBase object is never explicitly instantiated. It is always a base class to a concrete handle class; for example, RSemaphore , RThread , RProcess , RCriticalSection etc.
Public Member Functions | |
---|---|
RHandleBase () | |
IMPORT_C TUint | Attributes () |
IMPORT_C TInt | BTraceId () |
IMPORT_C void | Close () |
void | DoExtendedClose () |
IMPORT_C TInt | Duplicate (const RThread &, TOwnerType ) |
IMPORT_C TFullName | FullName () |
IMPORT_C void | FullName ( TDes &) |
TInt | Handle () |
IMPORT_C void | HandleInfo ( THandleInfo *) |
IMPORT_C TName | Name () |
IMPORT_C void | NotifyDestruction ( TRequestStatus &) |
void | SetHandle ( TInt ) |
IMPORT_C void | SetHandleNC ( TInt ) |
TInt | SetReturnedHandle ( TInt ) |
Protected Member Functions | |
---|---|
RHandleBase ( TInt ) | |
IMPORT_C TInt | Open (const TFindHandleBase &, TOwnerType ) |
TInt | OpenByName (const TDesC &, TOwnerType , TInt ) |
TInt | SetReturnedHandle ( TInt , RHandleBase &) |
Private Member Functions | |
---|---|
void | DoExtendedCloseL () |
Public Member Enumerations | |
---|---|
enum | TAttributes { EReadAccess = 0x1, EWriteAccess = 0x2, EDirectReadAccess = 0x4, EDirectWriteAccess = 0x8 } |
Protected Attributes | |
---|---|
TInt | iHandle |
RHandleBase | ( | TInt | aHandle | ) | [protected, inline] |
Copy constructor.
It constructs this handle from an existing one. Specifically, the handle-number encapsulated by the specified handle is copied to this handle.
TInt aHandle | The existing handle to be copied. |
IMPORT_C void | Close | ( | ) |
Closes the handle.
This has the effect of closing the associated kernel side object.
As the associated object is a reference counting object, it is destroyed if there are no other open references to it.
IMPORT_C TInt | Duplicate | ( | const RThread & | aSrc, |
TOwnerType | aType = EOwnerProcess | |||
) |
Creates a valid handle to the kernel object for which the specified thread already has a handle.
The function assumes that this handle has been copy constructed from an existing handle (or the handle-number has been explicitly copied through calls to Handle() and SetHandle() ).
By default, any thread in the process can use this handle to access the kernel side object that the handle represents. However, specifying EOwnerThread as the second parameter to this function, means that only the creating thread can use this handle to access the kernel side object; any other thread in this process that wants to access the kernel side object must, again, duplicate this handle.
const RThread & aSrc | A reference to the thread containing the handle which is to be duplicated for this thread. |
TOwnerType aType = EOwnerProcess | An enumeration whose enumerators define the ownership of this handle. If not explicitly specified, EOwnerProcess is taken as default. |
IMPORT_C TFullName | FullName | ( | ) | const |
Gets the full name of the handle.
Note: This method is stack consuming (it takes 512 bytes on stack to execute). For an alternative way to obtain the full name of the object, see RHandleBase::FullName(TDes& aName) const .
IMPORT_C void | FullName | ( | TDes & | aName | ) | const |
Gets the full name of the handle.
TDes & aName | On return, contains the full name of the handle. |
TInt | Handle | ( | ) | const [inline] |
Retrieves the handle-number of the object associated with this handle.
IMPORT_C void | HandleInfo | ( | THandleInfo * | anInfo | ) |
Gets information about the handle.
THandleInfo * anInfo | A pointer to a THandleInfo object supplied by the caller; on return, contains the handle information. |
IMPORT_C void | NotifyDestruction | ( | TRequestStatus & | aStatus | ) |
Queue a notifier to detect destruction of this object
To cancel the notifier, use User::CancelMiscNotifier() .
TRequestStatus & aStatus |
IMPORT_C TInt | Open | ( | const TFindHandleBase & | aHandle, |
TOwnerType | aType | |||
) | [protected] |
Opens a handle to a kernel side object found using a find-handle object.
const TFindHandleBase & aHandle | A find-handle object; an object that is used in searching for kernel side objects. |
TOwnerType aType | An enumeration whose enumerators define the ownership of this handle. If not explicitly specified, EOwnerProcess is taken as default, and ownership is vested in the current process. Ownership can be vested in the current thread by passing the EOwnerThread enumerator. |
TInt | OpenByName | ( | const TDesC & | aName, |
TOwnerType | aOwnerType, | |||
TInt | aObjectType | |||
) | [protected] |
Implementation for RXxxxx::Open/OpenGlocbal(const TDesC &aName,,TOwnerType aType) functions
const TDesC & aName | |
TOwnerType aOwnerType | |
TInt aObjectType |
void | SetHandle | ( | TInt | aHandle | ) | [inline] |
Sets the handle-number of this handle to the specified value.
TInt aHandle | The handle-number to be set. |
IMPORT_C void | SetHandleNC | ( | TInt | aHandle | ) |
Sets the handle-number of this handle to the specified value, and marks it as not closable.
TInt aHandle | The handle-number to be set. |
TInt | SetReturnedHandle | ( | TInt | aHandleOrError | ) | [inline] |
Sets the handle-number of this handle to the specified value.
The function can take a (zero or positive) handle-number, or a (negative) error number.
If aHandleOrError represents a handle-number, then the handle-number of this handle is set to that value. If aHandleOrError represents an error number, then the handle-number of this handle is set to zero and the negative value is returned.
TInt aHandleOrError | A handle-number, if zero or positive; an error value, if negative. |
TInt | SetReturnedHandle | ( | TInt | aHandleOrError, |
RHandleBase & | aHandle | |||
) | [protected, static] |
TInt aHandleOrError | |
RHandleBase & aHandle |
Read/Write attributes for the handle.
EReadAccess = 0x1 | |
EWriteAccess = 0x2 | |
EDirectReadAccess = 0x4 | |
EDirectWriteAccess = 0x8 |
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.