diff -r 000000000000 -r f0f2b8682603 memana/analyzetoolclient/kerneleventhandler/inc/analyzetoolchannel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/memana/analyzetoolclient/kerneleventhandler/inc/analyzetoolchannel.h Thu Feb 11 15:51:35 2010 +0200 @@ -0,0 +1,212 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: +* +* Description: Declaration of the class DAnalyzeToolChannel +* +*/ + + +#ifndef __ANALYZETOOLCHANNEL_H__ +#define __ANALYZETOOLCHANNEL_H__ + +// INCLUDES +#include +#include +#ifdef __WINSCW__ +#include +#endif // __WINSCW__ + +// FORWARD DECLARATIONS +class DAnalyzeToolEventHandler; + +// CLASS DECLARATION + +/** +* The implementation of the abstract base class for a logical channel. +*/ +class DAnalyzeToolChannel : public DLogicalChannel + { + public: + + /** + * C++ default constructor. + */ + DAnalyzeToolChannel(); + + /** + * Destructor. + */ + ~DAnalyzeToolChannel(); + + protected: // from DLogicalChannel + + /** + * Creates the logical channel. + * @param aUnit A unit of the device. + * @param anInfo A pointer to an explicit 8-bit descriptor containing + extra information for the physical device + * @param aVer The required version of the logical device + * @return TInt Returns KErrNone, if successful + otherwise one of the other system-wide error codes + */ + virtual TInt DoCreate( TInt aUnit, + const TDesC8* anInfo, + const TVersion &aVer ); + + /** + * Handles a client request. + * @param aFunction The requested function. + * @param a1 A 32-bit value passed to the kernel-side. Its meaning + depends on the device driver requirements + * @param a2 A 32-bit value passed to the kernel-side. Its meaning + depends on the device driver requirements + * @return TInt Returns KErrNone, if successful + otherwise one of the other system-wide error codes + */ + virtual TInt DoControl( TInt aFunction, TAny* a1, TAny* a2, TThreadMessage& aMessage ); + + /** + * Processes a message for this logical channel. + * This function is called in the context of a DFC thread. + * @param aMsg The message to process. + */ + virtual void HandleMsg( TMessageBase* aMsg ); + + /** + * Handles a client asynchronous request. + * @param aFunction The requested function. + * @param aStatus Pointer to client TRequestStatus. + * @param a1 A 32-bit value passed to the kernel-side. Its meaning + depends on the device driver requirements + * @param a2 A 32-bit value passed to the kernel-side. Its meaning + depends on the device driver requirements + * @param aMessage Reference to received thread message. + * @return TInt Returns KErrNone, if successful + otherwise one of the other system-wide error codes + */ + virtual TInt DoRequest( TInt aFunction, + TRequestStatus* aStatus, + TAny* a1, + TAny* a2, + TThreadMessage& aMessage ); + + /** + * Cancels outstanding asynchronous request. + */ + virtual void DoCancel(); + + private: + + /** + * Acquires current process information + * @param aProcessInfo Pointer to the TProcessIdentityParams object. + * @return TInt Returns KErrNone, if successful + otherwise one of the other system-wide error codes + */ + TInt GetProcessInfo( TAny* aProcessInfo, TThreadMessage& aMessage ); + + /** + * Acquires codeseg information. + * @param aCodesegInfo Pointer to the TCodesegInfo object. + * @return TInt Returns KErrNone, if successful + otherwise one of the other system-wide error codes + */ + TInt GetCodesegInfo( TAny* aCodesegInfo, TThreadMessage& aMessage ); + + /** + * Acquires library information. + * @param aLibraryInfo Pointer to the TLibraryInfo object. + * @return TInt Returns KErrNone, if successful + otherwise one of the other system-wide error codes + */ + TInt GetLibraryInfo( TAny* aLibraryInfo, TThreadMessage& aMessage ); + + /** + * Acquires information about process main thread RAllocator. + * @param aMainThreadParams Pointer to the TMainThreadParams object. + * @return TInt Returns KErrNone, if successful + otherwise one of the other system-wide error codes + */ + TInt MainThreadAllocator( TAny* aMainThreadParams, + TThreadMessage& aMessage ); + + /** + * Acquires main thread stack address. + * @param aThreadStack Pointer to the TThreadParams object. + * @return TInt Returns KErrNone, if successful + otherwise one of the other system-wide error codes + */ + TInt ThreadStack( TAny* aThreadStack, + TThreadMessage& aMessage ); + + /** + * Acquires information about process global handles. + * @param aProcessHandleInfo Pointer to the TProcessHandleInfo object. + * @return TInt Returns KErrNone, if successful + otherwise one of the other system-wide error codes + */ + TInt GetProcessHandleInfo( TAny* aProcessHandleInfo, + TThreadMessage& aMessage ); + + /** + * Acquires a process's current handle count. + * @param aProcessHandles Pointer to the TATProcessHandles object. + * @return TInt Returns KErrNone, if successful + otherwise one of the other system-wide error codes + */ + TInt GetCurrentHandleCount( TAny* aProcessHandles, + TThreadMessage& aMessage ); + + /** + * Acquires the count of current device driver users. + * @param aClientCount A reference to TInt variable + * @return TInt Returns KErrNone, if successful + * otherwise one of the other system-wide error codes + */ + TInt ClientCount( TAny* aClientCount, + TThreadMessage& aMessage ); + + /** + * Acquires memory model system uses. + * @return TInt Returns KErrNone, if successful + * otherwise one of the other system-wide error codes + */ + TInt GetMemoryModel( TAny* aMemoryModel, + TThreadMessage& aMessage ); + + #ifdef __WINSCW__ + /** + * Gets module dependencies + * @param aModule Module handle + */ + void GetModuleDependencies( HMODULE aModule ); + #endif // __WINSCW__ + + private: //Member variables + + /* Handler which receives kernel events */ + DAnalyzeToolEventHandler* iEventHandler; + + #ifdef __WINSCW__ + /* Code segment array */ + RArray iCodeSeg; + #endif // __WINSCW__ + + /* A DFC queue for communication */ + TDynamicDfcQue* iOwnDfcQ; + + }; + +#endif // #ifndef __ANALYZETOOLCHANNEL_H__ + +// End of File