From: <Saved by Microsoft Internet Explorer 5>
Subject: Under The Hood
Date: Thu, 22 Jan 2004 14:20:22 -0500
MIME-Version: 1.0
Content-Type: multipart/related;
	boundary="----=_NextPart_000_0000_01C3E0F2.DEEF2D70";
	type="text/html"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.microsoft.com/msj/archive/S2CE.aspx

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Under The Hood</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dutf-8">
<META content=3D"" name=3DDescription>
<META http-equiv=3DPICS-Label=20
content=3D'(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l comment =
"RSACi North America Server" by "inet@microsoft.com" r (n 0 s 0 v 0 l =
0))'>
<META content=3Dall name=3DRobots>
<META content=3Den-us name=3DMS.LOCALE><LINK=20
href=3D"http://www.microsoft.com/msj/css/msdnmag.css" type=3Dtext/css=20
rel=3DStylesheet><LINK =
href=3D"http://www.microsoft.com/msj/css/msdn.css"=20
type=3Dtext/css rel=3DStylesheet>
<SCRIPT language=3Djavascript=20
src=3D"http://www.microsoft.com/msj/js/msdnmag.js"></SCRIPT>

<SCRIPT language=3DJavascript=20
src=3D"http://www.microsoft.com/library/mnp/2/aspx/js.aspx?&amp;name=3DMe=
nu&amp;name=3DMasthead"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT language=3DJavascript=20
src=3D"http://www.microsoft.com/mnp_utility.mspx/mastheadjs?mnpshell=3D%2=
fmsj%2fConfiguration.xml&amp;"=20
type=3Dtext/javascript></SCRIPT>
<LINK=20
href=3D"/library/mnp/2/aspx/css.aspx?locale=3Den-us&amp;name=3DFooter&amp=
;name=3DMasthead&amp;name=3DQuickSearch&amp;name=3DMenu&amp;static=3DPage=
"=20
type=3Dtext/css rel=3DStylesheet>
<SCRIPT language=3DJavascript=20
src=3D"http://www.microsoft.com/mnp_utility.mspx/menujs?mnpshell=3D%2fmsj=
%2fConfiguration.xml&amp;clicktrax=3DFalse"=20
type=3Dtext/javascript></SCRIPT>

<META content=3D"MSHTML 6.00.2800.1276" name=3DGENERATOR></HEAD>
<BODY bgColor=3D#ffffff leftMargin=3D0 topMargin=3D0 rightMargin=3D5>
<SCRIPT language=3DJavascript>
				if (self.name =3D=3D "MNPMainFrame")
					top.location.href =3D self.location.href;
			</SCRIPT>

<TABLE id=3DmnpMastheadTable dir=3Dltr cellSpacing=3D0 cellPadding=3D0 =
width=3D"100%"=20
bgColor=3D#003399 border=3D0>
  <TBODY>
  <TR>
    <TD vAlign=3Dtop width=3D"100%" rowSpan=3D2><A=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/default.aspx"=
><IMG=20
      alt=3D"MSDN Home"=20
      =
src=3D"http://www.microsoft.com/library/mnp/2/gif/banner/bnr_msdn_LTR.gif=
"=20
      border=3D0></A></TD>
    <TD vAlign=3Dtop align=3Dright width=3D19 height=3D20><IMG alt=3D*=20
      =
src=3D"http://www.microsoft.com/library/mnp/2/gif/curveLTR.gif"></TD>
    <TD class=3DmnpGlobalToolbar vAlign=3Dcenter noWrap colSpan=3D2=20
      hover=3D"#FFCC00">&nbsp;&nbsp;<A class=3DmnpGlobalToolbarLink =
dir=3Dltr=20
      =
href=3D"http://www.microsoft.com/isapi/gomscom.asp?target=3D/catalog/"=20
      target=3D_parent=20
      =
guid=3D"m71a06c18019585dbc34a9c4c641a3a08">Products</A>&nbsp;&nbsp;|&nbsp=
;&nbsp;<A=20
      class=3DmnpGlobalToolbarLink dir=3Dltr=20
      =
href=3D"http://www.microsoft.com/isapi/gomscom.asp?target=3D/downloads/" =

      target=3D_parent=20
      =
guid=3D"medf9a186fb918ffce063d27c6d67cffe">Downloads</A>&nbsp;&nbsp;|&nbs=
p;&nbsp;<A=20
      class=3DmnpGlobalToolbarLink dir=3Dltr =
href=3D"http://support.microsoft.com/"=20
      target=3D_parent=20
      =
guid=3D"m1b3560fa9d8189ce386c2508f94c616f">Support</A>&nbsp;&nbsp;|&nbsp;=
&nbsp;<A=20
      class=3DmnpGlobalToolbarLink dir=3Dltr=20
      href=3D"http://www.microsoft.com/isapi/gosearch.asp?target=3D/" =
target=3D_parent=20
      =
guid=3D"mc56a833edd4edfae7787c623c8510629">Search</A>&nbsp;&nbsp;|&nbsp;&=
nbsp;<A=20
      class=3DmnpGlobalToolbarLink dir=3Dltr=20
      =
href=3D"http://www.microsoft.com/isapi/gomscom.asp?target=3D/worldwide/" =

      target=3D_parent=20
      =
guid=3D"m60638ac32df0e62d79e6bce849e695fe">Worldwide</A>&nbsp;&nbsp;|&nbs=
p;&nbsp;<A=20
      class=3DmnpGlobalToolbarLink dir=3Dltr=20
      href=3D"http://www.microsoft.com/isapi/gomscom.asp?target=3D/" =
target=3D_parent=20
      =
guid=3D"m7367a73751f32aeeeff7c8b6363bded0">Microsoft</A>&nbsp;&nbsp;</TD>=
</TR>
  <TR>
    <TD width=3D19>&nbsp;</TD>
    <TD vAlign=3Dtop noWrap height=3D40>&nbsp;</TD>
    <TD class=3DmnpMastheadLogo vAlign=3Dtop noWrap align=3Dright =
height=3D40><A=20
      href=3D"http://www.microsoft.com/" target=3D_parent><IMG =
height=3D40=20
      alt=3D"Microsoft.com home"=20
      =
src=3D"http://www.microsoft.com/library/mnp/2/gif/mslogo/003399.gif"=20
      width=3D112 border=3D0></A></TD></TR></TBODY></TABLE>
<TABLE style=3D"BORDER-BOTTOM: white 1px solid" cellSpacing=3D0 =
cellPadding=3D0=20
width=3D"100%" bgColor=3D#003399 border=3D0>
  <TBODY>
  <TR>
    <TD class=3DmnpLocalToolbar style=3D"COLOR: #ffffff" vAlign=3Dcenter =
noWrap=20
    height=3D20 hover=3D"#FFCC00">&nbsp;<A dir=3Dltr=20
      style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/default.aspx"=
=20
      target=3D_parent>MSDN Home</A>&nbsp;&nbsp;|&nbsp;<A dir=3Dltr=20
      style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/developercent=
ers/"=20
      target=3D_parent =
guid=3D"me575694e5d614e8f9c29caae997e5b2a">Developer=20
      Centers</A>&nbsp;&nbsp;|&nbsp;<A dir=3Dltr=20
      style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/library/defau=
lt.asp"=20
      target=3D_parent=20
      =
guid=3D"mdc7c56877fe73d619a7cefa36109d00d">Library</A>&nbsp;&nbsp;|&nbsp;=
<A=20
      dir=3Dltr style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/downloads/"=20
      target=3D_parent=20
      =
guid=3D"m4cd003c10a1e3c2bbd388c636326cea5">Downloads</A>&nbsp;&nbsp;|&nbs=
p;<A=20
      dir=3Dltr style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/code/" =

      target=3D_parent guid=3D"m4cd003c10a1e3c2bbd388c636326cea6">Code=20
      Center</A>&nbsp;&nbsp;|&nbsp;<A dir=3Dltr=20
      style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/subscriptions=
/"=20
      target=3D_parent=20
      =
guid=3D"m4cd003c10a1e3c2bbd388c636326cea7">Subscriptions</A>&nbsp;&nbsp;|=
&nbsp;<A=20
      dir=3Dltr style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/worldwide.asp=
x"=20
      target=3D_parent guid=3D"m1c464cf3489cb906acdf43f9c49ecfeb">MSDN=20
      Worldwide</A>&nbsp;&nbsp;</TD></TR></TBODY></TABLE>
<TABLE dir=3Dltr cellSpacing=3D0 cellPadding=3D0 width=3D"100%" =
border=3D0>
  <TBODY>
  <TR vAlign=3Dtop>
    <TD style=3D"OVERFLOW-X: hidden" width=3D181 height=3D"100%">
      <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%" border=3D0>
        <TBODY>
        <TR>
          <TD class=3DmnpQuickSearch dir=3Dltr=20
          style=3D"BACKGROUND: #003399; COLOR: #ffffff">
            <FORM style=3D"MARGIN: 0px"=20
            =
action=3Dhttp://msdn.microsoft.com/msdn-online/shared/components/mscomsea=
rch30.aspx><NOBR><FONT=20
            color=3D#ffffff>Search for</FONT><BR><INPUT =
class=3DmnpSearchBox id=3Dqu=20
            style=3D"WIDTH: 165px" maxLength=3D255 name=3Dqu><BR>
            <TABLE style=3D"MARGIN-TOP: 2px" cellSpacing=3D0 =
cellPadding=3D0=20
            width=3D"100%" border=3D0>
              <TBODY>
              <TR>
                <TD class=3DmnpQuickSearch=20
                style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 0px"=20
                width=3D"100%"><SELECT class=3DmnpSearchScopes=20
                  style=3D"WIDTH: 137px" name=3DSearchScope><OPTION =
value=3D1=20
                    selected>All of MSDN</OPTION><OPTION value=3D2>All=20
                    Library</OPTION><OPTION value=3D3>Code &amp;=20
                    Downloads</OPTION><OPTION value=3D4>Product=20
                    Information</OPTION><OPTION value=3D5>Support &amp;=20
                  KB</OPTION></SELECT></TD>
                <TD><INPUT class=3DmnpSearchButton type=3Dsubmit =
value=3DGo><BR></TD></TR></TBODY></TABLE><A=20
            onmouseover=3D"style.color=3D'#FFCC00';" style=3D"COLOR: =
#ffffff"=20
            onmouseout=3D"style.color=3D'#FFFFFF';"=20
            =
href=3D"http://search.microsoft.com/search/search.aspx?View=3Dmsdn&amp;st=
=3Da">Advanced=20
            Search</A></NOBR></FORM></TD></TR></TBODY></TABLE>
      <DIV class=3DmnpMenuTop id=3DmnpMenuTop dir=3Dltr=20
      style=3D"OVERFLOW-X: hidden; WIDTH: 181px" parent=3D""=20
      url=3D"/msj/archive/S2CE.aspx">
      <DIV class=3DmnpInherit>
      <DIV class=3DmnpMenuRow=20
      style=3D"BORDER-LEFT-COLOR: #f1f1f1; BACKGROUND: #f1f1f1; =
OVERFLOW-X: hidden; BORDER-BOTTOM-COLOR: #f1f1f1; WIDTH: 176px; =
BORDER-TOP-COLOR: #f1f1f1; BORDER-RIGHT-COLOR: #f1f1f1"><IMG=20
      class=3DmnpMenuArrow title=3D"" style=3D"LEFT: 166px; VISIBILITY: =
hidden"=20
      height=3D7 alt=3D*=20
      src=3D"http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif" =
width=3D4=20
      border=3D0><A =
href=3D"http://www.microsoft.com/msj/default.aspx">MSJ=20
      Home</A></DIV>
      <DIV class=3DmnpMenuBorder style=3D"WIDTH: 180px"></DIV>
      <DIV class=3DmnpMenuRow=20
      style=3D"BORDER-LEFT-COLOR: #f1f1f1; BACKGROUND: #f1f1f1; =
OVERFLOW-X: hidden; BORDER-BOTTOM-COLOR: #f1f1f1; WIDTH: 176px; =
BORDER-TOP-COLOR: #f1f1f1; BORDER-RIGHT-COLOR: #f1f1f1"><IMG=20
      class=3DmnpMenuArrow title=3D"" style=3D"LEFT: 166px; VISIBILITY: =
hidden"=20
      height=3D7 alt=3D*=20
      src=3D"http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif" =
width=3D4=20
      border=3D0><A=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/msdnmag/find/=
default.aspx">Search</A></DIV>
      <DIV class=3DmnpMenuRow=20
      style=3D"BORDER-LEFT-COLOR: #f1f1f1; BACKGROUND: #f1f1f1; =
OVERFLOW-X: hidden; BORDER-BOTTOM-COLOR: #f1f1f1; WIDTH: 176px; =
BORDER-TOP-COLOR: #f1f1f1; BORDER-RIGHT-COLOR: #f1f1f1"=20
      menu=3D"m3fd9abd6d4e6b1d47da1677743a69def"><IMG =
