<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments for Software Generalist</title>
	<atom:link href="http://www.softwaregeneralist.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.softwaregeneralist.com</link>
	<description>Connecting Software with Engineering, Science, Philosophy and Religion</description>
	<pubDate>Fri, 12 Mar 2010 18:35:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>Comment on Mod N Reading System by Crash Dump Analysis &#187; Blog Archive &#187; Memorianic Ritual: Lunch with Books</title>
		<link>http://www.softwaregeneralist.com/2009/11/17/mod-n-reading-system/#comment-638</link>
		<dc:creator>Crash Dump Analysis &#187; Blog Archive &#187; Memorianic Ritual: Lunch with Books</dc:creator>
		<pubDate>Wed, 13 Jan 2010 15:12:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.softwaregeneralist.com/?p=90#comment-638</guid>
		<description>[...] for combining lunches with book and  magazine (a mini-book) reading (also combined with Mod N reading system). From now on this activity obtains the status of a ritual in Memorianity and depicted on this [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] for combining lunches with book and  magazine (a mini-book) reading (also combined with Mod N reading system). From now on this activity obtains the status of a ritual in Memorianity and depicted on this [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mod N Reading System by Language Memory &#187; Blog Archive &#187; Foreign Language Reading System</title>
		<link>http://www.softwaregeneralist.com/2009/11/17/mod-n-reading-system/#comment-358</link>
		<dc:creator>Language Memory &#187; Blog Archive &#187; Foreign Language Reading System</dc:creator>
		<pubDate>Tue, 17 Nov 2009 11:45:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.softwaregeneralist.com/?p=90#comment-358</guid>
		<description>[...] Mod N Reading System [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Mod N Reading System [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mod N Reading System by Literate Scientist &#187; Blog Archive &#187; My Reading System</title>
		<link>http://www.softwaregeneralist.com/2009/11/17/mod-n-reading-system/#comment-357</link>
		<dc:creator>Literate Scientist &#187; Blog Archive &#187; My Reading System</dc:creator>
		<pubDate>Tue, 17 Nov 2009 11:21:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.softwaregeneralist.com/?p=90#comment-357</guid>
		<description>[...] Mod N Reading System [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Mod N Reading System [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Cooperative Multireading Revisited and Started by Software Generalist &#187; Blog Archive &#187; Mod N Reading System</title>
		<link>http://www.softwaregeneralist.com/2008/06/04/cooperative-multireading-revisited/#comment-356</link>
		<dc:creator>Software Generalist &#187; Blog Archive &#187; Mod N Reading System</dc:creator>
		<pubDate>Tue, 17 Nov 2009 11:15:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.softwaregeneralist.com/?p=7#comment-356</guid>
		<description>[...] I perfected my cooperative multireading technique by combining modular arithmetic with software data structures and algorithms like [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] I perfected my cooperative multireading technique by combining modular arithmetic with software data structures and algorithms like [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reading Notebook: 05-August-09 by Crash Dump Analysis &#187; Blog Archive &#187; Wild code and partial stack reconstruction</title>
		<link>http://www.softwaregeneralist.com/2009/08/05/reading-notebook-05-august-09/#comment-197</link>
		<dc:creator>Crash Dump Analysis &#187; Blog Archive &#187; Wild code and partial stack reconstruction</dc:creator>
		<pubDate>Fri, 04 Sep 2009 14:15:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.softwaregeneralist.com/?p=64#comment-197</guid>
		<description>[...] gone wrong after the return from KiCallbackReturn. On x86 systems this is an IDT entry (2b). See an example output I did while writing down notes on Windows Internals. Windows NT/2000 Native API Reference states [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] gone wrong after the return from KiCallbackReturn. On x86 systems this is an IDT entry (2b). See an example output I did while writing down notes on Windows Internals. Windows NT/2000 Native API Reference states [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reading Notebook: 17-August-09 by Dmitry Vostokov</title>
		<link>http://www.softwaregeneralist.com/2009/08/17/reading-notebook-17-august-09/#comment-180</link>
		<dc:creator>Dmitry Vostokov</dc:creator>
		<pubDate>Wed, 19 Aug 2009 23:02:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.softwaregeneralist.com/?p=69#comment-180</guid>
		<description>Thanks for shortcuts! Will try next time
Dmitry</description>
		<content:encoded><![CDATA[<p>Thanks for shortcuts! Will try next time<br />
Dmitry</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reading Notebook: 18-August-09 by Dmitry Vostokov</title>
		<link>http://www.softwaregeneralist.com/2009/08/18/reading-notebook-18-august-09/#comment-179</link>
		<dc:creator>Dmitry Vostokov</dc:creator>
		<pubDate>Wed, 19 Aug 2009 22:58:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.softwaregeneralist.com/?p=70#comment-179</guid>
		<description>Thanks for clarification!
Dmitry</description>
		<content:encoded><![CDATA[<p>Thanks for clarification!<br />
Dmitry</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reading Notebook: 17-August-09 by Alex Ionescu</title>
		<link>http://www.softwaregeneralist.com/2009/08/17/reading-notebook-17-august-09/#comment-176</link>
		<dc:creator>Alex Ionescu</dc:creator>
		<pubDate>Tue, 18 Aug 2009 14:53:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.softwaregeneralist.com/?p=69#comment-176</guid>
		<description>You can use !object to get the object header address in a more portable way, and/or use C++-style @@sizeof(OBJECT_HEADER) instead of hardcoding the 38 or 18 value for x64/x86.

Also !ustr will give you nicer output for a UNICODE_STRING, assuming the structure isn't corrupted (which is a bigger problem!)

--
Best regards,
Alex Ionescu</description>
		<content:encoded><![CDATA[<p>You can use !object to get the object header address in a more portable way, and/or use C++-style @@sizeof(OBJECT_HEADER) instead of hardcoding the 38 or 18 value for x64/x86.</p>
<p>Also !ustr will give you nicer output for a UNICODE_STRING, assuming the structure isn&#8217;t corrupted (which is a bigger problem!)</p>
<p>&#8211;<br />
Best regards,<br />
Alex Ionescu</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reading Notebook: 18-August-09 by Alex Ionescu</title>
		<link>http://www.softwaregeneralist.com/2009/08/18/reading-notebook-18-august-09/#comment-175</link>
		<dc:creator>Alex Ionescu</dc:creator>
		<pubDate>Tue, 18 Aug 2009 14:47:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.softwaregeneralist.com/?p=70#comment-175</guid>
		<description>Keep in mind that handles must be multiples of 4, since the bottom 2 bits are sometimes used to contain Win32 flags associated with the underlying object (such as for file objects and completion ports).

Also, your calculation is slightly incorrect:

- First, the mid-level table has enough to store a "full page's worth of pointers", quoting from the book. PAGE_SIZE / 4 (for x86) is 1024 entries, not 512.
- Secondly, in order to maintain compatibility with Windows 2000, the amount of high-level tables is artificially constricted to the minimum required to describe Windows 2000's limit (256^3 ~ 16 million) based on the amount of handles described by mid and low level tables on the system. In this case, for x86, that number would be 32.

You can use the following definitions for a more "abstract" understanding:

#define LOW_LEVEL_ENTRIES   (PAGE_SIZE / sizeof(HANDLE_TABLE_ENTRY))
#define MID_LEVEL_ENTRIES   (PAGE_SIZE / sizeof(PHANDLE_TABLE_ENTRY))
#define HIGH_LEVEL_ENTRIES  (16777216 / (LOW_LEVEL_ENTRIES * MID_LEVEL_ENTRIES))

Regarding point #2, the book is unclear about this fact, and I will make sure that it is updated for the next edition -- nowhere is it explained why the limit is still 16 million even though theoretically, x86 could have much larger handle values.

--
Best regards,
Alex Ionescu</description>
		<content:encoded><![CDATA[<p>Keep in mind that handles must be multiples of 4, since the bottom 2 bits are sometimes used to contain Win32 flags associated with the underlying object (such as for file objects and completion ports).</p>
<p>Also, your calculation is slightly incorrect:</p>
<p>- First, the mid-level table has enough to store a &#8220;full page&#8217;s worth of pointers&#8221;, quoting from the book. PAGE_SIZE / 4 (for x86) is 1024 entries, not 512.<br />
- Secondly, in order to maintain compatibility with Windows 2000, the amount of high-level tables is artificially constricted to the minimum required to describe Windows 2000&#8217;s limit (256^3 ~ 16 million) based on the amount of handles described by mid and low level tables on the system. In this case, for x86, that number would be 32.</p>
<p>You can use the following definitions for a more &#8220;abstract&#8221; understanding:</p>
<p>#define LOW_LEVEL_ENTRIES   (PAGE_SIZE / sizeof(HANDLE_TABLE_ENTRY))<br />
#define MID_LEVEL_ENTRIES   (PAGE_SIZE / sizeof(PHANDLE_TABLE_ENTRY))<br />
#define HIGH_LEVEL_ENTRIES  (16777216 / (LOW_LEVEL_ENTRIES * MID_LEVEL_ENTRIES))</p>
<p>Regarding point #2, the book is unclear about this fact, and I will make sure that it is updated for the next edition &#8212; nowhere is it explained why the limit is still 16 million even though theoretically, x86 could have much larger handle values.</p>
<p>&#8211;<br />
Best regards,<br />
Alex Ionescu</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Software Labour and Alienation by Software Generalist &#187; Blog Archive &#187; Software Generalism</title>
		<link>http://www.softwaregeneralist.com/2009/02/18/software-labour-and-alienation/#comment-89</link>
		<dc:creator>Software Generalist &#187; Blog Archive &#187; Software Generalism</dc:creator>
		<pubDate>Wed, 18 Feb 2009 11:00:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.softwaregeneralist.com/?p=44#comment-89</guid>
		<description>[...] Software Generalist Connecting Software with Engineering, Science, Philosophy and Religion      &#171; Software Labour and Alienation [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Software Generalist Connecting Software with Engineering, Science, Philosophy and Religion      &laquo; Software Labour and Alienation [&#8230;]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
