diff -r 98307c651589 -r c2f44e33b468 perfsrv/memspy/MemSpyClient/src/memspysession.cpp --- a/perfsrv/memspy/MemSpyClient/src/memspysession.cpp Mon Sep 06 15:00:47 2010 +0300 +++ b/perfsrv/memspy/MemSpyClient/src/memspysession.cpp Mon Sep 20 12:20:18 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 );