class=3DmnpMenuArrow title=3D""=20
      style=3D"LEFT: 166px; VISIBILITY: hidden" height=3D7 alt=3D*=20
      src=3D"http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif" =
width=3D4=20
      border=3D0><A =
href=3D"http://www.microsoft.com/msj/code.aspx">Source=20
      Code</A></DIV>
      <DIV class=3DmnpMenuRow=20
      style=3D"BORDER-LEFT-COLOR: #f1f1f1; BACKGROUND: #f1f1f1; =
OVERFLOW-X: hidden; BORDER-BOTTOM-COLOR: #f1f1f1; WIDTH: 176px; =
BORDER-TOP-COLOR: #f1f1f1; BORDER-RIGHT-COLOR: #f1f1f1"=20
      menu=3D"m0e5c80cdf8bdd73274e5171bd96f4ed9"><IMG =
class=3DmnpMenuArrow title=3D""=20
      style=3D"LEFT: 166px; VISIBILITY: hidden" height=3D7 alt=3D*=20
      src=3D"http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif" =
width=3D4=20
      border=3D0><A =
href=3D"http://www.microsoft.com/msj/backissues.aspx">Back=20
      Issues</A></DIV>
      <DIV class=3DmnpMenuBorder style=3D"WIDTH: 180px"></DIV>
      <DIV class=3DmnpMenuRow=20
      style=3D"BORDER-LEFT-COLOR: #f1f1f1; BACKGROUND: #f1f1f1; =
OVERFLOW-X: hidden; BORDER-BOTTOM-COLOR: #f1f1f1; WIDTH: 176px; =
BORDER-TOP-COLOR: #f1f1f1; BORDER-RIGHT-COLOR: #f1f1f1"><IMG=20
      class=3DmnpMenuArrow title=3D"" style=3D"LEFT: 166px; VISIBILITY: =
hidden"=20
      height=3D7 alt=3D*=20
      src=3D"http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif" =
width=3D4=20
      border=3D0><A=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/msdnmag/Subsc=
ribe.aspx">Subscribe</A></DIV>
      <DIV class=3DmnpMenuRow=20
      style=3D"BORDER-LEFT-COLOR: #f1f1f1; BACKGROUND: #f1f1f1; =
OVERFLOW-X: hidden; BORDER-BOTTOM-COLOR: #f1f1f1; WIDTH: 176px; =
BORDER-TOP-COLOR: #f1f1f1; BORDER-RIGHT-COLOR: #f1f1f1"><IMG=20
      class=3DmnpMenuArrow title=3D"" style=3D"LEFT: 166px; VISIBILITY: =
hidden"=20
      height=3D7 alt=3D*=20
      src=3D"http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif" =
width=3D4=20
      border=3D0><A=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/msdnmag/servi=
ce.aspx">Reader=20
      Services</A></DIV>
      <DIV class=3DmnpMenuRow=20
      style=3D"BORDER-LEFT-COLOR: #f1f1f1; BACKGROUND: #f1f1f1; =
OVERFLOW-X: hidden; BORDER-BOTTOM-COLOR: #f1f1f1; WIDTH: 176px; =
BORDER-TOP-COLOR: #f1f1f1; BORDER-RIGHT-COLOR: #f1f1f1"><IMG=20
      class=3DmnpMenuArrow title=3D"" style=3D"LEFT: 166px; VISIBILITY: =
hidden"=20
      height=3D7 alt=3D*=20
      src=3D"http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif" =
width=3D4=20
      border=3D0><A=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/msdnmag/write=
.aspx">Write=20
      to Us</A></DIV>
      <DIV class=3DmnpMenuBorder style=3D"WIDTH: 180px"></DIV>
      <DIV class=3DmnpMenuRow=20
      style=3D"BORDER-LEFT-COLOR: #f1f1f1; BACKGROUND: #f1f1f1; =
OVERFLOW-X: hidden; BORDER-BOTTOM-COLOR: #f1f1f1; WIDTH: 176px; =
BORDER-TOP-COLOR: #f1f1f1; BORDER-RIGHT-COLOR: #f1f1f1"><IMG=20
      class=3DmnpMenuArrow title=3D"" style=3D"LEFT: 166px; VISIBILITY: =
hidden"=20
      height=3D7 alt=3D*=20
      src=3D"http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif" =
width=3D4=20
      border=3D0><A=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/msdnmag/defau=
lt.aspx">MSDN=20
      Magazine</A></DIV>
      <DIV class=3DmnpMenuRow=20
      style=3D"BORDER-LEFT-COLOR: #f1f1f1; BACKGROUND: #f1f1f1; =
OVERFLOW-X: hidden; BORDER-BOTTOM-COLOR: #f1f1f1; WIDTH: 176px; =
BORDER-TOP-COLOR: #f1f1f1; BORDER-RIGHT-COLOR: #f1f1f1"><IMG=20
      class=3DmnpMenuArrow title=3D"" style=3D"LEFT: 166px; VISIBILITY: =
hidden"=20
      height=3D7 alt=3D*=20
      src=3D"http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif" =
width=3D4=20
      border=3D0><A =
href=3D"http://www.microsoft.com/mind/default.asp">MIND=20
      Archive</A></DIV>
      <DIV class=3DmnpMenuRow=20
      style=3D"BORDER-LEFT-COLOR: #f1f1f1; BACKGROUND: #f1f1f1; =
OVERFLOW-X: hidden; BORDER-BOTTOM-COLOR: #f1f1f1; WIDTH: 176px; =
BORDER-TOP-COLOR: #f1f1f1; BORDER-RIGHT-COLOR: #f1f1f1"><IMG=20
      class=3DmnpMenuArrow title=3D"" style=3D"LEFT: 166px; VISIBILITY: =
hidden"=20
      height=3D7 alt=3D*=20
      src=3D"http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif" =
width=3D4=20
      border=3D0><A=20
      =
href=3D"http://msdn.microsoft.com/newsgroups/?url=3D/newsgroups/loadframe=
s.asp?ICP=3Dmsdn&amp;sLCID=3Dus&amp;NewsGroup=3Dmicrosoft.public.msdn.mag=
azine&amp;frame=3Dtrue">Magazine=20
      Newsgroup</A></DIV>
      <DIV class=3DmnpMenuBorder=20
      style=3D"MARGIN-BOTTOM: 0px; WIDTH: 180px"></DIV></DIV></DIV>
      <DIV class=3DmnpAds=20
      style=3D"BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 0px =
solid; BACKGROUND: #f1f1f1; MARGIN-BOTTOM: 20px; BORDER-LEFT: #999999 =
0px solid; WIDTH: 181px; BORDER-BOTTOM: #999999 0px solid; HEIGHT: =
100%">
      <CENTER></CENTER></DIV></TD>
    <TD dir=3Dltr width=3D"100%"><SPAN class=3Deyebrow id=3D_ctl0_eb=20
      style=3D"PADDING-LEFT: 14px; WIDTH: 100%; COLOR: #003399; =
PADDING-TOP: 4px; HEIGHT: 24px"><A=20
      =
href=3D"http://www.microsoft.com/msj/archive/isapi/gomsdn.asp?TARGET=3D/"=
>MSDN=20
      Home</A>&nbsp;&gt;&nbsp;<A=20
      href=3D"http://www.microsoft.com/msj/">MSJ</A></SPAN>=20
      <TABLE cellSpacing=3D0 cellPadding=3D10 border=3D0>
        <TBODY>
        <TR>
          =
<TD><!-----------------><!--BEGIN_CONTENT--><!-----------------><BR><FONT=
=20
            face=3D"verdana, arial, helv" color=3D#000080 =
size=3D3><B>May=20
            1996</B></FONT>
            <P><IMG height=3D33 alt=3D"Microsoft Systems Journal =
Homepage"=20
            src=3D"http://www.microsoft.com/msj/archive/msjheader02.gif" =
width=3D399=20
            border=3D0>
            <P><IMG =
src=3D"http://www.microsoft.com/msj/archive/hoodlogo.gif">=20
            <P><I>Matt Pietrek is the author of </I>Windows 95 System=20
            Programming Secrets<I> (IDG Books, 1995). He works at NuMega =

            Technologies Inc., and can be reached at=20
            71774.362@compuserve.com.</I></P>
            <P>While Windows NT=E2=84=A2 and Windows=C2=AE 95 are quite =
different under the=20
            hood, they both share a key system data structure that many=20
            programmers aren't aware of. To be a bit more precise, =
certain=20
            fields of this data structure are shared. Regardless of the=20
            differences, this structure is used extensively, and is even =

            accessed by compiler-generated code. That's right, your C++ =
compiler=20
            generates code to access system level information =
directly.</P>
            <P>What structure am I talking about? It goes by at least =
two=20
            different names. The Windows 95 code calls it a Thread =
Information=20
            Block (TIB). In Windows NT, it's called the Thread =
Environment Block=20
            (TEB). However, I've seen it referred to as a TIB in some =
Windows NT=20
            header files so, for the purposes of this column, I'll refer =
to it=20
            as a TIB.</P>
            <P>What's in a Thread Information Block that makes it so =
special? As=20
            its name implies, the data found in a TIB relates to =
threads, and=20
            there's a TIB for each thread in the system. In fields =
shared by=20
            Windows NT and Windows 95, you'll find information like a =
pointer to=20
            the thread's structured exception handler list, the location =
of the=20
            thread's stack, and the location of the thread local storage =
slots.=20
            Other fields in the TIB differ between Windows NT and =
Windows=20
95.</P>
            <P>You might be surprised to learn that the TIB didn't first =
appear=20
            in Windows NT or Windows 95. The TIB has its ancestry in =
OS/2,=20
            before Microsoft created Windows NT, and it still exists in =
OS/2=20
            today. In fact, the OS/2 TIB shares much of the same format, =
and is=20
            accessed in the same manner as under Win32=C2=AE. There's =
even a line in=20
            a Microsoft header file (NTDDK.H) that says</P><PRE><CODE> =
&lt;&lt; begin snippet &gt;&gt;
//      This structure MUST MATCH OS/2 V2.0!
&lt;&lt; end snippet &gt;&gt;</CODE></PRE>
            <P>How would you get at the TIB if you were inclined to go =
poking=20
            around? It's as easy as looking at what the FS register =
points to.=20
            Hey! Didn't segments and segment registers go away in Win32? =
For the=20
            most part, that's true. However, in all Intel-based Win32=20
            implementations (even the forgotten stepchild, Win32s), the =
FS=20
            register points to the TIB. Thus, all of the structure =
offsets that=20
            I'll detail later can be used as offsets into the segment =
pointed to=20
            by the FS register. For example, FS:[0] points to the =
structured=20
            exception handling chain, while FS:[2C] points to the =
thread's=20
            thread local storage array.</P>
            <P>I just mentioned that compilers access the TIB structure=20
            directly. Let's look at a small example to see this in =
action. This=20
            is a very small C program that uses structured exception=20
            handling:</P><PRE><CODE> int main()
{
       __try
       {      int i =3D 0;
           =20
       }
       __except( 1 )
       {     int j =3D 1:   }
             =20
      =20
       return 0;
}</CODE></PRE>
            <P>When compiled, the first part of the resulting code looks =
like=20
            this:</P><PRE><CODE> 401000:       PUSH         EBP
401001:       MOV          EBP,ESP
401003:       PUSH         FF
401005:       PUSH         00404000
40100A:       PUSH         00401140
40100F:       MOV          EAX,FS:[00000000]
401015:       PUSH         EAX
401016:       MOV          DWORD PTR FS:[00000000],ESP</CODE></PRE>
            <P>The thing to notice is the series of PUSH instructions. =
They=20
            create a data structure on the stack (sort of like an =
invisible=20
            local variable). The instruction at offset 0x_40100F =
retrieves the=20
            head of the structured exception handling chain out of the =
thread=20
            information block and stores it into EAX-this is where the=20
            FS:[00000000] part of the instruction comes from. The code =
then=20
            pushes the current head of the structured exception handling =
chain=20
            list onto the stack. This finishes the process of creating a =
local=20
            data structure on the stack. Finally, the </P><PRE><CODE> =
MOV DWORD PTR FS:[00000000],ESP</CODE></PRE>
            <P>instruction changes the head of the structured exception =
handling=20
            chain to point at the newly created data structure.</P>
            <P>The key point is that Win32 compilers implicitly know =
about the=20
            TIB and generate code that accesses it. Because the compiler =
can't=20
            know which Win32 system the code will run on, you can safely =
assume=20
            that any compiler-generated code that references the FS =
segment uses=20
            fields common between Win32 platforms.</P>
            <H3><A name=3Dsec0></A>Common Fields in the TIB</H3>
            <P>You just saw one example of a TIB structure field that's =
