diff -r 516af714ebb4 -r f2950aff7424 perfsrv/memspy/MemSpyClient/src/memspysession.cpp --- a/perfsrv/memspy/MemSpyClient/src/memspysession.cpp Fri Sep 17 08:38:31 2010 +0300 +++ b/perfsrv/memspy/MemSpyClient/src/memspysession.cpp Mon Oct 04 02:45:59 2010 +0300 @@ -31,6 +31,8 @@ #include // ECom #include +// Window groups +#include // IMPLEMENTATION @@ -504,6 +506,29 @@ CleanupStack::PopAndDestroy(buffer); } +EXPORT_C void RMemSpySession::GetWindowGroupsL(RArray &aGroups) + { + TPckgBuf count; + User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetWindowGroupCount, TIpcArgs(&count))); + + TInt requestedCount = count(); + HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyEngineWindowGroupDetails)); + TPtr8 bufferPtr(buffer->Des()); + + User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetWindowGroups, TIpcArgs(&count, &bufferPtr))); + aGroups.Reset(); + + TInt receivedCount = Min(count(), requestedCount); + for(TInt i=0, offset = 0; i data; + data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyEngineWindowGroupDetails)); + aGroups.AppendL(CMemSpyApiWindowGroup::NewLC(data())); + } + CleanupStack::Pop(aGroups.Count()); + CleanupStack::PopAndDestroy(buffer); + } + EXPORT_C void RMemSpySession::DumpKernelHeap() { SendReceive( EMemSpyClientServerOpDumpKernelHeap );