<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx</link><description>Does everyone remember the good old days of DOS when we used to spend our time making more of the 640 KB memory space available for our drivers, programs, TSRs and even Windows? Things like QEMM, HIMEM.SYS and EMM386.EXE bring back fond memories for me.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>MemMaker for the .NET Compact Framework | Microsoft Share Point</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9542074</link><pubDate>Fri, 10 Apr 2009 05:11:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9542074</guid><dc:creator>MemMaker for the .NET Compact Framework | Microsoft Share Point</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://microsoft-sharepoint.simplynetdev.com/memmaker-for-the-net-compact-framework/"&gt;http://microsoft-sharepoint.simplynetdev.com/memmaker-for-the-net-compact-framework/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>.NET CF e gestão de memória virtual – Será esta uma descoberta revolucionária?</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9543788</link><pubDate>Fri, 10 Apr 2009 21:29:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9543788</guid><dc:creator>Alberto Silva</dc:creator><description>&lt;p&gt;Um t&amp;#237;tulo destes seria digno de abertura de um qualquer telejornal nacional! Recebi hoje pelo Newsgator&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9543838</link><pubDate>Fri, 10 Apr 2009 22:02:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9543838</guid><dc:creator>Auri Rahimzadeh</dc:creator><description>&lt;p&gt;Great article!&lt;/p&gt;
&lt;p&gt;Where do we get that Virtual Memory mapper utility? That looks awesome.&lt;/p&gt;
</description></item><item><title>More memory for managed apps.</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9543917</link><pubDate>Fri, 10 Apr 2009 22:58:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9543917</guid><dc:creator>Alex Yakhnin's Blog</dc:creator><description>&lt;p&gt;Check out the Rob's blog post in which describes the technique that can help you to allocate less memory&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9543923</link><pubDate>Fri, 10 Apr 2009 23:00:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9543923</guid><dc:creator>Auri Rahimzadeh</dc:creator><description>&lt;p&gt;Great article!&lt;/p&gt;
&lt;p&gt;Where do we get that Virtual Memory mapper utility? That looks awesome.&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9544926</link><pubDate>Sat, 11 Apr 2009 10:49:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9544926</guid><dc:creator>Alberto Silva - Device App Development MVP</dc:creator><description>&lt;p&gt;Auri,&lt;/p&gt;
&lt;p&gt;The utility Rob has used can be obtained from a CodeProject article:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://www.codeproject.com/KB/mobile/VirtualMemory.aspx"&gt;http://www.codeproject.com/KB/mobile/VirtualMemory.aspx&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9545359</link><pubDate>Sat, 11 Apr 2009 16:18:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9545359</guid><dc:creator>Paul Yao</dc:creator><description>&lt;p&gt;Rob --&lt;/p&gt;
&lt;p&gt;Cool tip!&lt;/p&gt;
&lt;p&gt;I wonder if there is time for me to get a link to your blog into my book. Hmm.&lt;/p&gt;
&lt;p&gt;Best,&lt;/p&gt;
&lt;p&gt;Paul&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9550013</link><pubDate>Wed, 15 Apr 2009 07:27:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9550013</guid><dc:creator>Raffaele Limosani</dc:creator><description>&lt;p&gt;I always knew that managed DLLs are handled by the OS as files and therefore loaded into the LMA (Large Memory Area) instead of wasting my process slot’s virtual memory (see my very first post ever :-), but I’ve never tested this incredibly simple idea… &lt;/p&gt;
&lt;p&gt;Thanks Rob for spreading it out!&lt;/p&gt;
&lt;p&gt;~raffaele&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9553226</link><pubDate>Thu, 16 Apr 2009 20:38:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9553226</guid><dc:creator>Jed</dc:creator><description>&lt;p&gt;This winds up being a nice side effect of creating reusable code - see the old Mobile CAB stuff, for example.&lt;/p&gt;
&lt;p&gt;Most companies building more than one app should tend towards this type of design anyway.&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9564203</link><pubDate>Thu, 23 Apr 2009 11:03:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9564203</guid><dc:creator>Morten Damsgaard</dc:creator><description>&lt;p&gt;Hi Rob,&lt;/p&gt;
&lt;p&gt;Great article. I think your &amp;quot;empty&amp;quot; managed exe will take 64kb (and not 5kb) of virtual memory, because CE maps dll's and exe's into 64kb boundaries.&lt;/p&gt;
&lt;p&gt;- Morten&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9565504</link><pubDate>Fri, 24 Apr 2009 00:28:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9565504</guid><dc:creator>dvescovi</dc:creator><description>&lt;p&gt;Does all this hold true only for Windows Mobile up to 6/6.5 which uses the Windows CE 5.0 Kernel? I am wondering what your take on this or even if its even applicable under CE 6, which has a major memory archicture shift. My guess is Windows Mobile will adapt the CE 6 kernel sooner or later as I assume the reasion for the rearchicture probably came from the WM team as they are the biggest customer.&lt;/p&gt;
&lt;p&gt;David Vescovi&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9565769</link><pubDate>Fri, 24 Apr 2009 03:30:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9565769</guid><dc:creator>robtiffany</dc:creator><description>&lt;p&gt;You're correct David. &amp;nbsp;This pattern is only needed for versions of Windows Mobile that run on top of Window CE 5.0. &amp;nbsp;Those versions include 5.0, 6, 6.1 and 6.5. &amp;nbsp;Windows CE 6.0 has a redesigned kernel that supports 32,000 processes and each process gets 2 GB of RAM.&lt;/p&gt;
&lt;p&gt;-Rob&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9565776</link><pubDate>Fri, 24 Apr 2009 03:33:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9565776</guid><dc:creator>robtiffany</dc:creator><description>&lt;p&gt;Morten, as of Windows Mobile 6, the CE 5.0 kernel was altered so that Module (Executable) DLLs could align to 4K boundaries which saved a lot of memory. &amp;nbsp;File (Read-only) DLLs remained aligned to 64K boundaries though.&lt;/p&gt;
&lt;p&gt;-Rob &amp;nbsp;&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9602957</link><pubDate>Mon, 11 May 2009 17:22:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9602957</guid><dc:creator>monxalo</dc:creator><description>&lt;p&gt;Greetings,&lt;/p&gt;
&lt;p&gt;Does this behavior applies to dynamic loaded assemblies?&lt;/p&gt;
&lt;p&gt;Using Assembly.Load ?&lt;/p&gt;
&lt;p&gt;- Gon&amp;#231;alo&lt;/p&gt;
</description></item><item><title>MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9608672</link><pubDate>Wed, 13 May 2009 04:36:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9608672</guid><dc:creator>Dave Glover "Down Under (Oz)"</dc:creator><description>&lt;p&gt;I twittered this awhile back, but appreciating not everyone twitters I wanted to share this on my blog&lt;/p&gt;
</description></item><item><title>Mobile Buzz at Tech-Ed</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9609379</link><pubDate>Wed, 13 May 2009 17:48:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9609379</guid><dc:creator>The Windows Mobile RSS (Reed and Steve Stuff) Feed</dc:creator><description>&lt;p&gt;There is a lot of good stuff going on a Tech-Ed this week in LA. &amp;amp;#160; In you are here, come by and&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9664144</link><pubDate>Sat, 30 May 2009 12:48:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9664144</guid><dc:creator>Andrew Konovalov</dc:creator><description>&lt;p&gt;Hi, Rob!&lt;/p&gt;
&lt;p&gt;I've recently translated your article into Russian and here is one interesting comment from an experienced guy:&lt;/p&gt;
&lt;p&gt;==&lt;/p&gt;
&lt;p&gt;&amp;gt;&amp;gt; But just like with DOS, you don’t get access to the whole space &lt;/p&gt;
&lt;p&gt;&amp;gt;&amp;gt; because other things like system DLLs are already eating &lt;/p&gt;
&lt;p&gt;&amp;gt;&amp;gt; into your free virtual memory. &lt;/p&gt;
&lt;p&gt;Using the following function calls&lt;/p&gt;
&lt;p&gt;SetKMode(1); SetProcPermissions(0xffffffff);&lt;/p&gt;
&lt;p&gt;allows a developer to write anywhere (getting access to the whole space). It's better not to use other 32Mb because there is XIP, so it can lead to hard reset.&lt;/p&gt;
&lt;p&gt;Translating address space of other processes can be achieved either using MapPtrToProcess() or appending dwVMBase value from Process structure (which can be fetched from aInfo[KINX_PROCARRAY] array of KData structure). The address is static and depends on architecture, but for ARM is always the same.&lt;/p&gt;
&lt;p&gt;Enjoy! &lt;/p&gt;
&lt;p&gt;==&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9664168</link><pubDate>Sat, 30 May 2009 12:51:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9664168</guid><dc:creator>Andrew Konovalov</dc:creator><description>&lt;p&gt;Here is also a good illustration of full address space mapping: &lt;a rel="nofollow" target="_new" href="http://i.msdn.microsoft.com/Aa450572.mm2"&gt;http://i.msdn.microsoft.com/Aa450572.mm2&lt;/a&gt;(en-us,MSDN.10).gif&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9665758</link><pubDate>Sat, 30 May 2009 18:53:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9665758</guid><dc:creator>Andrew Konovalov</dc:creator><description>&lt;p&gt;Short amendment regarding not using &amp;quot;other 32Mb&amp;quot;. It really meant to be the particular memory range &amp;nbsp;0x2000000-0x4000000 (the XIP location).&lt;/p&gt;
</description></item><item><title>MemMaker для .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9675043</link><pubDate>Mon, 01 Jun 2009 09:14:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9675043</guid><dc:creator>Русский блог Windows Mobile</dc:creator><description>&lt;p&gt;MemMaker для .NET Compact Framework Оригинал: &lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx"&gt;http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>More Memory for ALL in WM 6.x</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9725037</link><pubDate>Thu, 11 Jun 2009 00:13:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9725037</guid><dc:creator>The Windows Mobile RSS (Reed and Steve Stuff) Feed</dc:creator><description>&lt;p&gt;Now that the Windows Mobile 6.5 DTK is available, you are probably starting to discover some of the new&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9834500</link><pubDate>Wed, 15 Jul 2009 20:53:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9834500</guid><dc:creator>simon.tamman</dc:creator><description>&lt;p&gt;Brilliant, and it just so happens that due to my rather pedantic architecture hat I have already done this (without even realising the virtual memory saving feature it provides). Our .exe just creates an instance of &amp;quot;App&amp;quot; and runs. :)&lt;/p&gt;
&lt;p&gt;Nice to know this though. It may help some other projects here!&lt;/p&gt;
&lt;p&gt;Reggies&lt;/p&gt;
&lt;p&gt;Jax&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9836341</link><pubDate>Fri, 17 Jul 2009 04:01:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9836341</guid><dc:creator>robtiffany</dc:creator><description>&lt;p&gt;I'm just glad to see folks from our mobile community are observant and curious and therefore point out bugs in our system. &amp;nbsp;It's also nice to see people put forth workarounds to help everyone else. &amp;nbsp;Raffaele Limosani in Italy was on to this issue over a year ago when he made it public on his blog. &amp;nbsp;He knew that managed exe's whould take up slot space equal to their file size and that managed dll's wouldn't, which leads to the workaround of putting all your code in dll's. &amp;nbsp;The only reason we're even talking about this issue is because Windows Mobile 6.x still uses our older version of Windows CE 5.0 and not our current version where this has been fixed. &amp;nbsp;Thanks to Brian, &amp;nbsp;Raffaele and all those inside Microsoft who have made subtle memory issues clearer to our developers.&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9844412</link><pubDate>Wed, 22 Jul 2009 08:20:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9844412</guid><dc:creator>Faiyaz</dc:creator><description>&lt;p&gt;Great finding sir. &amp;nbsp;Thanks for sharing the info. &amp;nbsp;Hope some of my issues will now be resolved.&lt;/p&gt;
</description></item><item><title>re: MemMaker for the .NET Compact Framework</title><link>http://blogs.msdn.com/robtiffany/archive/2009/04/09/memmaker-for-the-net-compact-framework.aspx#9923537</link><pubDate>Tue, 17 Nov 2009 12:35:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9923537</guid><dc:creator>Sean Solt</dc:creator><description>&lt;p&gt;Hi Rob!&lt;/p&gt;
&lt;p&gt;I need a little support. I have a really huge .NET cf application. I fight with the memory limit for a while. I tried your method and used the memory mapper program to watch the changes but there were nothing changed. I put my program completly to a DLL as you advised and call it from an &amp;quot;empty&amp;quot; exe but the memory map remained the same as before the change. What can be the problem? (using WM5).&lt;/p&gt;
&lt;p&gt;Thank: Sean&lt;/p&gt;
</description></item></channel></rss>