common=20
            to all Win32 implementations. In this section, I'll list all =
of the=20
            common fields, along with a short description. The fields =
that=20
            differ between Win32 implementations are described =
later.</P>
            <P>There are several different header files floating around =
that=20
            define the fields of a TIB. Unfortunately, they're not =
always=20
            consistent with each other or complete. In the Windows NT =
DDK,=20
            you'll find a structure called an NT_TIB defined in NTDDK.H. =
In the=20
            Windows NT 3.51 service pack 3 SDK update, a new WINNT.H was =
added=20
            that also defines an NT_TIB structure. In addition, someone =
from the=20
            Windows 95 team posted online a snippet from an .H file that =

            described a TIB. In my descriptions, I've tried to use the =
most=20
            descriptive name. You'll see these names in the TIB.H file =
(see=20
            <B><A =
href=3D"http://www.microsoft.com/msj/archive/s2cea.htm#fig1"=20
            target=3Dwindow>Figure 1</A></B>) included with the SHOWTIB =
program=20
            I'll present later on.</P>
            <P>The 00h DWORD pvExcept field contains a pointer to the =
head of=20
            the thread's structured exception handling chain. The chain =
is a=20
            linked list of EXCEPTION_REGISTRATION_RECORD structures =
(which=20
            unfortunately are not defined in any official .H file). For =
more=20
            information on the structured exception handling chain, you =
might=20
            refer to chapter 3 of my book "Windows 95 System Programming =

            Secrets."</P>
            <P>The 04h DWORD pvStackUserTop field contains the linear =
address of=20
            the topmost address of the thread's stack. Put another way, =
at no=20
            point will this thread have a stack pointer value that's =
greater=20
            than or equal to the value of this field.</P>
            <P>The 08h DWORD pvStackUserBase field contains the linear =
address=20
            of the lowest committed page in the thread's user mode =
stack. As the=20
            thread uses successively lower addresses in the stack, those =
pages=20
            will be committed, and this field will be updated =
accordingly.</P>
            <P>The 14h DWORD pvArbitrary field is theoretically =
available for=20
            applications to use however they want. It's almost like an =
extra=20
            thread local storage slot for you to use, although I've =
never seen=20
            an application use it.</P>
            <P>The 18h DWORD ptibSelf field holds the linear address of =
the TIB.=20
            Put another way, the TIB block contains a pointer to itself. =
Why=20
            bother doing this? If the TIB's fields are used extensively, =
it=20
            makes sense for 32-bit code to read and write the TIB using =
regular=20
            pointers rather than using a segment register override (for =
example,=20
            by using FS:[xxxxxxxx]). The SHOWTIB program presented later =
uses=20
            this field.</P>
            <P>The 2Ch DWORD pvTLSArray field contains a pointer to the =
thread=20
            local storage (TLS) slots for the thread. For example, if =
you had a=20
            TLS index value of 4, you could take this pointer, add 10h =
to it ( 4=20
            * sizeof(DWORD) ), and retrieve the TLS value directly. =
Knowing that=20
            this field points to the thread's TLS slots, you could write =
your=20
            own versions of TlsSetValue and TlsGetValue easily. If you =
use _=20
            _declspec(thread) variables in your code, check out the ASM =
code=20
            emitted by your compiler. You'll find that it uses this =
field.</P>
            <P>The location of the TLS slots is quite different between =
Windows=20
            NT and Windows 95. In Windows NT, this field contains a null =
pointer=20
            until the first time a TLS slot is used in the thread, then =
the=20
            system allocates memory for the TLS slots out of the default =
process=20
            heap. (In Windows NT, a buffer overrun of a HeapAlloc'ed =
block could=20
            trash your TLS data.) Under Windows 95, this field always =
points to=20
            the TLS slots that are kept as part of the Ring 3 thread=20
            database.</P>
            <H3><A name=3Dsec1></A>Windows NT TIB fields</H3>
            <P>The meaning of some TIB data differs depending on whether =
you're=20
            running under Windows NT or Windows 95. This section of the =
OS/2=20
            subsystem-Windows NT support running OS/2 1.X applications. =
For=20
            regular Win32 apps, this field appears to always be =
zero.</P>
            <P>The 10h DWORD FiberData field's meaning depends on what =
version=20
            of Windows NT the thread is running. In the Windows NT 3.51 =
service=20
            pack 3 SDK update, WINNT.H describes this field as pointing =
to fiber=20
            data. Fibers are described in the accompanying HLP file as=20
            lightweight threads that are scheduled manually. Prior to =
the=20
            service pack update, this field was named "Version". =
Presumably this=20
            means what version of the system the thread expects to be =
running=20
            on, but I was unable to make sense of the values in this =
field.</P>
            <P>The 20h DWORD processID field holds the process ID of the =
thread.=20
            The GetCurrentProcessId function in Windows NT 3.51 simply =
returns=20
            whatever is in this field.</P>
            <P>The 24h DWORD threadID field holds the thread's ID. The=20
            GetCurrentThreadId function in Windows NT 3.51 returns the =
value in=20
            this field.</P>
            <P>The segment pointed at by the Windows NT TIB actually =
extends far=20
            beyond the fields that I've described here. I've only =
mentioned the=20
            fields that fall within the first 34h bytes (the size of a =
Windows=20
            95 TIB).</P>
            <H3><A name=3Dsec2></A>Windows 95 TIB fields</H3>
            <P>While the Windows NT TIB fields are relatively sedate, =
the=20
            Windows 95 TIB contains a fair amount of intriguing =
information.=20
            This section covers fields specific to the Windows 95 =
TIB.</P>
            <P>The 0CH WORD pvTDB contains the task database selector =
for the=20
            task associated with the thread. The task database is a =
segment=20
            allocated from the 16-bit global heap, and the handle is =
known as an=20
            HTASK. In Windows 95, every process (even a Win32 process) =
has a=20
            task database created for it.</P>
            <P>The 0EH WORD pvThunkSS field contains the selector that =
Windows=20
            95 uses as the 16-bit stack selector when a thread thunks =
from=20
            32-bit code to 16-bit code.</P>
            <P>The 1CH WORD TIBFlags field is intended to hold various =
bit=20
            flags. The only known value is TIB_WIN32 (that is, 1). If =
the low=20
            bit of this value is set, it's a 32-bit thread, otherwise =
it's a=20
            thread from a 16-bit process.</P>
            <P>The 1Eh WORD Win16MutexCount field is related to the =
thread's=20
            ownership of the Win16Mutex, which is a global critical =
section that=20
            only allows one thread at a time to be in 16-bit code. =
Normally,=20
            this field's value is -1, which indicates that the thread =
doesn't=20
            own the Win16Mutex. As the thread enters and leaves thunking =
code,=20
            the value of this field is incremented and decremented=20
            accordingly.</P>
            <P>The 20h DWORD DebugContext field normally contains the =
value=20
            zero. However, when you're debugging the thread's process, =
this=20
            field contains a pointer to a structure that contains =
register=20
            values and is similar to, but not the same as, the CONTEXT =
structure=20
            defined in WINNT.H.</P>
            <P>The 24h DWORD pCurrentPriority field points to a DWORD =
containing=20
            the thread's scheduling priority. This will be some value =
between=20
            zero (lowest) and 31 (highest). The DWORD pointed to by this =
field=20
            is above 3GB in linear memory, which places it in VxD land. =
This=20
            makes sense, as threads are scheduled by the ring 0 Virtual =
Machine=20
            Manager (VMM). For normal priority threads, the priority =
DWORD will=20
            contain 9.</P>
            <P>The 28h DWORD pvQueue field contains the message queue =
selector=20
            assigned to the thread. Message queues are the means by =
which window=20
            messages get to the appropriate windows. In Windows 95, each =
thread=20
            can have its own message queue, but it is initially created =
without=20
            one. Therefore, this field may contain zero.</P>
            <P>The 30h PVOID* pProcess field contains a linear address =
for the=20
            process database representing the process that owns the =
thread.=20
            However, this is not the same as a process handle or process =
ID.</P>
            <H3><A name=3Dsec3></A>Some Random Notes on TIBs</H3>
            <P>As I was experimenting with TIBs for this column, I came =
across=20
            some tidbits of information worth passing on. First, in =
Windows 95,=20
            at offset 52h in each task database segment, you'll find the =
TIB=20
            selector for the primary thread in the process. At offset =
54h in the=20
            task database, you'll find the linear address of the TIB. =
This is=20
            particularly interesting in that task databases are used by =
the=20
            16-bit components of Windows 95. It appears that the 16-bit=20
            components may occasionally access thread-specific data in =
the=20
            TIB.</P>
            <P>I also noticed the different uses of the FS register =
between=20
            Windows NT and Windows 95. Under Windows NT, the FS register =
is=20
            always the same for each thread's TIB. This implies that the =
linear=20
            address for the FS selector has to change whenever a thread =
switch=20
            occurs. In contrast, Windows 95 dedicates a different =
selector for=20
            each TIB (and hence, for each thread). The linear address of =
a=20
            Windows 95 TIB selector doesn't change. I'll let you guess =
which=20
            method is kinder to system resources.</P>
            <H3><A name=3Dsec4></A>The SHOWTIB program</H3>
            <P>To bring the TIB to life, I wrote the SHOWTIB program =
(see=20
            <B>Figure 1</B>). SHOWTIB is a simple command-line program =
with two=20
            goals. The first is to create one or more threads. (You =
specify the=20
            actual number of threads on the command line. For example, =
"SHOWTIB=20
            5" tells SHOWTIB to spin off five threads and display their =
TIBs.)=20
            The second goal is to display the various fields of each =
thread's=20
            TIB structure once all the threads are running. I show only =
the TIB=20
            structures for threads created by the primary thread, not =
for the=20
            primary thread itself.</P>
            <P>In displaying the TIB for each thread, SHOWTIB first =
displays the=20
            fields common to all Win32 operating systems, then decides =
whether=20
            it's running on Windows NT or Windows 95. Depending on which =
system=20
            is running, SHOWTIB displays specific fields in the TIB =
relevant to=20
            the operating system. To make each TIB display come out =
coherent and=20
            in one piece, the DisplayTIB function guards the display =
code with a=20
            critical section.</P>
            <P>There are two interesting pieces of code in SHOWTIB.CPP. =
Near the=20
            start of the DisplayTIB function, the code uses a bit of =
in-line=20
            assembler to grab the field at offset 18h in the TIB and =
stash it=20
            away into a pointer. Offset 18h is the linear address of the =
TIB. I=20
            did this so I could access the rest of the TIB with a =
regular=20
            pointer. The alternative would have meant using in-line =
assembler=20
            and FS segment overrides to retrieve all of the values. =
Win32=20
            compilers simply don't have a way to let you easily read =
from any=20
            segment other than the data segment (the DS register).</P>
            <P>The second interesting piece of code is near the end of =
main.=20
            After creating all the threads and storing all the =
corresponding=20
            thread handles into an array, I call WaitForMultipleObjects, =
passing=20
            in the array of thread handles. If I didn't do this, the =
primary=20
            thread could return from the main routine and call the exit =
function=20
            before the worker-bee threads had terminated. The result =
would be an=20
            incomplete display of all the various TIBs.</P>
            <P>While Windows NT and Windows 95 are quite different under =
the=20
            hood, the TIB is one of the few areas you can rely on to be =
the=20
            same. This isn't a coincidence; since threading is such an =
integral=20
            part of both operating systems, it's only natural that some =
common=20
            method of supplying thread-specific information would be =
needed. The=20
            TIB is not described in any official documentation other =
than .H=20
            files. Nonetheless, it's an integral part of the Win32 =
specification=20
            that all Win32 implementations must conform to.</P>
            <P>Have a question about programming in Windows? You can =
mail it=20
            directly to Under The Hood, Microsoft Systems Journal, 825 =
Eighth=20
            Avenue, 18th Floor, New York, New York 10019, or send it to =
MSJ (re:=20
            Under The Hood) via:</P>
            <TABLE>
              <COLGROUP>
              <COL vAlign=3Dtop width=3D131>
              <COL vAlign=3Dtop width=3D184></COLGROUP>
              <TBODY>
              <TR>
                <TD vAlign=3Dtop>
                  <P>Internet:</P></TD>
                <TD vAlign=3Dtop>
                  <P>Matt Pietrik<BR>71774.362@compuserve.com</P>
                  <P>Eric =
Maffei<BR>ericm@microsoft.com</P></TD></TR></TBODY></TABLE>
            <P><I>From the May 1996 issue of Microsoft Systems =
