perfsrv/memspy/MemSpyClient/src/memspysession.cpp
changeset 55 f2950aff7424
parent 48 516af714ebb4
child 54 a151135b0cf9
equal deleted inserted replaced
48:516af714ebb4 55:f2950aff7424
    29 #include <memspy/driver/memspydriverenumerationsshared.h>
    29 #include <memspy/driver/memspydriverenumerationsshared.h>
    30 // Servers
    30 // Servers
    31 #include <memspy/engine/memspyserverdata.h>
    31 #include <memspy/engine/memspyserverdata.h>
    32 // ECom
    32 // ECom
    33 #include <memspy/engine/memspyecomdata.h>
    33 #include <memspy/engine/memspyecomdata.h>
       
    34 // Window groups
       
    35 #include <memspy/engine/memspyenginehelperwindowserver.h>
    34 
    36 
    35 // IMPLEMENTATION
    37 // IMPLEMENTATION
    36 
    38 
    37 EXPORT_C RMemSpySession::RMemSpySession()
    39 EXPORT_C RMemSpySession::RMemSpySession()
    38     {
    40     {
   502         }
   504         }
   503     CleanupStack::Pop(aImplementations.Count());
   505     CleanupStack::Pop(aImplementations.Count());
   504     CleanupStack::PopAndDestroy(buffer);
   506     CleanupStack::PopAndDestroy(buffer);
   505     }
   507     }
   506 
   508 
       
   509 EXPORT_C void RMemSpySession::GetWindowGroupsL(RArray<CMemSpyApiWindowGroup*> &aGroups)
       
   510     {
       
   511     TPckgBuf<TInt> count;
       
   512     User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetWindowGroupCount, TIpcArgs(&count)));
       
   513     
       
   514     TInt requestedCount = count();
       
   515     HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyEngineWindowGroupDetails));
       
   516     TPtr8 bufferPtr(buffer->Des());
       
   517     
       
   518     User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetWindowGroups, TIpcArgs(&count, &bufferPtr)));
       
   519     aGroups.Reset();
       
   520     
       
   521     TInt receivedCount = Min(count(), requestedCount);
       
   522     for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyEngineWindowGroupDetails))
       
   523         {
       
   524         TPckgBuf<TMemSpyEngineWindowGroupDetails> data;
       
   525         data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyEngineWindowGroupDetails));
       
   526         aGroups.AppendL(CMemSpyApiWindowGroup::NewLC(data()));
       
   527         }
       
   528     CleanupStack::Pop(aGroups.Count());
       
   529     CleanupStack::PopAndDestroy(buffer);
       
   530     }
       
   531 
   507 EXPORT_C void RMemSpySession::DumpKernelHeap()
   532 EXPORT_C void RMemSpySession::DumpKernelHeap()
   508 	{
   533 	{
   509 	SendReceive( EMemSpyClientServerOpDumpKernelHeap );
   534 	SendReceive( EMemSpyClientServerOpDumpKernelHeap );
   510 	}
   535 	}
   511 
   536