<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>NateX's Weblog</title>
	<atom:link href="http://natex.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://natex.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Thu, 11 Dec 2008 02:46:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='natex.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>NateX's Weblog</title>
		<link>http://natex.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://natex.wordpress.com/osd.xml" title="NateX&#039;s Weblog" />
	<atom:link rel='hub' href='http://natex.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Quotes</title>
		<link>http://natex.wordpress.com/2008/12/11/quotes/</link>
		<comments>http://natex.wordpress.com/2008/12/11/quotes/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 02:45:37 +0000</pubDate>
		<dc:creator>natex</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Quotes]]></category>

		<guid isPermaLink="false">http://natex.wordpress.com/2008/12/11/quotes/</guid>
		<description><![CDATA[For Windows developers, few tasks are more challenging than debugging—-or more crucial. &#8211;Advanced Windows Debugging<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=36&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For Windows developers, few tasks are more challenging than debugging—-or more crucial.</p>
<p>&#8211;<span class="b">Advanced Windows Debugging</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/natex.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/natex.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/natex.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/natex.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/natex.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/natex.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/natex.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/natex.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/natex.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/natex.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/natex.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/natex.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/natex.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/natex.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=36&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://natex.wordpress.com/2008/12/11/quotes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b438760a19e4e240c1c5e70571a505e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">natex</media:title>
		</media:content>
	</item>
		<item>
		<title>Avoid Memory Corruption when Assigning a CComBSTR to a CComVariant&#8217;s bstrVal Member</title>
		<link>http://natex.wordpress.com/2008/12/02/avoid-memory-corruption-when-assigning-a-ccombstr-to-a-ccomvariants-bstrval-member/</link>
		<comments>http://natex.wordpress.com/2008/12/02/avoid-memory-corruption-when-assigning-a-ccombstr-to-a-ccomvariants-bstrval-member/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 08:17:12 +0000</pubDate>
		<dc:creator>natex</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://natex.wordpress.com/?p=34</guid>
		<description><![CDATA[Although the CComBSTR = operator is overloaded to make a copy of the string, this is not the case when assigning a CComVariant&#8217;s bstrVal member to a CComBSTR. In this case, you need to make an explicit copy: CComVariant bstrTarget; CComBSTR strSource("test"); // Use CComBSTR::Copy to make a copy // of the source string. bstrTarget.bstrVal [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=34&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="padding:10px;">Although the <span class="pf">CComBSTR = operator</span> is overloaded to make a copy of the string, this is not the case when assigning a <span class="pf">CComVariant&#8217;s bstrVal</span> member to a <span class="pf">CComBSTR</span>. In this case, you need to make an explicit copy:</p>
<pre><code>
CComVariant bstrTarget;
CComBSTR strSource("test");

// Use CComBSTR::Copy to make a copy
// of the source string.
bstrTarget.bstrVal = strSource.Copy();
</code></pre>
<p>If you don&#8217;t make a copy of the source string, it will wind up being freed twice—once by the <span class="pf">CComVariant</span>&#8216;s destructor, and once by the original <span class="pf">CComBSTR</span>&#8216;s destructor. </div>
<div class="articleDek" style="margin-bottom:10px;margin-left:10px;">Alison Lomaka</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/natex.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/natex.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/natex.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/natex.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/natex.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/natex.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/natex.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/natex.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/natex.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/natex.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/natex.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/natex.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/natex.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/natex.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=34&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://natex.wordpress.com/2008/12/02/avoid-memory-corruption-when-assigning-a-ccombstr-to-a-ccomvariants-bstrval-member/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b438760a19e4e240c1c5e70571a505e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">natex</media:title>
		</media:content>
	</item>
		<item>
		<title>They are safe!</title>
		<link>http://natex.wordpress.com/2008/12/02/they-are-safe/</link>
		<comments>http://natex.wordpress.com/2008/12/02/they-are-safe/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 08:16:43 +0000</pubDate>
		<dc:creator>natex</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://natex.wordpress.com/?p=32</guid>
		<description><![CDATA[strncpy_s() and strncat_s() Daniel Plakosh, Software Engineering Institute [vita] Copyright © 2005 Pearson Education, Inc. 2005-09-27; Updated 2008-07-17 L1 / D/P, L     The strncpy() and strncat() functions are a source of buffer overflow vulnerabilities. The strncpy_s() and strncat_s() functions are defined in ISO/IEC TR 24731 as drop-in replacements for strncpy() and strncat(). Development Context Copying and concatenating [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=32&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1 class="daisy-document-name">strncpy_s() and strncat_s()</h1>
<p>Daniel Plakosh, Software Engineering Institute [<a title="Plakosh, Daniel" href="http://natex.wordpress.com/daisy/bsi/about_us/authors/268-BSI.html">vita</a>]</p>
<p>Copyright © 2005 Pearson Education, Inc.</p>
<table class="borderless" border="0" width="100%">
<tbody>
<tr>
<td>2005-09-27; Updated 2008-07-17</td>
<td valign="top">
<p align="right"><a title="Maturity Levels and Audience Indicators" href="http://natex.wordpress.com/daisy/bsi/1084-BSI.html">L1 / D/P, L</a>    </p>
</td>
</tr>
</tbody>
</table>
<p>The <tt>strncpy()</tt> and <tt>strncat()</tt> functions are a source of buffer overflow vulnerabilities. The <tt>strncpy_s()</tt> and <tt>strncat_s()</tt> functions are defined in ISO/IEC TR 24731 as drop-in replacements for <tt>strncpy()</tt> and <tt>strncat()</tt>.</p>
<h2><a>Development Context</a></h2>
<p><a>Copying and concatenating character strings</a></p>
<h2><a>Technology Context</a></h2>
<p><a>C, UNIX, Win32</a></p>
<h2><a>Attacks</a></h2>
<p><a>Attacker executes arbitrary code on machine with permissions of compromised process or changes the behavior of the program.</a></p>
<h2><a>Risk</a></h2>
<p><a>The <tt>strncpy()</tt> and <tt>strncat()</tt> functions are a source of buffer overflow vulnerabilities.</a></p>
<h2><a>Description</a></h2>
<p><a>ISO/IEC TR 24731 specifies the <tt>strncpy_s()</tt> and <tt>strncat_s()</tt> functions as close replacements for <tt>strncpy()</tt> and <tt>strncat()</tt>.</a></p>
<p><a>The <tt>strncpy_s()</tt> function copies not more than a specified number of successive characters (characters that follow a null character are not copied) from a source string to a destination character array. If no null character was copied, then the last character of the destination character array is set to a null character.</a></p>
<p>The <tt>strncpy_s()</tt> function returns zero to indicate success. If the input arguments are invalid, <tt>strncpy_s()</tt> returns a nonzero value and sets the destination string to the null string. Input validation fails if either the source or destination pointers are NULL or if the maximum size of the destination string is zero or greater than <tt>RSIZE_MAX</tt>. The input is also considered invalid when the specified number of characters to be copied exceeds <tt>RSIZE_MAX</tt>.</p>
<p>A <tt>strncpy_s()</tt> operation can actually succeed when the number of characters specified to be copied exceeds the maximum length of the destination string as long as the actual source string is shorter than the maximum length of the destination string. If the number of characters to copy is greater than or equal to the maximum size of the destination string and the source string is longer than the destination buffer, the operation will fail.</p>
<p><a><strong>Figure 1. Sample use of strncpy_s() function</strong></a></p>
<pre><a>1. char src1[100] = "hello";
2. char src2[7] = {'g','o','o','d','b','y','e'};
3. char dst1[6], dst2[5], dst3[5];
4. int r1, r2, r3;
5. r1 = strncpy_s(dst1, 6, src1, 100);
6. r2 = strncpy_s(dst2, 5, src2, 7);
7. r3 = strncpy_s(dst3, 5, src2, 4);</a></pre>
<p><a>Users of these functions are less likely to introduce a security flaw because the size of the destination buffer and the maximum number of characters to append must be specified. The <tt>strncat_s()</tt> function also ensures null termination of the destination string. For example, the first call to <tt>strncpy_s()</tt> on line 5 of the sample program shown in </a>Figure 1 assigns the value zero to r1 and the sequence hello to dst1. The second call on line 6 assigns a non-zero value to r2 and the sequence  to dst2. The third call on line 7 assigns the value zero to r3 and the sequence good to dst3. If <tt>strncpy()</tt> had been used instead of <tt>strncpy_s()</tt>, a buffer overflow would have occurred during the execution of line 6.</p>
<p>The <tt>strncat_s()</tt> function appends not more than a specified number of successive characters (characters that follow a null character are not copied) from a source string to a destination character array. The initial character from the source string overwrites the null character at the end of the destination array. If no null character was copied from the source string, then a null character is written at the end of the appended string.</p>
<p>The <tt>strncat_s()</tt> function fails and returns a nonzero value if either the source or destination pointers are NULL or if the maximum length of the destination buffer is equal to zero or greater than <tt>RSIZE_MAX</tt>. The function also fails when the destination string is already full or if there is not enough room to fully append the source string.</p>
<p>The <tt>strncpy_s()</tt> and <tt>strncat_s()</tt> functions are still capable of overflowing a buffer if the maximum length of the destination buffer and number of characters to copy are incorrectly specified.</p>
<h2><a>References</a></h2>
<table class="borderless" border="0">
<col span="1" width="120"></col>
<col span="1"></col>
<tbody>
<tr>
<td valign="top">[ISO/IEC 99]</td>
<td valign="top">ISO/IEC. <em>ISO/IEC 9899 Second edition 1999-12-01 Programming languages — C</em>. International Organization for Standardization, 1999.</td>
</tr>
<tr>
<td valign="top">[ISO/IEC 04]</td>
<td valign="top">ISO/IEC. <em>ISO/IEC WDTR 24731 Specification for Secure C Library Functions</em>. International Organization for Standardization, 2004.</td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/natex.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/natex.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/natex.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/natex.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/natex.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/natex.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/natex.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/natex.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/natex.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/natex.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/natex.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/natex.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/natex.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/natex.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=32&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://natex.wordpress.com/2008/12/02/they-are-safe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b438760a19e4e240c1c5e70571a505e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">natex</media:title>
		</media:content>
	</item>
		<item>
		<title>Case Insensitive strstr</title>
		<link>http://natex.wordpress.com/2008/12/01/case-insensitive-strstr/</link>
		<comments>http://natex.wordpress.com/2008/12/01/case-insensitive-strstr/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 09:44:39 +0000</pubDate>
		<dc:creator>natex</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[case insensitive]]></category>

		<guid isPermaLink="false">http://natex.wordpress.com/?p=27</guid>
		<description><![CDATA[It&#8217;s a frequent task to make a case insensitive search for a string into another string. I believe everyone is able to write code that does this. And I am sure everyone did this many times I don&#8217;t want to bring up here a discussion about code reusability and the benefits of having functions to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=27&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a name="more"> </a></p>
<p>It&#8217;s a frequent task to make a case insensitive search for a string into another string. I believe everyone is able to write code that does this. And I am sure everyone did this many times <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I don&#8217;t want to bring up here a discussion about code reusability and the benefits of having functions to handle one task instead of pasting same code locally wherever it is needed. However, my experience with programs written by professional developers led me to implement case insensitive search with the same interface as strstr() and post it here, so that everyone can take it and put it to their utility library.</p>
<p>I am including two different ways how to do the case insensitive search. They show the classical memory/speed trade-off. I have the feeling that the reason why case insensitive search function is not included in the runtime library is because there&#8217;s no solution which is clearly better than all others. The first technique allocates memory for copies of both strings, but it is significantly more time efficient for large strings. The other way has no memory overhead, but takes more CPU time. I didn&#8217;t compare performance for small strings, where I expect the efficiency to be pretty much the same. If anyone wants to investigate, please post your results.</p>
<p>The second implementation has the additional benefit that it is possible to specify a substring of the first string that will be searched.</p>
<p>I wrote the functions as C++ templates, but they can be converted to C functions very easily.</p>
<p><em>A. stristr &#8211; makes internal copies, converts to lower case and uses strstr</p>
<p></em></p>
<pre><span class="codeKeyword">#include</span> &lt;<span class="codeKeyword">string</span>.h&gt;
<span class="codeKeyword">#include</span> &lt;malloc.h&gt;
<span class="codeKeyword">#include</span> &lt;tchar.h&gt;

<span class="codeKeyword">template</span> &lt;<span class="codeKeyword">typename</span> CHAR_TYPE&gt;
CHAR_TYPE *stristr
(
   CHAR_TYPE         *  szStringToBeSearched,
   <span class="codeKeyword">const</span> CHAR_TYPE   *  szSubstringToSearchFor
)
{
   CHAR_TYPE   *  pPos = <span class="codeKeyword">NULL</span>;
   CHAR_TYPE   *  szCopy1 = <span class="codeKeyword">NULL</span>;
   CHAR_TYPE   *  szCopy2 = <span class="codeKeyword">NULL</span>;

   <span class="codeComment">// verify parameters</span>
   <span class="codeKeyword">if</span> ( szStringToBeSearched == <span class="codeKeyword">NULL</span> ||
        szSubstringToSearchFor == <span class="codeKeyword">NULL</span> )
   {
      <span class="codeKeyword">return</span> szStringToBeSearched;
   }

   <span class="codeComment">// empty substring - return input (consistent with strstr)</span>
   <span class="codeKeyword">if</span> ( _tcslen(szSubstringToSearchFor) == 0 ) {
      <span class="codeKeyword">return</span> szStringToBeSearched;
   }

   szCopy1 = _tcslwr(_tcsdup(szStringToBeSearched));
   szCopy2 = _tcslwr(_tcsdup(szSubstringToSearchFor));

   <span class="codeKeyword">if</span> ( szCopy1 == <span class="codeKeyword">NULL</span> || szCopy2 == <span class="codeKeyword">NULL</span>  ) {
      <span class="codeComment">// another option is to raise an exception here</span>
      free((<span class="codeKeyword">void</span>*)szCopy1);
      free((<span class="codeKeyword">void</span>*)szCopy2);
      <span class="codeKeyword">return</span> <span class="codeKeyword">NULL</span>;
   }

   pPos = strstr(szCopy1, szCopy2);

   <span class="codeKeyword">if</span> ( pPos != <span class="codeKeyword">NULL</span> ) {
      <span class="codeComment">// map to the original string</span>
      pPos = szStringToBeSearched + (pPos - szCopy1);
   }

   free((<span class="codeKeyword">void</span>*)szCopy1);
   free((<span class="codeKeyword">void</span>*)szCopy2);

   <span class="codeKeyword">return</span> pPos;
} <span class="codeComment">// stristr(...)</span></pre>
<p><em>B. strnistr &#8211; uses strnicmp in a loop, and may search in a substring of the searched string</p>
<p></em></p>
<pre><span class="codeKeyword">#include</span> &lt;<span class="codeKeyword">string</span>.h&gt;
<span class="codeKeyword">#include</span> &lt;malloc.h&gt;
<span class="codeKeyword">#include</span> &lt;tchar.h&gt;

<span class="codeKeyword">template</span> &lt;<span class="codeKeyword">typename</span> CHAR_TYPE&gt;
CHAR_TYPE *strnistr
(
   CHAR_TYPE         *  szStringToBeSearched,
   <span class="codeKeyword">const</span> CHAR_TYPE   *  szSubstringToSearchFor,
   <span class="codeKeyword">const</span> <span class="codeKeyword">int</span>            nStringLen = -1
)
{
   <span class="codeKeyword">int</span>            nLen;
   <span class="codeKeyword">int</span>            nOffset;
   <span class="codeKeyword">int</span>            nMaxOffset;
   CHAR_TYPE   *  pPos;
   <span class="codeKeyword">int</span>            nStringLenInt;

   <span class="codeComment">// verify parameters</span>
   <span class="codeKeyword">if</span> ( szStringToBeSearched == <span class="codeKeyword">NULL</span> ||
        szSubstringToSearchFor == <span class="codeKeyword">NULL</span> )
   {
      <span class="codeKeyword">return</span> szStringToBeSearched;
   }

   <span class="codeComment">// get length of the substring</span>
   nLen = _tcslen(szSubstringToSearchFor);

   <span class="codeComment">// empty substring-return input (consistent w/ strstr)</span>
   <span class="codeKeyword">if</span> ( nLen == 0 ) {
      <span class="codeKeyword">return</span> szStringToBeSearched;
   }

   <span class="codeKeyword">if</span> ( nStringLen == -1 || nStringLen &gt;
               (<span class="codeKeyword">int</span>)_tcslen(szStringToBeSearched) )
   {
      nStringLenInt = _tcslen(szStringToBeSearched);
   } <span class="codeKeyword">else</span> {
      nStringLenInt = nStringLen;
   }

   nMaxOffset = nStringLenInt - nLen;

   pPos = szStringToBeSearched;

   <span class="codeKeyword">for</span> ( nOffset = 0; nOffset &lt;= nMaxOffset; nOffset++ ) {

      <span class="codeKeyword">if</span> ( _tcsnicmp(pPos, szSubstringToSearchFor, nLen) == 0 ) {
         <span class="codeKeyword">return</span> pPos;
      }
      <span class="codeComment">// move on to the next character</span>
      pPos++; <span class="codeComment">//_tcsinc was causing problems <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </span>
   }

   <span class="codeKeyword">return</span> <span class="codeKeyword">NULL</span>;
} <span class="codeComment">// strnistr(...)</span></pre>
<p>Here&#8217;s a fragment of code I used to compare the performance of the functions:</p>
<pre>{
   <span class="codeKeyword">int</span>      i;
   <span class="codeKeyword">char</span>     x1[3 * 100000];
   <span class="codeKeyword">char</span>     x2[3 * 10000];

   <span class="codeKeyword">for</span> ( i = 0; i &lt; <span class="codeKeyword">sizeof</span>(x1); i++ ) x1[i] = 'A'+ (i % 3);
   <span class="codeKeyword">for</span> ( i = 0; i &lt; <span class="codeKeyword">sizeof</span>(x2); i++ ) x2[i] = 'a'+ (i % 3);
   x1[<span class="codeKeyword">sizeof</span>(x1) - 2] = x2[<span class="codeKeyword">sizeof</span>(x2) - 2] = 'y';
   x1[<span class="codeKeyword">sizeof</span>(x1) - 1] = x2[<span class="codeKeyword">sizeof</span>(x2) - 1] = 0;
   <span class="codeComment">// use a profiler to compare</span>
   printf("%p\n", stristr(x1, x2));
   printf("%p\n", strnistr(x1, x2));
}
zz from http://www.codeguru.com/cpp/cpp/string/article.php/c5641/</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/natex.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/natex.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/natex.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/natex.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/natex.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/natex.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/natex.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/natex.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/natex.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/natex.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/natex.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/natex.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/natex.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/natex.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=27&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://natex.wordpress.com/2008/12/01/case-insensitive-strstr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b438760a19e4e240c1c5e70571a505e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">natex</media:title>
		</media:content>
	</item>
		<item>
		<title>Managing mailboxes in Exchange Server 2007</title>
		<link>http://natex.wordpress.com/2008/11/24/managing-mailboxes-in-exchange-server-2007/</link>
		<comments>http://natex.wordpress.com/2008/11/24/managing-mailboxes-in-exchange-server-2007/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 09:24:12 +0000</pubDate>
		<dc:creator>natex</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Exchange use]]></category>

		<guid isPermaLink="false">http://natex.wordpress.com/?p=24</guid>
		<description><![CDATA[Managing mailboxes in Exchange Server 2007 (Part 1)How to create users in Exchange Server 2007. •Published: Feb 06, 2007 •Updated: Feb 27, 2007 •Section: Management &#38; Administration •Author: Anderson Patricio Printable Version Adjust font size: •Rating: 4.6/5 &#8211; 38 Votes 1 2 3 4 5 If you would like to read the next part in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=24&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Managing mailboxes in Exchange Server 2007 (Part 1)How to create users in Exchange Server 2007.   </p>
<p>•Published: Feb 06, 2007<br />
•Updated: Feb 27, 2007<br />
•Section: Management &amp; Administration<br />
•Author: Anderson Patricio<br />
Printable Version<br />
Adjust font size:<br />
•Rating: 4.6/5 &#8211; 38 Votes </p>
<p>1<br />
2<br />
3<br />
4<br />
5 </p>
<p>If you would like to read the next part in this article series please go to Managing mailboxes in Exchange Server 2007 (Part 2).</p>
<p>Overview<br />
In this article, we are going to approach a simple but important subject: the mailbox user management for Exchange Server 2007. </p>
<p>It may seem a simple issue to discuss, but we will see some advanced points related to user management tasks in order to assist beginners and advanced administrators. This article will be split into two parts; in this first part we will review mailbox management and user level functionalities.</p>
<p>Creating a mailbox using the Exchange Management Console<br />
This procedure is the starting point of this article. Exchange Server 2007 allows administrators to create objects such as Mailboxes, Contacts, Mail Users, and Distribution Groups. In the following steps we will see how to create a mailbox object:</p>
<p>1.Open Exchange Management Console<br />
2.Expand Recipient Configuration<br />
3.Click on Mailbox<br />
4.In the Mailbox pane, click on New Mailbox&#8230; (Figure 01)</p>
<p>Figure 01: Creating a new user in the Exchange Management Console</p>
<p>5.Introduction. We have to choose what kind of object we are creating, in Exchange Server 2007 we have four different mailbox types:</p>
<p>- User mailbox: This is a traditional mailbox.</p>
<p>- Resource mailbox: This is a mailbox specifically assigned to Meeting Rooms. Its associated user account will be disabled in Active Directory.</p>
<p>- Equipment mailbox: This is a mailbox specific to resources, (i.e. TV, Projector and so on). As with a Resource mailbox, this kind of mailbox will disable a user in Active Directory.</p>
<p>- Linked Mailbox: This kind of mailbox will be used in environments with multiple forests. This specific feature will be explained in a later article on MSExchange.org.</p>
<p>In the Introduction window, select the appropriate mailbox type and then click Next to continue. (Figure 02).</p>
<p>Figure 02: Choosing what kind of mailbox will be created</p>
<p>6.User Type. In the User Type window, we can choose either to create a new user or to assign an existing user to the new mailbox. If we choose to assign it to an existing user, we will have to check if the account does not already have a mailbox associated with it. Click Next to continue (Figure 03).</p>
<p>Figure 03: Creating a new user for a new mailbox</p>
<p>7.User Information. In the User Information window, we should fill out the personal information of the user and select the Organization Unit where it will be created. After that click on Next (Figure 04).</p>
<p>Figure 04: Filling out the personal user data and OU localization</p>
<p>8.Mailbox Settings. On the Mailbox Settings page, we can define the mailbox information such as Alias, Mailbox Server, and Mailbox Store where the new mailbox will be located. The policies for Mailbox and ActiveSync can also be defined in this step. We can choose which fields we are going to fill out and then click Next to continue. (Figure 05).</p>
<p>Figure 05: Choosing Server, Storage Group, Mailbox database and policies during the mailbox creation process</p>
<p>9.New Mailbox. In the New Mailbox window, we will get a summary of all the information that we selected in the previous steps. These parameters will be used by the PowerShell engine for the creation of this mailbox object. To create the mailbox, click on New (Figure 06).</p>
<p>Figure 06: The parameters that will be used in the creation of the new mailbox</p>
<p>10.Completion. In the Completion window, we will see the cmdlet New-mailbox and the parameters that we used in the creation process of this new mailbox.</p>
<p>Figure 07: The final screen of the New Mailbox Wizard, showing us the cmdlet used in the creation of the mailbox</p>
<p>Creating a mailbox through Exchange Management Shell<br />
Another way to create users is by using the Exchange Management Shell. To do this, we can use a cmdlet called New-Mailbox. There are many parameters associated with this commandlet, and the required parameters for the cmdlet are the following:</p>
<p>•Alias<br />
•Name<br />
•Database<br />
•OrganizationalUnit<br />
•UserPrincipalName<br />
To create a user using Exchange Management Shell, we can run the following cmdlet:</p>
<p>New-Mailbox –alias  -name  -Database  -OrganizationUnit Users –UserPrincipalName </p>
<p>If we do not type all the required parameters, we will get a prompt asking for the parameters that are missing. In Figure 08, we can see that we have received the password prompt to fill out the password. After the password was entered, the user was created.</p>
<p>Figure 08: Creating a mailbox through the cmdlet New-Mailbox in the Exchange Management Console</p>
<p>Using *.csv files to create mailboxes<br />
Another interesting feature is the one that lets an administrator create several users from a *.csv file. In the following section, we will review a step by step procedure to create mailboxes:</p>
<p>1.First of all, we will have to create a *.csv file called recipients.csv on the root drive (C:\) and we will type the column names for the file in the first line. Those columns will be the Alias, the Name and UPN. in the following lines we will complete the user information (Figure 09).</p>
<p>Figure 09: Creating a csv file to be used in the creation of users through Exchange Management Shell</p>
<p>2.Once the user information is complete, we will have to create a variable in the Exchange Management Shell that will keep the initial password for all of the accounts on the recipients.csv file. To do so, we will type the following:</p>
<p>$Password = Read-Host “Type the default password for the new accounts:” -AsSecureString</p>
<p>Figure 10: Creating a variable to keep the initial password on the new accounts </p>
<p>3.In the following step, we will run two cmdlets using a pipe to create the new users using the *.csv file. This is the syntax of our cmdlet:</p>
<p>Import-Csv recipients.csv | foreach { New-Mailbox –alias $_.Alias –name $_.Name –UserPrincipalName $_.UPN –Database “mailbox database” –OrganizationalUnit Users –Password $Password –ResetPasswordOnNextLogon:$true<br />
The options are explained here:</p>
<p>•$_.: This is the name of each column of the recipients.csv file.<br />
•Foreach: For each line of the file; Note: the first line is the header.<br />
•$Password: variable that we just typed in the previous step.<br />
•-ResetPasswordOnNextLogon:$true: If we set this parameter to true, all the users will have to change their password on the first logon.</p>
<p>Figure 11:  Creating users through a *.csv file</p>
<p>4.To check if the users were created, we will go to the Exchange Management Console (Figure 12).</p>
<p>Figure 12: The new users created through the csv file</p>
<p>Managing Mailbox Features<br />
We can manage functionalities at the user level, enabling or disabling the following features:</p>
<p>•OWA<br />
•Exchange ActiveSync<br />
•Unified Messaging<br />
•MAPI access.<br />
This task can be completed in two different ways, both will be detailed in the following sections:</p>
<p>Using the Exchange Management Console</p>
<p>1.Open Exchange Management Console<br />
2.Expand Recipient Configuration<br />
3.Click on Mailbox<br />
4.Click on the user and in Toolbox Actions, click on Properties<br />
5.Click on Mailbox Features tab<br />
6.Now we can see all the mailbox features of the user and we can disable or enable each functionality</p>
<p>Figure 13: Managing Mailbox Features at user level</p>
<p>Listing all the users and their features…</p>
<p>In some cases, we have to verify the functionalities that users have, and there is no way to do this user by user. In Exchange Server 2007, this task is very easy, and can be done with a cmdlet called get-casmailbox (figure 14). </p>
<p>Using this cmdlet, we can export the results to a *.csv file and analyze it in Microsoft Excel and generate reports or analyze it any way we want.</p>
<p>Figure 14: All the users with their functionalities through Exchange Management Shell</p>
<p>Using Exchange Management Shell to change user features<br />
To manage features using the Exchange Management Shell, we can use the cmdlet called set-casmailbox, as follows:</p>
<p>Set-casmailbox  -OWAEnabled:</p>
<p>Where:  is the user name;  can be $true or $false</p>
<p>To show you the real impact of the use of the Exchange Management Shell, here is an example.</p>
<p>Scenario: We have a company with fifty (50) branch offices and we have to disable MAPI access for all users in Toronto. </p>
<p>How can we do this with the least administrative work?</p>
<p>First of all, we must insure that all the Active Directory information is consistent. In our scenario, all of the users have the attributes City and StateorProvince filled out correctly. One example of this is shown in the Figure 15 through cmdlets get-user | select name, recipientType, City, StateorProvince</p>
<p>Figure 15: Verifying the attributes City, StateorProvince of all the users</p>
<p>If all of the Active Directory information is consistent, we can use the pipe resource on the Windows PowerShell where an output from one command is used as input for another cmdlet. </p>
<p>We will need some specific user attributes that we cannot get through get-mailbox because this cmdlet only returns mailbox information. We will have to use the get-user cmdlet to filter the city attribute from users and combine these results with the set-casmailbox cmdlet. </p>
<p>To resolve this, we can use this subset of cmdlets, as is shown in figure 16.</p>
<p>Get-User | Where-Object { $_.City –eq “Toronto”} | Set-CasMailbox –OWAEnabled:$false</p>
<p>Figure 16: Disabling OWA access of all of the users located in Toronto city and Ontario State, and after that a list of the new user features</p>
<p>Now, let’s check if everything worked as expected. None of the users who had the OWA feature set as disabled will be able to access their mailboxes through Outlook Web Access. We can test it, trying to see if the user Anderson.Patricio can access his mailbox with Outlook Web Access. We can see that everything worked as shown in the next figure (Figure 17).</p>
<p>Figure 17: After authentication, the user receives the message that OWA is disabled</p>
<p>Conclusion<br />
We have reviewed the steps required to create users (in the traditional way) by using the Exchange Management Console. Then, we reviewed similar tasks using the flexibility of the Exchange Management Shell to help us to create one or more users through commandlets. At the end of this article, we discussed how to manage some mailbox features at user level.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/natex.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/natex.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/natex.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/natex.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/natex.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/natex.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/natex.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/natex.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/natex.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/natex.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/natex.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/natex.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/natex.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/natex.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=24&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://natex.wordpress.com/2008/11/24/managing-mailboxes-in-exchange-server-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b438760a19e4e240c1c5e70571a505e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">natex</media:title>
		</media:content>
	</item>
		<item>
		<title>What’s all that 3D stuff in my MIME message?</title>
		<link>http://natex.wordpress.com/2008/11/16/what%e2%80%99s-all-that-3d-stuff-in-my-mime-message/</link>
		<comments>http://natex.wordpress.com/2008/11/16/what%e2%80%99s-all-that-3d-stuff-in-my-mime-message/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 15:32:47 +0000</pubDate>
		<dc:creator>natex</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[MIME]]></category>

		<guid isPermaLink="false">http://natex.wordpress.com/?p=21</guid>
		<description><![CDATA[I received a question today about the Multipart-MIME examples in my Serving Word presentation. The question is, “What are all those ‘3D’ letters and how can I make Word documents without them?” The 3D is related to encodings. The most common encoding mechanism for text in a Multipart-MIME message in called Quoted-Printable encoding. In this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=21&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="entry-content">
<p>I received a question today about the Multipart-MIME examples in my <a href="http://www.rewindlife.com/archives/000032.cfm"><span style="color:#cccccc;">Serving Word</span></a> presentation. The question is, “What are all those ‘3D’ letters and how can I make Word documents without them?”</p>
<p>The 3D is related to encodings. The most common encoding mechanism for text in a Multipart-MIME message in called <a href="http://www.ietf.org/rfc/rfc1521.txt?number=1521"><span style="color:#cccccc;">Quoted-Printable</span></a> encoding. In this encoding mechanism most standard symbols, numbers, and letters are left exactly as is. All other characters are encoded using an equal sign followed by the two-digit hexidecimal code for the character. For example, a tab can be encoded as “=09″ since a tab is represented by 09.</p>
<p>Since the equal sign is used to indicate encodings, the equal sign itself must also be encoded whenver it’s encoutered. The equal sign is represented by decimal 61 or hexidecimal 3D, and thus is shown as “=3D” in a quoted-printable encoded message.</p>
<p>So, whenever you encode an HTML document, which has a lot of equals signs in it, in quoted-printable format, you’re going to have a lot of “=3D” sequences in the resulting document.</p>
<p>Only a developer will see these, the target application which reads the quoted-printable message will convert them back to regular equal signs, so a user will never see them.</p>
<p>So in short, don’t worry about it, =3D is normal and user’s won’t see it.</p>
<p><a href="http://rewindlife.com/2003/12/08/whats-all-that-3d-stuff-in-my-mime-message/">http://rewindlife.com/2003/12/08/whats-all-that-3d-stuff-in-my-mime-message/</a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/natex.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/natex.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/natex.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/natex.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/natex.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/natex.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/natex.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/natex.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/natex.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/natex.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/natex.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/natex.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/natex.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/natex.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=21&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://natex.wordpress.com/2008/11/16/what%e2%80%99s-all-that-3d-stuff-in-my-mime-message/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b438760a19e4e240c1c5e70571a505e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">natex</media:title>
		</media:content>
	</item>
		<item>
		<title>CDO 1.21 Meeting Item -&gt; Respond on master recurring appointment returns MAPI_E_NOT_FOUND</title>
		<link>http://natex.wordpress.com/2008/10/26/cdo-121-meeting-item-respond-on-master-recurring-appointment-returns-mapi_e_not_found/</link>
		<comments>http://natex.wordpress.com/2008/10/26/cdo-121-meeting-item-respond-on-master-recurring-appointment-returns-mapi_e_not_found/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 06:11:36 +0000</pubDate>
		<dc:creator>natex</dc:creator>
				<category><![CDATA[CDO]]></category>

		<guid isPermaLink="false">http://natex.wordpress.com/?p=19</guid>
		<description><![CDATA[http://www.netomatix.com/articles/KBArticle.aspx?a=921548<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=19&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.netomatix.com/articles/KBArticle.aspx?a=921548">http://www.netomatix.com/articles/KBArticle.aspx?a=921548</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/natex.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/natex.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/natex.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/natex.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/natex.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/natex.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/natex.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/natex.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/natex.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/natex.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/natex.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/natex.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/natex.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/natex.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=19&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://natex.wordpress.com/2008/10/26/cdo-121-meeting-item-respond-on-master-recurring-appointment-returns-mapi_e_not_found/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b438760a19e4e240c1c5e70571a505e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">natex</media:title>
		</media:content>
	</item>
		<item>
		<title>Can&#8217;t visit wordpress.com in China.</title>
		<link>http://natex.wordpress.com/2008/09/27/cant-visit-wordpresscom-in-china/</link>
		<comments>http://natex.wordpress.com/2008/09/27/cant-visit-wordpresscom-in-china/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 05:02:27 +0000</pubDate>
		<dc:creator>natex</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://natex.wordpress.com/?p=16</guid>
		<description><![CDATA[So I can only blog @corp&#8230; What a pity it is for such a nice blog place.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=16&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So I can only blog @corp&#8230;<br />
What a pity it is for such a nice blog place.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/natex.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/natex.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/natex.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/natex.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/natex.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/natex.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/natex.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/natex.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/natex.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/natex.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/natex.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/natex.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/natex.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/natex.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=16&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://natex.wordpress.com/2008/09/27/cant-visit-wordpresscom-in-china/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b438760a19e4e240c1c5e70571a505e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">natex</media:title>
		</media:content>
	</item>
		<item>
		<title>Windbg Commands (from CodeProject)</title>
		<link>http://natex.wordpress.com/2008/09/23/windbg-commands-from-codeproject/</link>
		<comments>http://natex.wordpress.com/2008/09/23/windbg-commands-from-codeproject/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 02:43:32 +0000</pubDate>
		<dc:creator>natex</dc:creator>
				<category><![CDATA[Windbg]]></category>

		<guid isPermaLink="false">http://natex.wordpress.com/?p=12</guid>
		<description><![CDATA[Basic Commands The help file that comes with the WinDbg installation documents commands well, but the following basic commands should get you started: Feature Command What Does it Do Example / Comments See Also Related Commands           Stack trace K, KB x Displays stack trace of current thread (x frames). Kb [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=12&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3><a name="_Toc64133681">Basic Commands</a></h3>
<p>The help file that comes with the WinDbg installation documents commands well, but the following basic commands should get you started:</p>
<table id="table2" border="1">
<tbody>
<tr>
<td>Feature</td>
<td>Command</td>
<td>What Does it Do</td>
<td>Example / Comments</td>
<td>See Also Related Commands</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Stack trace</td>
<td>K, KB <code>x</code></td>
<td>Displays stack trace of current thread (<code>x</code> frames). Kb causes the display to include the first three parameters passed to each function.</td>
<td> </td>
<td>KP, Kp, or KV</td>
</tr>
<tr>
<td>Frame</td>
<td>.frame <code>X</code></td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Register watch</td>
<td>R</td>
<td>Displays register set. reax – displays the <code><span class="code-keyword">eax</span></code> register.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Step</td>
<td>t</td>
<td>Trace = Step into (F11)</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>p</td>
<td>Step over (F10)</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>Step out</td>
<td>Shift + F11</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Disassemble</td>
<td>u</td>
<td>Unassemble next few instructions</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>u &lt;<code>start_address</code>&gt;</td>
<td>Unassemble instructions at <code>start_address</code></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>u &lt;<code>start_address</code>&gt;&lt;<code>end_address</code>&gt;</td>
<td>Unassemble instructions from <code>start_address</code> till <code>end_address</code></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Breakpoints</td>
<td>Bl</td>
<td>List breakpoints.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>be, bd, bc</td>
<td>Enable / disable / clear breakpoint.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>bp</td>
<td>Set a breakpoint.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>bu</td>
<td>Set unresolved breakpoint. Breakpoint is resolved by symbolic name, not absolute address. Use this to set breakpoint at a function whose containing module has not yet been loaded.</td>
<td>bu foo</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Comment</td>
<td>*</td>
<td>Ignores the command</td>
<td>* Hello World</td>
<td> </td>
</tr>
<tr>
<td>Continue</td>
<td>G &lt;<code>address_X</code> / <code>symbol</code>&gt;</td>
<td>Go. Resumes execution until <code>address_X</code></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>GH</td>
<td>Go, exception handled</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>GN</td>
<td>Go, exception not handled</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Quit</td>
<td>Q</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Dumping data</td>
<td>dv</td>
<td>Display local variables.</td>
<td>You need private symbols.</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>Dd &lt;<code>address</code>&gt;</td>
<td>Display <code>dword</code> values at specified address.</td>
<td>To see value of an <code><span class="code-keyword">int</span></code>, DD &lt;<code>addr</code>&gt; L1</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>Ds, da (ASCII), du (Unicode)</td>
<td>Dump string</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>Dt [dt <em>module</em>!<em>typedef</em> <em>adr</em>]</td>
<td>Dump type. Will dump the contents of the memory using <code><span class="code-keyword">typedef</span></code> as a template.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Change / Edit Values</td>
<td>Eb (<code><span class="code-SDKkeyword">byte</span></code>), ed (<code>dword</code>), ea (ASCII), eu (Unicode)</td>
<td>Edit value of a variable</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>List modules</td>
<td>lm</td>
<td>List loaded modules</td>
<td> </td>
<td>Lmi, lml, !dlls</td>
</tr>
<tr>
<td>Threads</td>
<td>~</td>
<td>Lists all threads</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Command on thread n</td>
<td>~n&lt;<code>command</code>&gt;</td>
<td>Switch to a specific thread by thread-id and execute a command on the thread.</td>
<td>~2kb (second thread’s stack)</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Search for a symbol in a module</td>
<td>X module!&lt;pattern&gt;</td>
<td> </td>
<td>X blah!*foo*</td>
<td> </td>
</tr>
<tr>
<td>Dump</td>
<td>.dump</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Source line display</td>
<td>.lines</td>
<td>Turns on source code display</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>ln <em>adr</em></td>
<td>Will show the symbol nearest to that location.</td>
<td> </td>
<td> </td>
</tr>
</tbody>
</table>
<p><a name="_Toc59285745">Note:</a></p>
<ol>
<li>There is no “step out” (Shift+F11). You have to find the return address on the stack manually and use “g <em>adr</em>”. You can find this address by using “k”. If you know the function uses ebp frames you can use “g poi(ebp+4)” to step out.</li>
<li>To inspect local variables:
<ol type="a">
<li>Use the “dv” command.</li>
<li>Then use the “dt &lt;<code>variablename</code>&gt;” command.</li>
<li>Note: you may not see correct values if values are stored in registers or due to FPO.</li>
</ol>
</li>
</ol>
<h3><a name="_Toc64133682">More Commands</a></h3>
<table id="table3" border="1">
<tbody>
<tr>
<td>Feature</td>
<td>Command</td>
<td>What Does it Do</td>
<td>Example / Comments</td>
<td>See Also Related Commands</td>
</tr>
<tr>
<td> </td>
<td>Vertarget</td>
<td>Shows information about the system on which you are debugging.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Data breakpoint (hardware bp)</td>
<td>Ba[ba r/w/e <em>size</em> <em>adr</em>]</td>
<td>Sets a data breakpoint. You can break on read/ write/ execute attempt of a memory location.</td>
<td>ba w4 <em>adr</em></td>
<td> </td>
</tr>
<tr>
<td>Exceptions</td>
<td>.lastevent</td>
<td>Displays last exception record</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Exceptions</td>
<td>Sx, Sxe, sxd, sxn, sxi <code>exception_X</code></td>
<td>Enable/ disable/ notify-only/ ignore first chance exception /event <code>exception_X</code><em>. </em>Example of event: module unload/ thread creation.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Display type</td>
<td>Dt</td>
<td>Shows <code><span class="code-keyword">struct</span></code> and field values.</td>
<td><em>Dt x;</em> // x: int<br />
<em>Dt myStruct;</em> // struct myStruct<br />
<em>Dt myStruct myVar1;</em> // shows myStruct.myVar1</td>
<td> </td>
</tr>
<tr>
<td>Reload symbols</td>
<td>.reload</td>
<td>Reloads symbols using the symbol path you would have set.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Source lines</td>
<td>l+l, l+o, l+s, l+t</td>
<td>Source line options</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>.ecxr</td>
<td>If you had an exception, switches context to faulting context.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>.quit_lock</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>;</td>
<td>Command separator</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>?</td>
<td>Evaluate expression</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>|</td>
<td>Display process information</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>.chain</td>
<td>Lists all loaded debugger extensions.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>.echo &lt;<code><span class="code-SDKkeyword">string</span></code>&gt;</td>
<td>Echo/ print any string</td>
<td>Echo xyz</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>.exr &lt;<code>address_x</code>&gt;</td>
<td>Display exception record at <code>x</code>.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>.cxr &lt;<code>address_x</code>&gt;</td>
<td>Display context record at <code>x</code>.</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>.trap</td>
<td>Dump a trap frame.</td>
<td> </td>
<td> </td>
</tr>
</tbody>
</table>
<h3><a name="_Toc64133683"></a><a name="_Toc59285746">Handy Extension Commands</a></h3>
<ul>
<li>!help – help for WinDbg extension commands.</li>
<li>!load, !unload – to load and unload debugger extension DLLs.</li>
<li>!handle – displays information about handles owned by processes.</li>
<li>!peb &#8211; shows the PEB (process environment block) including DLL information.</li>
</ul>
<p>from: http://www.codeproject.com/KB/debug/windbg_part1.aspx<br />
Another reference: http://www.software.rkuster.com/windbg/cmd.htm</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/natex.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/natex.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/natex.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/natex.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/natex.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/natex.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/natex.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/natex.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/natex.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/natex.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/natex.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/natex.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/natex.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/natex.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=12&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://natex.wordpress.com/2008/09/23/windbg-commands-from-codeproject/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b438760a19e4e240c1c5e70571a505e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">natex</media:title>
		</media:content>
	</item>
		<item>
		<title>Vista:: Shortcut keys</title>
		<link>http://natex.wordpress.com/2008/09/21/vista-shortcut-keys/</link>
		<comments>http://natex.wordpress.com/2008/09/21/vista-shortcut-keys/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 08:16:30 +0000</pubDate>
		<dc:creator>natex</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://natex.wordpress.com/?p=9</guid>
		<description><![CDATA[While I am using the Win-Tab (flip 3d) and Win-L (lock computer) key a lot I was wondering which keystrokes could be handy so I tried them out and here is the result:   Win-Space: Show sidebar Win-D: Show desktop Win-Tab: Flip 3D Ctrl Win-Tab: Flip 3D which stays onto desktop, you can then scroll [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=9&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:x-small;">While I am using the Win-Tab (flip 3d) and Win-L (lock computer) key a lot I was wondering which keystrokes could be handy so I tried them out and here is the result:</span></p>
<p> </p>
<blockquote><p><span style="font-size:x-small;">Win-Space: Show sidebar</span></p>
<p><span style="font-size:x-small;">Win-D: Show desktop</span></p>
<p><strong><span style="color:#408080;font-size:x-small;">Win-Tab: Flip 3D</span></strong></p>
<p><span style="font-size:x-small;">Ctrl Win-Tab: Flip 3D which stays onto desktop, you can then scroll with up, down, left and right keys</span></p>
<p><span style="font-size:x-small;">Win-E: Opens explorer window</span></p>
<p><span style="font-size:x-small;">Win-R: Opens the run dialogue box, yes it still exists</span></p>
<p><span style="font-size:x-small;">Win-T: Tabs between running applications onto the taskbar, you know like you would hover over each task with the mouse and get a live preview of the app&#8217;s.</span></p>
<p><span style="font-size:x-small;">Win-Q: When I tried this one out it launches the Office communicator for me, how does this behave for you?</span></p>
<p><strong><span style="color:#408080;font-size:x-small;">Win-F: Opens the search window.</span></strong></p></blockquote>
<blockquote><p><span style="font-size:x-small;">Win-G: Gives the sidebar the focus and when you press this key combination again it tabs between the gadgets on the sidebar</span></p>
<p><strong><span style="color:#408080;font-size:x-small;">Win-L: Locks the computer, I use this a lot just quickly lock the PC when you go grab a cup of coffee.</span></strong></p>
<p><span style="font-size:x-small;">Win-U: Opens the Ease of Access Center</span></p>
<p><span style="font-size:x-small;">Win-M: Minimizes all windows</span></p>
<p><span style="font-size:x-small;">Shift Win-M: Undo minimize windows</span></p>
<p><span style="font-size:x-small;">Win-X: Opens the Windows Mobility center</span></p>
<p><span style="color:#408080;font-size:x-small;"><strong>Win-Number: Press the Win key and then choose a number of the applications that are in the quick launch task bar. An example the third icon on the taskbar (starting from left) is IE so to run IE press Win-3 and it will launch IE.</strong></span></p></blockquote>
<p><span style="font-size:x-small;">Another shortcut of key combination I use often is the <strong><span style="color:#408080;">ctrl-shift-esc</span></strong> to open the Task Manager</span></p>
<p><span style="font-size:x-small;">Which shortcuts are you using?</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/natex.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/natex.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/natex.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/natex.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/natex.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/natex.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/natex.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/natex.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/natex.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/natex.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/natex.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/natex.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/natex.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/natex.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=natex.wordpress.com&amp;blog=4923797&amp;post=9&amp;subd=natex&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://natex.wordpress.com/2008/09/21/vista-shortcut-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b438760a19e4e240c1c5e70571a505e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">natex</media:title>
		</media:content>
	</item>
	</channel>
</rss>