Journal.</I> =
<!--FOOTER_START--><!--FOOTER_END--><!-----------------><!--END_CONTENT--=
><!-----------------></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TA=
BLE><?xml version=3D"1.0" encoding=3D"utf-16"?>
<TABLE dir=3Dltr style=3D"COLOR: #ffffff" cellSpacing=3D0 =
cellPadding=3D0 width=3D"100%"=20
bgColor=3D#003399 border=3D0>
  <TBODY>
  <TR>
    <TD class=3DmnpFooterTopRow noWrap height=3D20>&nbsp;<A=20
      onmouseover=3D"mnpFooterMouse(this, '#FFCC00')"=20
      style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      onmouseout=3D"mnpFooterMouse(this, '#FFFFFF')"=20
      =
href=3D"http://register.microsoft.com/contactus30/contactus.asp?domain=3D=
msdn"=20
      target=3D_parent>Contact Us</A>&nbsp;|&nbsp;<A=20
      onmouseover=3D"mnpFooterMouse(this, '#FFCC00')"=20
      style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      onmouseout=3D"mnpFooterMouse(this, '#FFFFFF')"=20
      href=3D"javascript:window.navigate('mailto:?subject=3DAn article =
from MSJ&amp;body=3D' + this.document.title + ' ' + =
this.window.location);"=20
      target=3D_parent>E-mail this Page</A>&nbsp;|&nbsp;<A=20
      onmouseover=3D"mnpFooterMouse(this, '#FFCC00')"=20
      style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      onmouseout=3D"mnpFooterMouse(this, '#FFFFFF')"=20
      =
href=3D"http://www.microsoft.com/isapi/gomsdn.asp?TARGET=3D/flash/"=20
      target=3D_parent>MSDN Flash Newsletter</A>&nbsp;|&nbsp;<A=20
      onmouseover=3D"mnpFooterMouse(this, '#FFCC00')"=20
      style=3D"COLOR: #ffffff; TEXT-DECORATION: none"=20
      onmouseout=3D"mnpFooterMouse(this, '#FFFFFF')"=20
      href=3D"http://www.microsoft.com/legal/"=20
target=3D_parent>Legal</A>&nbsp;</TD></TR>
  <TR>
    <TD class=3DmnpFooterBottomRow noWrap height=3D30><FONT=20
      color=3D#ffffff>&nbsp;<SPAN dir=3Dltr>=C2=A92004 Microsoft =
Corporation. All rights=20
      reserved.</SPAN>&nbsp;<A onmouseover=3D"mnpFooterMouse(this, =
'#FFCC00')"=20
      style=3D"COLOR: #ffffff" onmouseout=3D"mnpFooterMouse(this, =
'#FFFFFF')"=20
      =
href=3D"http://www.microsoft.com/isapi/gomscom.asp?target=3D/info/cpyrigh=
t.htm"=20
      target=3D_parent>Terms of Use</A>&nbsp;|&nbsp;<A=20
      onmouseover=3D"mnpFooterMouse(this, '#FFCC00')" style=3D"COLOR: =
#ffffff"=20
      onmouseout=3D"mnpFooterMouse(this, '#FFFFFF')"=20
      =
href=3D"http://www.microsoft.com/isapi/gomscom.asp?target=3D/info/privacy=
.htm"=20
      target=3D_parent>Privacy =
Statement</A>&nbsp;</FONT></TD></TR></TBODY></TABLE>
<SCRIPT language=3DJavascript type=3Dtext/javascript>
			function mnpFooterMouse(el, co)
			{
				if (el.style) el.style.color =3D co;
			}
		</SCRIPT>
<LAYER visibility=3D"hide">
<DIV style=3D"DISPLAY: none"><IMG height=3D0 hspace=3D0=20
src=3D"http://c.microsoft.com/trans_pixel.asp?source=3Dwww&amp;TYPE=3DPV&=
amp;p=3Dmsj_archive&amp;r=3Dhttp%3a%2f%2fwww.codeproject.com%2fthreads%2f=
xtib.asp"=20
width=3D0 border=3D0></DIV></LAYER></BODY></HTML>

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.microsoft.com/library/mnp/2/gif/banner/bnr_msdn_LTR.gif

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
0Z07WpHTp52EWHhUlXQ66GIrhoXlEAgAOw==

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.microsoft.com/library/mnp/2/gif/curveLTR.gif

R0lGODlhEgAUALMAAMDAwIaGhnl5eXR0dG9vb2tra1NTU0ZGRkFBQTMzMyoqKhMTEwkJCQUFBQAA
AAAAACH5BAEAAAAALAAAAAASABQAQAQ4EACSnL0Yy807ul0YGiLXZE5ZHqm4oKC6ZXI3WHXY5mqg
wJpSAZhj0HKCIO+0WzZ5z5yCxxlQOREAOw==

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.microsoft.com/library/mnp/2/gif/mslogo/003399.gif

R0lGODlhcAAoAMQAAAAAAP///+7x+AAzmRBAnyBNpjBZrERptFV3u2WEwXWRyImh0Jmt1qq73brI
487Y697l8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAA
cAAoAAAF/+AgjmRpnmiqrmzrvnAsz3Rt33iu73zv/8CgcEgsGo/IpHLJbDqf0Kh0Sq0uHVhsYsTI
OhaGLGJKUJgNw0NgvVaICuz1QsFGRwsC9iFhPvzocW4DDHEBCHxmU4QBAm5sgj0NhW5whQUHmHYD
BXwJBSMGmJ8GaAQIZgqaIgaoCmMkBIgKnwOhEGsOe49ofju3gYOFEAaPtQ6FCyK/DLcKCXlxDKsP
hQEPBCIK0Gxb29VrDQYJqjaVcQ7mbA0JbAgI3o8E1cdrAtRyA/eNkm3BaxC/AgD6tmuWDgTzFm1T
sCiAAWjDCPwSgJDgtQH8AphrICILHzbSBvx6cKAhggPQGP8cwMZjAZuR9e4FOHAPQsNeC7IMfFBA
Jq2Bal42MEgAmgCWLtcMoAdhgLw1r3rQC9CwzbanVKE9OEHv6MYRA1l9S1AxQLKObAaoG1CWVo84
7NgICBog1yM2Z0vgHUAXErUHW/gym6RHRFFcxPoBauqDbtNAcc2G3TtAgc7CfUWgZNDKYIGAU18N
NFOYHkcfA6XJJWByqsh6p9g8GIgNK4RDRmW6kVgvsbUDO/0FEKF1ZSRuavv5hOag8jcBBvhtFZG0
EPTI1bZkjMMz35rphXwE/FSPgG3fgrRFw7aMhHqQPwP+e0Wg+hoGtSkn+NW8CqZeKxDwH0skhJKJ
CQJiQqAdFQw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4Yc7hAAAOw==

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.microsoft.com/library/mnp/2/gif/arrowLTR.gif

R0lGODlhBAAHAPcAAP8zAP///////+7u7tfX18zMzMHBwaqqqpmZmQAAAAAAAAAAAAAAAAAAAAAA
AAAAAG91dC1iYXNpYy5naWYAAAAAAAAAAAAAAAAAAAAAAAAAAAAXABRH6HfQmxcA0JsXACIC+38H
AAAA7PQSADVa6HcgPRMAJvkXADT5FwB+8xcAnvMXACCwFwCk9hIAAAAAAAAAXy2oAF8t4PQSADz2
EgDM9RIAAAAAACD1EgB+L/h3AABfLQEAAAACAAAArPUSAKgAXy0AEF8t2CNfLQEAAAC8aPh3CQQA
AAAQXy0AAAAAbPUSACQAAABxI/h3SA0TAAAAEwAkAAAAAAAAAET1EgAAAgAA/PYSAEWQ+3ewI/h3
/////wz3EgDgo/x396P8dwAAAAAAAAAAKPoSAAIAAADU9RIApPYSACx5AAAAAAAACQQAABgVXy0J
BAAAeAETACCwFwCgmQEA2CNfLQAAAAABAAAAzPUSAAAAAAA49RIAPPYSAAAAAABFkPt3oJkBAP//
//8AEF8tjPUSALD/EgAgsBcAeAETACCwFwB4ARMAGLAXAHlr+HcAAF8tsDBfLTj2EgAAAAAAt1Do
dwAAXy2wMF8tOPYSAAAAAACk9hIALHkAAAAAAACwMF8tEAAAAAkAAACo9hIA/gAAAGz2EgCIZeF3
aFtIAP4AAACE9hIA7m5gLRIAAAAAAAAA/gAAAAAAAACY9hIADmnhdwAAAADubmAtCQAAAKj2EgAJ
AAAAAAAAAHZbSADK0EcAzvQXAGD0FwCrqUIAAABfLe5uYC1oW0gA/wAAAAAAEwDnBQAAaPYXAGD2
FwBoARMAAPcSACQAAAAseQAAAPQXAAAAAACA9xcAuCYYAHgBEwBg9hcAaPYXACABAAABAAAABgJk
AwYCZANI9xIARZD7d3Af+Hf/////WPcSAMwy6HcAABMACAAUABgBAABg9BcAAAAAAAAAAAAAAAAA
AAAAAMTARADD9hcARMkVAMf2FwCH+hIA/////2j2FwAuwUQAw/YXACH5BAEAAAIALAAAAAAEAAcA
QAgSABMIGJigoICCAgUSVIgQ4cCAADs=

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.microsoft.com/msj/archive/msjheader02.gif

R0lGODlhjwEhAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Z
mf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8A
Zv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZ
M8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wA
AJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm
/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/
zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZm
mWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/
ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNm
MzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/
AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz
/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAjwEhAAAI/wABCBxI
sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bN
mzhz6tzJs6fPmyoABB0qtGjCoAiJEj04VIXTpUmFQjXYdCpTqUapSnWadWDVrg6bgi2odKxXrEiv
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

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.microsoft.com/msj/archive/hoodlogo.gif

R0lGODlh9ABNAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Z
mf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8A
Zv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZ
M8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wA
AJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm
/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/
zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZm
mWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/
ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNm
MzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/
AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz
/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAA9ABNAAAI/wABCBxI
sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bN
mzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp3q8QkmT1ezYt2qtasnElRLklgxtuyKg2bL
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
HBEQADs=

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://c.microsoft.com/trans_pixel.asp?source=www&TYPE=PV&p=msj_archive&r=http%3a%2f%2fwww.codeproject.com%2fthreads%2fxtib.asp

R0lGODlhAQABAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/
/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm
AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/
MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm
ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/
mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm
zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/
/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ
AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA
M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ
ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A
mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z
zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAABAAEA
AAgEAFEEBAA7

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.microsoft.com/msj/css/msdnmag.css

PRE {
	FONT-SIZE: 90%; COLOR: #000000
}
PRE.clsCode {
	FONT-SIZE: 80%; COLOR: #000000
}
A:link {
	COLOR: #003399; TEXT-DECORATION: none
}
A:visited {
	COLOR: #6699cc; TEXT-DECORATION: none
}
A.clsBackTop {
	MARGIN-TOP: 10px; FONT-SIZE: 90%; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: =
0px; COLOR: #003399
}
A.clsBackTop:visited {
	MARGIN-TOP: 10px; FONT-SIZE: 90%; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: =
0px; COLOR: #003399
}
A.clsIncCpyRt {
	FONT-SIZE: 95%; COLOR: #ffffff
}
SPAN.clsFrom {
	FONT-WEIGHT: normal; FONT-SIZE: 100%; COLOR: #000000; LINE-HEIGHT: =
normal; FONT-STYLE: normal; FONT-VARIANT: normal
}
.articletext {
	FONT-SIZE: 80%; FONT-FAMILY: verdana,arial,helvetica
}
.articletextplain {
	FONT-FAMILY: verdana,arial,helvetica
}
SPAN.dropcap {
	FONT-WEIGHT: bold; FONT-SIZE: 225%; COLOR: #cc3300; LINE-HEIGHT: 100%; =
FONT-FAMILY: verdana,arial,helvetica; FONT-VARIANT: normal
}
SPAN.QAcap {
	FONT-WEIGHT: bold; FONT-SIZE: 140%; COLOR: #cc3300; LINE-HEIGHT: 100%; =
FONT-FAMILY: verdana,arial,helvetica; FONT-VARIANT: normal
}
SPAN.clsLevel {
	FONT-WEIGHT: bold; FONT-SIZE: 100%; COLOR: #ffffff; LINE-HEIGHT: =
normal; FONT-STYLE: normal; FONT-VARIANT: normal
}
SPAN.clsSum {
	FONT-WEIGHT: bold; COLOR: #000080
}
SPAN.clsSumText {
	FONT: 100% verdana,arial,helvetica; COLOR: #000000
}
SPAN.clsSubhead {
	FONT: bold 100% verdana,arial,helvetica; COLOR: #000080
}
SPAN.clsInfo {
	FONT: 90% verdana,arial,helvetica
}
SPAN.clsBio {
	FONT-WEIGHT: normal; FONT-SIZE: 90%; COLOR: #000000; LINE-HEIGHT: =
normal; FONT-STYLE: normal; FONT-VARIANT: normal
}
.clsGloss {
	FONT: bold 85% verdana,arial,helvetica; COLOR: #000080
}
.clsBodyTxt {
=09
}
TD.clsLND {
	COLOR: red; LINE-HEIGHT: 1
}
SPAN.functionbartext {
	COLOR: #ffffff
}
SPAN.st {
	FONT-WEIGHT: bold; LINE-HEIGHT: 100%; FONT-STYLE: normal; FONT-VARIANT: =
normal
}
SPAN.category {
	FONT-WEIGHT: bold; VERTICAL-ALIGN: top; COLOR: #ffffff; LINE-HEIGHT: =
normal; FONT-STYLE: normal; FONT-VARIANT: normal
}
SPAN.pd {
	COLOR: #008080
}
.infobar {
	BORDER-RIGHT: #99ccff 1px outset; BORDER-TOP: #99ccff 1px outset; =
BORDER-LEFT: #99ccff 1px outset; BORDER-BOTTOM: #99ccff 1px outset
}
.clsFigs {
	FONT: bold 85% verdana,arial,helvetica
}
.clsField {
	FONT: bold 85% verdana,arial,helvetica; COLOR: #000000
}
.clsTable {
	FONT: 80% verdana,arial,helvetica; COLOR: #000000
}
.clsFigure {
	FONT: bold 100% verdana,arial,helvetica
}
.clsCap {
	FONT: bold 85% verdana,arial,helvetica; COLOR: #000080
}
.clsCaptxt {
	FONT: 85% verdana,arial,helvetica; COLOR: #000080
}

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.microsoft.com/msj/css/msdn.css

TD {
	FONT-SIZE: 68%; FONT-FAMILY: verdana,arial,helvetica
}
TH {
	FONT-SIZE: 68%; FONT-FAMILY: verdana,arial,helvetica
}
A:link {
	COLOR: #003399
}
A:visited {
	COLOR: #660099
}
A:hover {
	COLOR: #ff3300
}
A.small {
	FONT-SIZE: 95%; TEXT-DECORATION: underline
}
H1 {
	FONT-SIZE: 165%; MARGIN: 0px
}
H2 {
	MARGIN-TOP: 1em; FONT-SIZE: 125%; MARGIN-BOTTOM: 0px
}
H3 {
	FONT-SIZE: 115%; MARGIN-BOTTOM: 0px
}
H4 {
	FONT-SIZE: 100%; MARGIN-BOTTOM: 0px
}
H5 {
	FONT-SIZE: 100%; MARGIN-BOTTOM: 0px
}
H6 {
	FONT-SIZE: 100%; MARGIN-BOTTOM: 0px
}
P {
	MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 1em; FONT-FAMILY: =
verdana,arial,helvetica
}
PRE {
	PADDING-RIGHT: 5pt; MARGIN-TOP: 1em; PADDING-LEFT: 5pt; BACKGROUND: =
#eeeeee; MARGIN-BOTTOM: 1em; PADDING-BOTTOM: 5pt; MARGIN-LEFT: 0px; =
PADDING-TOP: 5pt
}
HR {
	COLOR: #cccccc; HEIGHT: 1px
}
UL {
	MARGIN-TOP: 10px; MARGIN-BOTTOM: 10px; MARGIN-LEFT: 25px
}
OL {
	MARGIN-TOP: 10px; MARGIN-BOTTOM: 10px; MARGIN-LEFT: 25px
}
UL LI {
	MARGIN-BOTTOM: 0.5em; LINE-HEIGHT: 1.5em
}
UL LI LI {
	LIST-STYLE-TYPE: disc
}
OL LI {
	MARGIN-BOTTOM: 0.7em
}
.eyebrow {
	BORDER-RIGHT: #999999 0px solid; BORDER-TOP: #999999 0px solid; =
FONT-SIZE: xx-small; BORDER-LEFT: #999999 0px solid; COLOR: #003399; =
BORDER-BOTTOM: #999999 1px solid; FONT-FAMILY: Verdana, Arial, =
Helvetica; BACKGROUND-COLOR: #ffffff
}
.downleveleyebrow {
	BORDER-RIGHT: #999999 0px solid; BORDER-TOP: #999999 0px solid; =
BORDER-LEFT: #999999 0px solid; COLOR: #003399; BORDER-BOTTOM: #999999 =
1px solid; FONT-FAMILY: Verdana, Arial, Helvetica; BACKGROUND-COLOR: =
#ffffff
}
A.EyeBrowLink {
	FONT-SIZE: x-small; MARGIN-LEFT: 0px; CURSOR: hand; COLOR: #003399; =
MARGIN-RIGHT: 0px; FONT-STYLE: normal; FONT-FAMILY: Verdana
}

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.microsoft.com/msj/js/msdnmag.js

var x=3D0;

function printHidden() {
if (window.navigator.userAgent.indexOf("MSIE ")!=3D-1 && =
navigator.appVersion.substr(0, 1) >=3D 4){
  document.body.insertAdjacentHTML("beforeEnd",=20
    "<iframe name=3D'printHiddenFrame' width=3D'0' =
height=3D'0'></iframe>");
  doc =3D printHiddenFrame.document;
  doc.open();
  doc.write(
    "<frameset onload=3D'parent.printFrame(printMe);' rows=3D\"100%\">" =
+
    "<frame name=3DprintMe src=3D\"print.asp\">" +
    "</frameset>");
  doc.close();
}
else{
  document.location.href=3D"print.asp";
}
}

function printFrame(frame) {
  frame.focus();
  frame.print();
  return;
}


function OpenUrl(url)
{
var childWin;
childWin =3D =
window.open(url,'window','height=3D300,width=3D550,status=3Dyes,toolbar=3D=
no,menubar=3Dno,location=3Dno,scrollbars=3Dyes,resizable=3Dyes');
childWin.focus();
}

function ToggleDisplay(oButton, oItems)
{
	if (oItems.style.display =3D=3D "none")	{
		oItems.style.display =3D "";
		oButton.src =3D "/msdnmag/images/minus.gif";
	}	else {
		oItems.style.display =3D "none";
		oButton.src =3D "/msdnmag/images/plus.gif";
	}
	return;
}
function change()	{
	var coll =3D document.all.tags("DIV");
	if (x!=3D1){
	{for (i=3D0; i<coll.length; i++)
		if (coll[i].style.display=3D=3D'none' && =
coll[i].id.indexOf("menu")>-1){
			coll[i].style.display=3D'';
		}
	}
	button1.value=3D" Collapse All "
	x=3D1
	var coll2 =3D document.all.tags("IMG");
	{for (i=3D0; i<coll2.length; i++)
		if (coll2[i].id.indexOf("btns")>-1){
			coll2[i].src=3D'/msdnmag/images/minus.gif';
		}
	}

	}
	else {
	{for (i=3D0; i<coll.length; i++)
		if (coll[i].style.display=3D=3D'' && coll[i].id.indexOf("menu")>-1){
			coll[i].style.display=3D'none';
		}
	}
	button1.value=3D" Expand All "
	x=3D0
	var coll2 =3D document.all.tags("IMG");
	{for (i=3D0; i<coll2.length; i++)
		if (coll2[i].id.indexOf("btns")>-1){
			coll2[i].src=3D'/msdnmag/images/plus.gif';
		}
	}
	}
}

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.microsoft.com/library/mnp/2/aspx/js.aspx?&name=Menu&name=Masthead


var mnpMenuTop =3D null;
var mnpMenuKill =3D null;
var mnpMenuPopup =3D null;
var mnpMenuUrl =3D null;
var mnpMenuParent =3D null;
var mnpMenuScrollTimer =3D null;
var mnpMenuShadows =3D new Array();
var mnpMenuDirSave =3D "LTR";
var mnpMenuCTSave =3D false;
var mnpMenuRenderStart =3D null;
var mnpMenuShadowsEnabled =3D true;

window.attachEvent("onload", mnpMenuInit);

function mnpMenuInit()
{
	try
	{
		mnpMenuDirSave =3D mnpMenuDir();
		mnpMenuCTSave =3D mnpMenuCT();
	}
	catch(e)
	{
		return;
	}
	mnpMenuTop =3D document.getElementById("mnpMenuTop");
	mnpMenuUrl =3D mnpMenuTop.getAttribute("url");
	mnpMenuParent =3D mnpMenuTop.getAttribute("parent");
	mnpMenuAttach(mnpMenuTop);
}

function mnpPage(label, url, target, menu, linkID)
{
	this.label =3D label;
	this.url =3D url;
	this.target =3D target;
	this.menu =3D menu;
	this.linkID =3D linkID;
}

function mnpLabel(label)
{
	this.label =3D label;
}

function mnpMenuEnter()
{
	if (mnpMenuKill)
	{
		window.clearTimeout(mnpMenuKill);
		mnpMenuKill =3D null;
	}
}

function mnpMenuLeave()
{
	mnpMenuKill =3D window.setTimeout("mnpMenuKiller()", 200);
}

function mnpMenuKiller()
{
	mnpKillMenu(mnpMenuTop.getAttribute("currentMenu"));
	mnpMenuTop.removeAttribute("currentMenu");
}

function mnpMenuAttach(el)
{
	el.attachEvent("onmouseenter", mnpMenuEnter);
	el.attachEvent("onmouseleave", mnpMenuLeave);
	var divs =3D el.getElementsByTagName("DIV");
	for (var i=3D0; i < divs.length; i++)
	{
		var div =3D divs.item(i);
		if (div.className =3D=3D "mnpMenuRow")
		{
			div.attachEvent("onmouseenter", mnpMenuMouseover);
			div.attachEvent("onmouseleave", mnpMenuMouseout);
			div.attachEvent("onmousedown", mnpMenuMousedown);
			div.attachEvent("onmouseup", mnpMenuMouseup);
			div.setAttribute("save-background", div.style.background);
			div.setAttribute("save-border", div.style.borderColor);
			var a =3D div.getElementsByTagName("A");
			if (a.length > 0)
			{
				var a0 =3D a[0];
				if (a0.getAttribute("aoff"))
					a0.outerHTML =3D a0.innerHTML;
				else
				{
					div.setAttribute("status", a0.href);
					div.attachEvent("onclick", mnpMenuClick);
				}
			}
			if (div.getAttribute("menu"))
			{
				var imgs =3D div.getElementsByTagName("IMG");
				if (imgs.length > 0)
				{
					var img =3D imgs[0];
					img.style.visibility =3D "visible";
				}
				else
				{
					var x;
					if (mnpMenuDirSave =3D=3D "LTR")
						x =3D (div.offsetWidth - 10) + "px";
					else if (mnpMenuTop.contains(div))
						x =3D "4px";
					else
						x =3D "6px";
					var img =3D "<IMG src=3D'/library/mnp/2/gif/arrow" + mnpMenuDirSave =
+ ".gif' width=3D'4' height=3D'7' border=3D'0' class=3D'mnpMenuArrow' =
style=3D'left: " + x + "' />";
					div.insertAdjacentHTML("afterBegin", img);
				}
			}
		}
	}
}

function mnpMenuClick()
{
	var div =3D window.event.srcElement;
	var a =3D div.getElementsByTagName("A");
	if (a.length =3D=3D 0) return;
	if (window.event.shiftKey)
	{
		var target =3D a[0].target;
		a[0].target =3D "_new";
		a[0].click();
		a[0].target =3D target;
	}
	else
		a[0].click();
}

function mnpKillMenu(id)
{
	if (id =3D=3D null) return;
	var menu =3D document.getElementById(id);
	var current =3D menu.getAttribute("currentMenu");
	if (current)=20
	{
		mnpKillMenu(current);
		menu.removeAttribute("currentMenu");
	}
	var temp =3D mnpMenuShadows[id];
	if (temp)
	{
		var i;
		for (i=3D0; i<temp.length; i++)
			if (temp[i])
				document.body.removeChild(temp[i]);
		mnpMenuShadows[id] =3D null;
	}
	var parent =3D =
document.getElementById(menu.getAttribute("parentMenu"));
	var rows =3D parent.getElementsByTagName("DIV");
	for (var i=3D0; i<rows.length; i++)
	{
		var row =3D rows.item(i);
		var m =3D row.getAttribute("menu");
		if (m =3D=3D id)
		{
			row.style.background =3D row.getAttribute("save-background");
			row.style.borderColor =3D row.getAttribute("save-border");
		}
	}
	show_elements("SELECT", menu);
	show_elements("OBJECT", menu);
	menu.style.display =3D "none";
}

function mnpMenuOpen(id, parentId, x, y)
{
	var parent;
	try
	{
		parent =3D document.getElementById(parentId);
	}
	catch(e)
	{
		return;
	}
	var current =3D parent.getAttribute("currentMenu");
	if (id =3D=3D current) return;
	mnpKillMenu(current);
	if (id)
		parent.setAttribute("currentMenu", id);
	else
	{
		parent.removeAttribute("currentMenu");
		return;
	}
=09
	var div =3D document.getElementById(id);
	if (div =3D=3D null)
	{
		var menu =3D eval("new " + id + "()");
		var html =3D "<DIV id=3D'" + id + "' class=3D'mnpMenuSub' dir=3D'" + =
mnpMenuDirSave + "'>";
		html +=3D "<DIV class=3D'mnpMenuScroller' style=3D'display: none; =
background: #F1F1F1; border-color: #F1F1F1' =
onmouseenter=3D'mnpStartScroll(-1)' =
onmouseleave=3D'mnpStopScroll()'><IMG =
src=3D'/library/mnp/2/gif/up_disabled.gif' width=3D'7' height=3D'9' =
/></DIV>";
		html +=3D "<DIV class=3D'mnpMenuScrollArea'>";
		var isThisPage =3D false;
		for (var i=3D0; i<menu.items.length; i++)
		{
			var item =3D menu.items[i];
			var url =3D item.url;
			if (url =3D=3D mnpMenuUrl)
			{
				isThisPage =3D true;
				break;
			}
		}
		for (var i=3D0; i<menu.items.length; i++)
		{
			var item =3D menu.items[i];
			var label =3D item.label;
			var re =3D /'/g;
			var url =3D item.url;
			if (url)
				url =3D url.replace(re, "&#39;");
			var target =3D item.target;
			var submenu =3D item.menu;
			var linkID =3D item.linkID;
			html +=3D "<DIV";
			if (submenu)
				html +=3D " menu=3D'" + submenu + "'";
			if (url)
			{
				html +=3D " class=3D'mnpMenuRow'";
				if (url =3D=3D mnpMenuUrl)
					html +=3D " style=3D'border-color: #999999; background: white; =
cursor: default";
				else if (!isThisPage && (url =3D=3D mnpMenuParent))
					html +=3D " style=3D'border-color: #999999; background: #F1F1F1";
				else
					html +=3D " style=3D'border-color: #F1F1F1; background: #F1F1F1";
				if (mnpMenuDirSave =3D=3D "LTR")
					html +=3D "; padding-left: 11px";
				else
					html +=3D "; padding-right: 11px";
				html +=3D "'";
			}
			else
				html +=3D " class=3D'mnpMenuLabel'";
			html +=3D ">";
			if (url && (url !=3D mnpMenuUrl))
			{
				var targetAttr =3D target =3D=3D "" ? "" : " target=3D'" + target + =
"'";
				if (mnpMenuCTSave)
					html +=3D "<A href=3D'" + url + "'" + targetAttr + " =
LinkArea=3D'Left Nav' LinkID=3D'Flyout" + linkID + "' =
onclick=3D'trackInfo(this)'>" + label + "</A>";
				else
					html +=3D "<A href=3D'" + url + "'" + targetAttr + ">" + label + =
"</A>";
			}
			else
				html +=3D "<SPAN>" + label + "</SPAN>";
			html +=3D "</DIV>";
		}
		html +=3D "</DIV>";
		html +=3D "<DIV class=3D'mnpMenuScroller' style=3D'display:none; =
background: #F1F1F1; border-color: #F1F1F1' =
onmouseenter=3D'mnpStartScroll(+1)' =
onmouseleave=3D'mnpStopScroll()'><IMG =
src=3D'/library/mnp/2/gif/down_enabled.gif' width=3D'7' height=3D'9' =
/></DIV>";
		html +=3D "</DIV>";
		document.body.insertAdjacentHTML("afterBegin", html);
		var div =3D document.getElementById(id);
		var sa =3D div.childNodes.item(1);
		var max =3D 0;
		for (var i=3D0; i<sa.childNodes.length; i++)
		{
			var it =3D sa.childNodes.item(i).childNodes.item(0);
			var w =3D it.offsetWidth;
			if (w > max) max =3D w;
		}
		max +=3D 34;
		if (max < 100) max =3D 100;
		else if (max > 410) max =3D 410;
		div.style.width =3D max + "px";
		for (var i=3D0; i<sa.childNodes.length; i++)
		{
			var it =3D sa.childNodes.item(i);
			if (it.className =3D=3D "mnpMenuRow")
				it.style.width =3D (max - 6) + "px";
		}
		mnpMenuAttach(div);
		div.setAttribute("parentMenu", parentId);
	}
	else
	{
		div.style.display =3D "";
	}
	var bodyHeight =3D document.body.clientHeight;
	var bodyTop =3D document.body.scrollTop;
	var bodyWidth =3D document.body.clientWidth;
	var bodyLeft =3D document.body.scrollLeft;
	var up =3D div.children.item(0);
	var box =3D up.nextSibling;
	var down =3D box.nextSibling;
	up.style.display =3D "none";
	down.style.display =3D "none";
	box.style.height =3D "";
	if (div.offsetHeight > bodyHeight)
	{
		up.style.display =3D "";
		up.childNodes.item(0).src =3D "/library/mnp/2/gif/up_disabled.gif";
		down.style.display =3D "";
		down.childNodes.item(0).src =3D "/library/mnp/2/gif/down_enabled.gif";
		box.style.height =3D (bodyHeight - up.offsetHeight - down.offsetHeight =
- 6) + "px";
	}
	var bodyBottom =3D bodyTop + bodyHeight;
	if (y + div.offsetHeight > bodyBottom)
	{
		y -=3D div.offsetHeight - 25;
		if (y < bodyTop)
			y =3D bodyTop + (bodyHeight - div.offsetHeight) / 2;
	}
	if (mnpMenuDirSave =3D=3D "RTL")
		x -=3D div.offsetWidth;
	div.style.left =3D x + "px";
	div.style.top =3D y + "px";
	div.style.zIndex =3D parent.style.zIndex + 10;
	if (div.offsetLeft + div.offsetWidth > bodyWidth + bodyLeft)
		document.body.scrollLeft =3D div.offsetLeft + div.offsetWidth - =
bodyWidth;
	hide_elements("SELECT", div);
	hide_elements("OBJECT", div);
	if (mnpMenuShadowsEnabled)
	{
		mnpMenuShadows[id] =3D mnpMenuShadow(div, "#666666", 4, =
div.offsetWidth, div.offsetHeight);
		mnpMenuRenderStart =3D mnpMenuTime();
		window.setTimeout("mnpMeasureRenderTime()", 1);
	}
}

function mnpMeasureRenderTime()
{
	var msec =3D mnpMenuTime() - mnpMenuRenderStart;
	if (msec > 100)
	{
		// client is slow or document is huge, so disable shadows
		mnpMenuShadowsEnabled =3D false;
	}
}

function mnpMenuPt(el)
{
	this.left =3D 0;
	this.top =3D 0;
	while (el)
	{
		this.left +=3D el.offsetLeft;
		this.top +=3D el.offsetTop;
		el =3D el.offsetParent;
	}
}

function mnpMenuMouseover()
{
	var div =3D window.event.srcElement;
	var status =3D div.getAttribute("status");
	if (status) window.status =3D status;
	div.style.background =3D "#CCCCCC";
	div.style.borderColor =3D "#999999";
	var pt =3D new mnpMenuPt(div);
	var x;
	if (mnpMenuDirSave =3D=3D "LTR")
		x =3D pt.left + div.offsetWidth - 1;
	else
		x =3D pt.left + 2;
	var y =3D pt.top - 3;
	var menu =3D div.getAttribute("menu");
	if (menu)
		menu =3D "'" + menu + "'";
	else
		menu =3D "null";
	if (mnpMenuPopup)
		window.clearTimeout(mnpMenuPopup);
	var parent =3D div.parentElement.parentElement;
	mnpMenuPopup =3D window.setTimeout("mnpMenuOpen(" + menu + ", '" + =
parent.id + "', " + x + ", " + y + ")", 200);
}

function mnpMenuMouseout()
{
	var div =3D window.event.srcElement;
	window.status =3D "";
	var menu =3D div.getAttribute("menu");
	if (menu !=3D null && menu =3D=3D =
div.parentElement.parentElement.getAttribute("currentMenu"))
	{
		div.style.background =3D "#CCCCCC";
		div.style.borderColor =3D "#CCCCCC";
	}
	else
	{
		div.style.background =3D div.getAttribute("save-background");
		div.style.borderColor =3D div.getAttribute("save-border");
	}
	if (mnpMenuPopup)
	{
		window.clearTimeout(mnpMenuPopup);
		mnpMenuPopup =3D null;
	}
}

function mnpMenuMousedown()
{
	var div =3D window.event.srcElement;
	if (div.tagName !=3D "DIV") div =3D div.parentElement;
	div.style.background =3D "#999999";
}

function mnpMenuMouseup()
{
	var div =3D window.event.srcElement;
	if (div.tagName !=3D "DIV") div =3D div.parentElement;
	div.style.background =3D div.getAttribute("save-background");
}

function mnpMenuTime()
{
	var time =3D new Date();
	return time.valueOf();
}

function mnpStartScroll(dy)
{
	var src =3D window.event.srcElement;
	src.style.background =3D "#CCCCCC";
	src.style.borderColor =3D "#999999";
	var div =3D src.parentElement;
	div.setAttribute("scrollTime0", mnpMenuTime());
	div.setAttribute("scrollTop0", div.childNodes.item(1).scrollTop);
	mnpMenuScrollTimer =3D window.setInterval("mnpMenuScroll('" + div.id + =
"', " + dy + ")", 35);
}

function mnpStopScroll()
{
	var src =3D window.event.srcElement;
	src.style.background =3D "#F1F1F1";
	src.style.borderColor =3D "#F1F1F1";
	if (mnpMenuScrollTimer)
		window.clearInterval(mnpMenuScrollTimer);
	mnpMenuScrollTimer =3D null;
}

function mnpMenuScroll(id, dy)
{
	var div =3D document.getElementById(id);
	var current =3D div.getAttribute("currentMenu");
	if (current)
	{
		mnpKillMenu(current);
		div.removeAttribute("currentMenu");
	}
	var box =3D div.childNodes.item(1);
	var y =3D div.getAttribute("scrollTop0") + Math.round((mnpMenuTime() - =
div.getAttribute("scrollTime0")) * 0.150) * dy
	box.scrollTop =3D y;
	if (y !=3D box.scrollTop)
	{
		window.clearInterval(mnpMenuScrollTimer);
		mnpMenuScrollTimer =3D null;
		if (box.scrollTop =3D=3D 0)
			div.childNodes.item(0).childNodes.item(0).src =3D =
"/library/mnp/2/gif/up_disabled.gif";
		else
			div.childNodes.item(2).childNodes.item(0).src =3D =
"/library/mnp/2/gif/down_disabled.gif";
	}
	else if (dy < 0)
		div.childNodes.item(2).childNodes.item(0).src =3D =
"/library/mnp/2/gif/down_enabled.gif";
	else
		div.childNodes.item(0).childNodes.item(0).src =3D =
"/library/mnp/2/gif/up_enabled.gif";
}

function mnpMenuShadow(el, color, size, width, height)
{
	var temp =3D new Array();
	var i;
	for (i=3Dsize; i>0; i--)
	{
		var rect =3D document.createElement('div');
		var rs =3D rect.style
		rs.position =3D 'absolute';
		rs.left =3D (el.style.posLeft + i) + 'px';
		rs.top =3D (el.style.posTop + i) + 'px';
		rs.width =3D width + 'px';
		rs.height =3D height + 'px';
		rs.zIndex =3D el.style.zIndex - i;
		rs.backgroundColor =3D color;
		var opacity =3D 1 - i / (i + 1);
		rs.filter =3D 'alpha(opacity=3D' + (100 * opacity) + ')';
		document.body.appendChild(rect);
		temp[i] =3D rect;
	}
	return temp;
}

function hide_elements(tagName, menu)
{
	windowed_element_visibility(tagName, -1, menu)
}

function show_elements(tagName, menu)
{
	windowed_element_visibility(tagName, +1, menu)
}

function windowed_element_visibility(tagName, change, menu)
{
	var els =3D document.getElementsByTagName(tagName)
	var i
	var rect =3D new element_rect(menu)
	for (i=3D0; i < els.length; i++)
	{
		var el =3D els.item(i)
		if (elements_overlap(el, rect))
		{
			if (el.visLevel)
				el.visLevel +=3D change
			else
				el.visLevel =3D change
			if (el.visLevel =3D=3D -1 && change =3D=3D -1)
			{
				el.visibilitySave =3D el.style.visibility;
				el.style.visibility =3D "hidden";
			}
			else if (el.visLevel =3D=3D 0 && change =3D=3D +1)
			{
				el.style.visibility =3D el.visibilitySave;
			}
		}
	}
}

function element_rect(el)
{
	var left =3D 0
	var top =3D 0
	this.width =3D el.offsetWidth
	this.height =3D el.offsetHeight
	while (el)
	{
		left +=3D el.offsetLeft
		top +=3D el.offsetTop
		el =3D el.offsetParent
	}
	this.left =3D left;
	this.top =3D top;
}

function elements_overlap(el, rect)
{
	var r =3D new element_rect(el);
	return ((r.left < rect.left + rect.width) && (r.left + r.width > =
rect.left) && (r.top < rect.top + rect.height) && (r.top + r.height > =
rect.top))
}

var mnpgtCurrent =3D null;
var mnpgtTimer =3D null;
var mnpgtKill =3D null;
var mnpMHCT =3D false;

window.attachEvent("onload", mnpInitMasthead);

function mnpInitMasthead()
{
	var mnpMastheadTable =3D document.getElementById("mnpMastheadTable");
	if (mnpMastheadTable)
		if (mnpMastheadTable.getAttribute("clickTrax"))
			mnpMHCT =3D true;
	=09
	var tds =3D document.getElementsByTagName("TD");
	for (var tdi=3D0; tdi<tds.length; tdi++)
	{
		var td =3D tds[tdi];
		if (td.className =3D=3D "mnpGlobalToolbar" || td.className =3D=3D =
"mnpLocalToolbar")
		{
			var as =3D td.getElementsByTagName("A");
			for (var ai=3D0; ai<as.length; ai++)
			{
				var a =3D as[ai];
				a.attachEvent("onmouseover", MNPGT_onmouseover);
				a.attachEvent("onmouseout", MNPGT_onmouseout);
			}
		}
	}
}

function ToolbarItem(label, url, target)
{
	this.label =3D label;
	this.url =3D url;
	this.target =3D target;
}

function MNPGT_enterRegion(toolbar)
{
	if (mnpgtKill)
	{
		window.clearTimeout(mnpgtKill);
		mnpgtKill =3D null;
	}
}

function MNPGT_exitRegion(toolbar)
{
	mnpgtKill =3D window.setTimeout("MNPGT_kill()", 200);
}

function MNPGT_kill()
{
	mnpgtKill =3D null;
	if (mnpgtCurrent)
	{
		MNPGT_hideCurrent();
		mnpgtCurrent =3D null;
	}
}

function MNPGT_hideCurrent()
{
	var div =3D document.getElementById(mnpgtCurrent);
	MNPGT_show_elements("SELECT", div);
	MNPGT_show_elements("OBJECT", div);
	div.style.display =3D "none";
}

function MNPGT_onmouseover()
{
	MNPGT_enterRegion();
	var el =3D window.event.srcElement;
	el.style.color =3D el.parentNode.getAttribute("hover");
	var guid =3D el.getAttribute("guid");
	if (mnpgtTimer)
		window.clearTimeout(mnpgtTimer);
	if (guid =3D=3D null || guid =3D=3D "m")=20
		guid =3D "null";
	else
		guid =3D "'" + guid + "'";
	var rect =3D new MNPGT_clientRect(el);
	mnpgtTimer =3D window.setTimeout("MNPGT_open(" + guid + ", " + =
rect.left + ", " + rect.width + ", " + rect.bottom + ")", 200);
}

function MNPGT_open(guid, x, w, y)
{
	mnpgtTimer =3D null;
	if (mnpgtCurrent =3D=3D guid)
		return;
	if (mnpgtCurrent)
		MNPGT_hideCurrent();
	mnpgtCurrent =3D guid;
	if (!guid)=20
		return;
	var div =3D document.getElementById(guid);
	if (!div)
	{
		var menu;
		try
		{
			menu =3D eval("new " + guid + "()");
		}
		catch(e)
		{
			mnpgtCurrent =3D null;
			return;
		}
		var html =3D "<div onmouseover=3D'MNPGT_menu_onmouseover(this)' =
onmouseout=3D'MNPGT_menu_onmouseout(this)' class=3D'" + menu.classname + =
"'";
		html +=3D " style=3D'position: absolute; background: " + =
menu.backColor + "; display: none;' id=3D'" + guid + "' dir=3D'";
		html +=3D mnpToolbarDir() + "'><nobr>";
		var linkIdNum =3D 0;
		for (var g=3D0; g<menu.items.length; g++)
		{
			var group =3D menu.items[g];
			html +=3D "<div style=3D'background: inherit; padding: 5px 8px 7px =
8px; border-top: solid 1px " + menu.foreColor + "'><nobr>";
			for (var i=3D0; i<group.items.length; i++)
			{
				var item =3D group.items[i];
				html +=3D "<a onmouseout=3D'style.color=3D\"" + menu.foreColor + =
"\"' onmouseover=3D'style.color=3D\"" + menu.hoverColor + "\"' =
href=3D'";
				var re =3D /'/g;
				html +=3D item.url.replace(re, "&#39;") + "' =
style=3D'text-decoration: none; color: " + menu.foreColor + "'";
				if (item.target)
					html +=3D " target=3D'" + item.target + "'";
				if (mnpMHCT)
				{
					linkIdNum++;
					html +=3D " LinkArea=3D'" + menu.linkArea + "' LinkID=3D'" + =
menu.linkId + "_Node" + linkIdNum + "' onclick=3D'trackInfo(this)'";
				}
				html +=3D ">" + item.label + "</a><br />";
			}
			html +=3D "</nobr></div>";
		}
		html +=3D "</nobr></div>";
		document.body.insertAdjacentHTML("beforeEnd", html);
		div =3D document.getElementById(guid);
	}
	div.style.top =3D (y + 4) + "px";
	div.style.display =3D "";
	if (div.dir.toUpperCase() =3D=3D "LTR")
		div.style.left =3D (x - 8) + "px";
	else
		div.style.left =3D (x + w + 8 - div.offsetWidth) + "px";
	if (div.offsetLeft + div.offsetWidth >=3D document.body.scrollLeft + =
document.body.clientWidth)
	{
		div.style.left =3D "";
		var h =3D document.body.scrollLeft + document.body.clientWidth - =
div.offsetWidth;
		div.style.left =3D h + "px";
	}
	if (div.offsetLeft < 0)
		div.style.left =3D "0px";
	MNPGT_hide_elements("SELECT", div);
	MNPGT_hide_elements("OBJECT", div);
}

function MNPGT_onmouseout()
{
	MNPGT_exitRegion();
	var el =3D window.event.srcElement;
	el.style.color =3D el.parentNode.style.color;
	if (mnpgtTimer)
	{
		window.clearTimeout(mnpgtTimer);
		mnpgtTimer =3D null;
	}
}

function MNPGT_menu_onmouseover()
{
	MNPGT_enterRegion();
}

function MNPGT_menu_onmouseout()
{
	MNPGT_exitRegion();
}

function MNPGT_clientRect(el)
{
	this.left =3D el.offsetLeft;
	this.top =3D el.offsetTop;
	var temp =3D el.offsetParent;
	while (temp)
	{
		this.left +=3D temp.offsetLeft;
		this.top +=3D temp.offsetTop;
		temp =3D temp.offsetParent;
	}
	this.width =3D el.offsetWidth;
	this.right =3D this.left + this.width;
	this.height =3D el.offsetHeight;
	this.bottom =3D this.top + this.height;
	return this;
}


function MNPGT_hide_elements(tagName, menu)
{
	MNPGT_windowed_element_visibility(tagName, -1, menu)
}

function MNPGT_show_elements(tagName, menu)
{
	MNPGT_windowed_element_visibility(tagName, +1, menu)
}

function MNPGT_windowed_element_visibility(tagName, change, menu)
{
	var els =3D document.getElementsByTagName(tagName)
	var i
	var rect =3D new MNPGT_element_rect(menu)
	for (i=3D0; i < els.length; i++)
	{
		var el =3D els.item(i)
		if (MNPGT_elements_overlap(el, rect))
		{
			if (el.visLevel)
				el.visLevel +=3D change
			else
				el.visLevel =3D change
			if (el.visLevel =3D=3D -1 && change =3D=3D -1)
			{
				el.visibilitySave =3D el.style.visibility;
				el.style.visibility =3D "hidden";
			}
			else if (el.visLevel =3D=3D 0 && change =3D=3D +1)
			{
				el.style.visibility =3D el.visibilitySave;
			}
		}
	}
}

function MNPGT_element_rect(el)
{
	var left =3D 0
	var top =3D 0
	this.width =3D el.offsetWidth
	this.height =3D el.offsetHeight
	while (el)
	{
		left +=3D el.offsetLeft
		top +=3D el.offsetTop
		el =3D el.offsetParent
	}
	this.left =3D left;
	this.top =3D top;
}

function MNPGT_elements_overlap(el, rect)
{
	var r =3D new MNPGT_element_rect(el);
	return ((r.left < rect.left + rect.width) && (r.left + r.width > =
rect.left) && (r.top < rect.top + rect.height) && (r.top + r.height > =
rect.top))
}

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.microsoft.com/mnp_utility.mspx/mastheadjs?mnpshell=%2fmsj%2fConfiguration.xml&



function mnpToolbarDir()
{
	return "LTR";
}

function m71a06c18019585dbc34a9c4c641a3a08()=0A=
{=0A=
	this.backColor =3D '#000000';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpGlobalToolbar';=0A=
	this.linkArea =3D 'GlobalToolbar';=0A=
	this.linkId =3D 'GT_Drop1';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new g15812604a7ff6e8edabc0c90d2a7da8d()=0A=
	this.items[n++] =3D new gec95e3ef65b093743045dda8daa20f1b()=0A=
}=0A=
=0A=
function g15812604a7ff6e8edabc0c90d2a7da8d()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new ToolbarItem('All Products', =
'/isapi/gomscom.asp?target=3D/catalog/', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Windows', =
'/isapi/gomscom.asp?target=3D/windows/', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Office', =
'http://office.microsoft.com', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Servers', =
'/isapi/gomscom.asp?target=3D/servers/', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Visual Studio', =
'/isapi/gomsdn.asp?target=3D/vstudio/', '_parent');=0A=
}=0A=
=0A=
function gec95e3ef65b093743045dda8daa20f1b()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new ToolbarItem('MSN', 'http://www.msn.com/', =
'_parent');=0A=
}=0A=
=0A=
function medf9a186fb918ffce063d27c6d67cffe()=0A=
{=0A=
	this.backColor =3D '#000000';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpGlobalToolbar';=0A=
	this.linkArea =3D 'GlobalToolbar';=0A=
	this.linkId =3D 'GT_Drop2';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new ga1fa04ac2fd9ea1fa52c76311de43296()=0A=
}=0A=
=0A=
function ga1fa04ac2fd9ea1fa52c76311de43296()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new ToolbarItem('Download Center', =
'/isapi/gomscom.asp?target=3D/downloads/', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Windows Update', =
'http://windowsupdate.microsoft.com', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Office Downloads', =
'http://office.microsoft.com/downloads/', '_parent');=0A=
}=0A=
=0A=
function m1b3560fa9d8189ce386c2508f94c616f()=0A=
{=0A=
	this.backColor =3D '#000000';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpGlobalToolbar';=0A=
	this.linkArea =3D 'GlobalToolbar';=0A=
	this.linkId =3D 'GT_Drop3';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new g72ebafadfaf442af5d5ddfa386063360()=0A=
}=0A=
=0A=
function g72ebafadfaf442af5d5ddfa386063360()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new ToolbarItem('Product Support', =
'http://support.microsoft.com', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Knowledge Base', =
'/isapi/gosupport.asp?target=3D/search/', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Developer Support', =
'/isapi/gomsdn.asp?target=3D/support/', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('IT Pro Support', =
'/isapi/gomscom.asp?target=3D/technet/support/', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Service Partner Referrals', =
'http://mcspreferral.microsoft.com', '_parent');=0A=
}=0A=
=0A=
function mc56a833edd4edfae7787c623c8510629()=0A=
{=0A=
	this.backColor =3D '#000000';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpGlobalToolbar';=0A=
	this.linkArea =3D 'GlobalToolbar';=0A=
	this.linkId =3D 'GT_Drop4';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new g83d1b64bd5c2e296c08674d78b6bce38()=0A=
	this.items[n++] =3D new g869bb20b5c4ed4140cb975f2aa8bdbcd()=0A=
}=0A=
=0A=
function g83d1b64bd5c2e296c08674d78b6bce38()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new ToolbarItem('Search Microsoft.com', =
'/isapi/gosearch.asp?target=3D/', '_parent');=0A=
}=0A=
=0A=
function g869bb20b5c4ed4140cb975f2aa8bdbcd()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new ToolbarItem('MSN Web Search', =
'http://search.msn.com/', '_parent');=0A=
}=0A=
=0A=
function m60638ac32df0e62d79e6bce849e695fe()=0A=
{=0A=
	this.backColor =3D '#000000';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpGlobalToolbar';=0A=
	this.linkArea =3D 'GlobalToolbar';=0A=
	this.linkId =3D 'GT_Drop5';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new g6917253d8279b11025f4acbdec0a29ca()=0A=
}=0A=
=0A=
function g6917253d8279b11025f4acbdec0a29ca()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new ToolbarItem('Microsoft Worldwide', =
'/isapi/gomscom.asp?target=3D/worldwide/', '_parent');=0A=
}=0A=
=0A=
function m7367a73751f32aeeeff7c8b6363bded0()=0A=
{=0A=
	this.backColor =3D '#000000';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpGlobalToolbar';=0A=
	this.linkArea =3D 'GlobalToolbar';=0A=
	this.linkId =3D 'GT_Drop6';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new g762061f03af0f34c48a113fa27a1d41e()=0A=
	this.items[n++] =3D new ga3e36f27eef312621f5c66805dfcd688()=0A=
}=0A=
=0A=
function g762061f03af0f34c48a113fa27a1d41e()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new ToolbarItem('Microsoft.com Home', =
'/isapi/gomscom.asp?target=3D/', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Manage Your Profile', =
'http://go.microsoft.com/?linkid=3D317027', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Training &amp; Certification', =
'/isapi/gomscom.asp?target=3D/traincert/', '_parent');=0A=
	this.items[n++] =3D new ToolbarItem('Events', =
'/isapi/gomscom.asp?target=3D/usa/events/', '_parent');=0A=
}=0A=
=0A=
function ga3e36f27eef312621f5c66805dfcd688()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new ToolbarItem('MSN.com Home', =
'http://www.msn.com', '_parent');=0A=
}=0A=
=0A=
function me575694e5d614e8f9c29caae997e5b2a()=0A=
{=0A=
	this.backColor =3D '#003399';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpLocalToolbar';=0A=
	this.linkArea =3D 'LocalToolbar';=0A=
	this.linkId =3D 'LT_Drop1';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
}=0A=
=0A=
function mdc7c56877fe73d619a7cefa36109d00d()=0A=
{=0A=
	this.backColor =3D '#003399';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpLocalToolbar';=0A=
	this.linkArea =3D 'LocalToolbar';=0A=
	this.linkId =3D 'LT_Drop2';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
}=0A=
=0A=
function m4cd003c10a1e3c2bbd388c636326cea5()=0A=
{=0A=
	this.backColor =3D '#003399';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpLocalToolbar';=0A=
	this.linkArea =3D 'LocalToolbar';=0A=
	this.linkId =3D 'LT_Drop3';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
}=0A=
=0A=
function m4cd003c10a1e3c2bbd388c636326cea6()=0A=
{=0A=
	this.backColor =3D '#003399';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpLocalToolbar';=0A=
	this.linkArea =3D 'LocalToolbar';=0A=
	this.linkId =3D 'LT_Drop4';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
}=0A=
=0A=
function m4cd003c10a1e3c2bbd388c636326cea7()=0A=
{=0A=
	this.backColor =3D '#003399';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpLocalToolbar';=0A=
	this.linkArea =3D 'LocalToolbar';=0A=
	this.linkId =3D 'LT_Drop5';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
}=0A=
=0A=
function m1c464cf3489cb906acdf43f9c49ecfeb()=0A=
{=0A=
	this.backColor =3D '#003399';=0A=
	this.foreColor =3D '#FFFFFF';=0A=
	this.hoverColor =3D '#FFCC00';=0A=
	this.classname =3D 'mnpLocalToolbar';=0A=
	this.linkArea =3D 'LocalToolbar';=0A=
	this.linkId =3D 'LT_Drop6';=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
}=0A=
=0A=

------=_NextPart_000_0000_01C3E0F2.DEEF2D70
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.microsoft.com/mnp_utility.mspx/menujs?mnpshell=%2fmsj%2fConfiguration.xml&clicktrax=False



function mnpMenuDir()
{
	return "LTR";
}

function mnpMenuCT()
{
=09
	return false;
}

function m3fd9abd6d4e6b1d47da1677743a69def()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new mnpPage('Source Code', '/msj/code.aspx', '', =
'', '_S2_Node2_S1_Node1');=0A=
	this.items[n++] =3D new mnpPage('Code Updates', =
'/msj/codeupdates.aspx', '', '', '_S2_Node2_S1_Node2');=0A=
}=0A=
=0A=
function m0e5c80cdf8bdd73274e5171bd96f4ed9()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new mnpPage('Back Issues 2000', =
'/msj/backissues00.aspx', '', 'm254a8ab1fec1c3abe032b83539b0a85a', =
'_S2_Node3_S1_Node1');=0A=
	this.items[n++] =3D new mnpPage('Back Issues 1999', =
'/msj/backissues99.aspx', '', 'm085a11d8d8c493672ca085058be5eee9', =
'_S2_Node3_S1_Node2');=0A=
	this.items[n++] =3D new mnpPage('Back Issues 1998', =
'/msj/backissues98.aspx', '', 'mf5861268d8d1944be2378e16b41c244b', =
'_S2_Node3_S1_Node3');=0A=
	this.items[n++] =3D new mnpPage('Back Issues 1997', =
'/msj/backissues97.aspx', '', 'm767f9468c3e41b3e6b74ae9bd687115a', =
'_S2_Node3_S1_Node4');=0A=
	this.items[n++] =3D new mnpPage('Back Issues 1995-1996', =
'/msj/backissues96.aspx', '', '', '_S2_Node3_S1_Node5');=0A=
	this.items[n++] =3D new mnpPage('Back Issues 1986-1994', =
'/msj/backissues86.aspx', '', '', '_S2_Node3_S1_Node6');=0A=
}=0A=
=0A=
function m254a8ab1fec1c3abe032b83539b0a85a()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new mnpPage('February 2000', =
'/msj/0200/default.aspx', '', '', '_S2_Node3_S1_Node1_S1_Node1');=0A=
	this.items[n++] =3D new mnpPage('January 2000', =
'/msj/0100/default.aspx', '', '', '_S2_Node3_S1_Node1_S1_Node2');=0A=
}=0A=
=0A=
function m085a11d8d8c493672ca085058be5eee9()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new mnpPage('December 1999', =
'/msj/1299/default.aspx', '', '', '_S2_Node3_S1_Node2_S1_Node1');=0A=
	this.items[n++] =3D new mnpPage('November 1999', =
'/msj/1199/default.aspx', '', '', '_S2_Node3_S1_Node2_S1_Node2');=0A=
	this.items[n++] =3D new mnpPage('October 1999', =
'/msj/1099/default.aspx', '', '', '_S2_Node3_S1_Node2_S1_Node3');=0A=
	this.items[n++] =3D new mnpPage('September 1999', =
'/msj/0999/default.aspx', '', '', '_S2_Node3_S1_Node2_S1_Node4');=0A=
	this.items[n++] =3D new mnpPage('August 1999', =
'/msj/0899/default.aspx', '', '', '_S2_Node3_S1_Node2_S1_Node5');=0A=
	this.items[n++] =3D new mnpPage('July 1999', '/msj/0799/default.aspx', =
'', '', '_S2_Node3_S1_Node2_S1_Node6');=0A=
	this.items[n++] =3D new mnpPage('June 1999', '/msj/0699/default.aspx', =
'', '', '_S2_Node3_S1_Node2_S1_Node7');=0A=
	this.items[n++] =3D new mnpPage('May 1999', '/msj/0599/default.aspx', =
'', '', '_S2_Node3_S1_Node2_S1_Node8');=0A=
	this.items[n++] =3D new mnpPage('April 1999', '/msj/0499/default.aspx', =
'', '', '_S2_Node3_S1_Node2_S1_Node9');=0A=
	this.items[n++] =3D new mnpPage('March 1999', '/msj/0399/default.aspx', =
'', '', '_S2_Node3_S1_Node2_S1_Node10');=0A=
	this.items[n++] =3D new mnpPage('February 1999', =
'/msj/0299/default.aspx', '', '', '_S2_Node3_S1_Node2_S1_Node11');=0A=
	this.items[n++] =3D new mnpPage('January 1999', =
'/msj/0199/default.aspx', '', '', '_S2_Node3_S1_Node2_S1_Node12');=0A=
}=0A=
=0A=
function mf5861268d8d1944be2378e16b41c244b()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new mnpPage('December 1998', =
'/msj/1298/default.aspx', '', '', '_S2_Node3_S1_Node3_S1_Node1');=0A=
	this.items[n++] =3D new mnpPage('November 1998', =
'/msj/1198/default.aspx', '', '', '_S2_Node3_S1_Node3_S1_Node2');=0A=
	this.items[n++] =3D new mnpPage('October 1998', =
'/msj/1098/default.aspx', '', '', '_S2_Node3_S1_Node3_S1_Node3');=0A=
	this.items[n++] =3D new mnpPage('September 1998', =
'/msj/0998/default.aspx', '', '', '_S2_Node3_S1_Node3_S1_Node4');=0A=
	this.items[n++] =3D new mnpPage('August 1998', =
'/msj/0898/default.aspx', '', '', '_S2_Node3_S1_Node3_S1_Node5');=0A=
	this.items[n++] =3D new mnpPage('July 1998', '/msj/0798/default.aspx', =
'', '', '_S2_Node3_S1_Node3_S1_Node6');=0A=
	this.items[n++] =3D new mnpPage('June 1998', '/msj/0698/default.aspx', =
'', '', '_S2_Node3_S1_Node3_S1_Node7');=0A=
	this.items[n++] =3D new mnpPage('May 1998', '/msj/0598/default.aspx', =
'', '', '_S2_Node3_S1_Node3_S1_Node8');=0A=
	this.items[n++] =3D new mnpPage('April 1998', '/msj/0498/default.aspx', =
'', '', '_S2_Node3_S1_Node3_S1_Node9');=0A=
	this.items[n++] =3D new mnpPage('March 1998', '/msj/0398/default.aspx', =
'', '', '_S2_Node3_S1_Node3_S1_Node10');=0A=
	this.items[n++] =3D new mnpPage('February 1998', =
'/msj/0298/default.aspx', '', '', '_S2_Node3_S1_Node3_S1_Node11');=0A=
	this.items[n++] =3D new mnpPage('January 1998', =
'/msj/0198/default.aspx', '', '', '_S2_Node3_S1_Node3_S1_Node12');=0A=
}=0A=
=0A=
function m767f9468c3e41b3e6b74ae9bd687115a()=0A=
{=0A=
	this.items =3D new Array();=0A=
	var n =3D 0;=0A=
	this.items[n++] =3D new mnpPage('December 1997', =
'/msj/1297/default.aspx', '', '', '_S2_Node3_S1_Node4_S1_Node1');=0A=
	this.items[n++] =3D new mnpPage('November 1997', =
'/msj/1197/default.aspx', '', '', '_S2_Node3_S1_Node4_S1_Node2');=0A=
	this.items[n++] =3D new mnpPage('October 1997', =
'/msj/1097/default.aspx', '', '', '_S2_Node3_S1_Node4_S1_Node3');=0A=
	this.items[n++] =3D new mnpPage('September 1997', =
'/msj/0997/default.aspx', '', '', '_S2_Node3_S1_Node4_S1_Node4');=0A=
	this.items[n++] =3D new mnpPage('August 1997', =
'/msj/0897/default.aspx', '', '', '_S2_Node3_S1_Node4_S1_Node5');=0A=
	this.items[n++] =3D new mnpPage('July 1997', '/msj/0797/default.aspx', =
'', '', '_S2_Node3_S1_Node4_S1_Node6');=0A=
	this.items[n++] =3D new mnpPage('June 1997', '/msj/0697/default.aspx', =
'', '', '_S2_Node3_S1_Node4_S1_Node7');=0A=
	this.items[n++] =3D new mnpPage('May 1997', '/msj/0597/default.aspx', =
'', '', '_S2_Node3_S1_Node4_S1_Node8');=0A=
	this.items[n++] =3D new mnpPage('April 1997', '/msj/0497/default.aspx', =
'', '', '_S2_Node3_S1_Node4_S1_Node9');=0A=
	this.items[n++] =3D new mnpPage('March 1997', '/msj/0397/default.aspx', =
'', '', '_S2_Node3_S1_Node4_S1_Node10');=0A=
	this.items[n++] =3D new mnpPage('February 1997', =
'/msj/0297/default.aspx', '', '', '_S2_Node3_S1_Node4_S1_Node11');=0A=
	this.items[n++] =3D new mnpPage('January 1997', =
'/msj/0197/default.aspx', '', '', '_S2_Node3_S1_Node4_S1_Node12');=0A=
}=0A=
=0A=

------=_NextPart_000_0000_01C3E0F2.DEEF2D70--
