Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

267 lines
47 KiB

  1. {\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
  2. {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
  3. \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
  4. \red192\green192\blue192;}{\stylesheet{\nowidctlpar\widctlpar\adjustright \fs20\cgrid \snext0 Normal;}{\s1\sb200\sa80\sl-440\slmult0\keepn\nowidctlpar\widctlpar\adjustright \fs34\cgrid \sbasedon0 \snext0 heading 1,H1;}{\s2\sb140\sa60\sl-380\slmult0
  5. \keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \fs30\cgrid \sbasedon1 \snext0 heading 2,H2,h2;}{\s3\sb80\sa40\sl-280\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel1\adjustright \fs28\cgrid \sbasedon2 \snext0 heading 3,H3.struct,Struct,h3;}{
  6. \s4\sb60\sl-240\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \b\fs21\cgrid \sbasedon1 \snext23 heading 4,H4,h4;}{\s5\sa40\sl-200\slmult0\keepn\nowidctlpar\widctlpar\tx1800\tx3600\tx5400\outlinelevel0\adjustright \i\f1\fs16\cgrid
  7. \sbasedon1 \snext23 heading 5,H5,h5;}{\s6\sa40\sl-200\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \i\f1\fs16\cgrid \sbasedon1 \snext23 heading 6,H6,h6;}{\s7\sa40\sl-200\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel5\adjustright
  8. \i\f1\fs16\cgrid \sbasedon6 \snext8 heading 7,H7;}{\s8\sa40\sl-200\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel5\adjustright \i\f1\fs16\cgrid \sbasedon6 \snext9 heading 8,H8;}{\s9\sa40\sl-200\slmult0
  9. \keepn\nowidctlpar\widctlpar\outlinelevel7\adjustright \i\f1\fs16\cgrid \sbasedon8 \snext0 heading 9,H9;}{\*\cs10 \additive Default Paragraph Font;}{\s15\li835\sl-220\slmult0\keepn\nowidctlpar\widctlpar\tqr\tldot\tx6960\tqr\tldot\tx8640\adjustright
  10. \fs19\cgrid \sbasedon16 \snext15 TOC4,toc4;}{\s16\sl-220\slmult0\keepn\nowidctlpar\widctlpar\tqr\tldot\tx8640\adjustright \fs19\cgrid \sbasedon0 \snext29 \sautoupd toc 1,toc1;}{\s17\li1109\sl-220\slmult0\keepn\nowidctlpar\widctlpar
  11. \tqr\tldot\tx6960\tqr\tldot\tx8640\adjustright \fs19\cgrid \sbasedon16 \snext17 TOC5,toc5;}{\s18\li200\sa80\nowidctlpar\widctlpar\adjustright \fs21\cgrid \sbasedon0 \snext0 Def1,VAR,DL,DFN;}{\s19\li547\sa80\nowidctlpar\widctlpar\adjustright \fs21\cgrid
  12. \sbasedon18 \snext19 Def2;}{\s20\sl-220\slmult0\nowidctlpar\widctlpar\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid \snext20 Ex,CODE,PRE,CITE;}{
  13. \s21\fi-360\li360\sa80\nowidctlpar\widctlpar\tx280\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls34\pnrnot0\pndec }\ls34\adjustright \fs21\cgrid \sbasedon23 \snext21 \sautoupd List Bullet,UL,Lb1,b1,lb1;}{\s22\fi-360\li360\sa80\nowidctlpar\widctlpar
  14. \tqr\tx160\tx280{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls2047\ilvl11\adjustright \fs21\cgrid \sbasedon23 \snext22 List Number,OL,Ln1,n1;}{\s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid \snext23
  15. n,Normal1,body text,Blockquote,P;}{\s24\sl-240\slmult0\keepn\nowidctlpar\widctlpar\adjustright \fs21\cgrid \snext18 Term1,DT;}{\s25\sb20\sa60\sl-220\slmult0\keepn\nowidctlpar\widctlpar\adjustright \b\fs19\cgrid \sbasedon0 \snext0 Thf;}{
  16. \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\tx280\tx560\adjustright \fs19\cgrid \sbasedon0 \snext26 Tpf;}{\s27\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\adjustright \fs19\cgrid \sbasedon26 \snext27 tph;}{\s28\sb540\sa540\sl-540\slmult0
  17. \keepn\nowidctlpar\widctlpar\adjustright \fs44\cgrid \snext0 Ch;}{\s29\li280\sl-220\slmult0\nowidctlpar\widctlpar\tqr\tldot\tx8640\adjustright \fs19\cgrid \sbasedon16 \snext29 \sautoupd toc 2,toc2;}{\s30\li560\sl-220\slmult0\nowidctlpar\widctlpar
  18. \tqr\tldot\tx8640\adjustright \fs19\cgrid \sbasedon16 \snext30 \sautoupd toc 3,toc3;}{\s31\sb20\sa60\sl-220\slmult0\keepn\nowidctlpar\widctlpar\adjustright \b\fs19\cgrid \snext32 Tt,TT;}{\s32\qr\sl-20\slmult0\keepn\nowidctlpar\widctlpar\brdrt
  19. \brdrs\brdrw15 \adjustright \fs8\cgrid \snext0 Tr;}{\s33\li240\sb20\sa60\sl-220\slmult0\keepn\nowidctlpar\widctlpar\adjustright \b\fs19\cgrid \sbasedon23 \snext33 Th;}{\s34\li240\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\tx280\tx560\adjustright
  20. \fs19\cgrid \sbasedon23 \snext34 Tp;}{\s35\qr\sl-160\slmult0\nowidctlpar\widctlpar\adjustright \fs12\cgrid \sbasedon0 \snext0 Le,e;}{\s36\li280\sa80\nowidctlpar\widctlpar\adjustright \fs21\cgrid \sbasedon23 \snext36 Lp1;}{\s37\li-1800\sa280\sl-240\slmult0
  21. \keepn\nowidctlpar\widctlpar\adjustright \caps\fs22\expnd24\expndtw120\cgrid \snext28 Cn;}{\s38\li280\sl-220\slmult0\nowidctlpar\widctlpar
  22. \tx670\tx1060\tx1450\tx1840\tx2230\tx2620\tx3010\tx3400\tx3790\tx4180\tx4570\tx4960\tx5350\tx5740\tx6130\tx6520\tx6910\adjustright \f2\fs16\cgrid \sbasedon0 \snext38 Exl;}{\s39\li-1770\ri30\sb50\sl-80\slmult0\nowidctlpar\widctlpar\brdrt
  23. \brdrs\brdrw15\brdrcf2 \adjustright \fs12\cgrid \snext0 header rule;}{\s40\li-1770\ri30\sb280\sa250\sl-120\slmult0\keepn\nowidctlpar\widctlpar\brdrb\brdrs\brdrw15\brdrcf2 \adjustright \fs8\cf8\cgrid \snext0 Rule,HR;}{
  24. \s41\fi-280\li520\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\tx520\adjustright \fs19\cgrid \sbasedon34 \snext41 Tpi;}{\s42\fi-140\li140\sb20\sa40\sl-200\slmult0\nowidctlpar\widctlpar\tx280\adjustright \fs17\cgrid \sbasedon34 \snext42 Tf;}{
  25. \s43\fi-280\li280\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\tx280\adjustright \fs19\cgrid \sbasedon41 \snext43 Tpif;}{\s44\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid \sbasedon23 \snext44 Art;}{\s45\sl180\slmult0
  26. \nowidctlpar\widctlpar\adjustright \i\f1\fs16\cgrid \sbasedon0 \snext45 footer;}{\s46\sl-210\slmult0\nowidctlpar\widctlpar\tqr\tx6960\adjustright \b\f1\fs18\cgrid \sbasedon0 \snext39 header;}{\s47\sb40\sl-200\slmult0\nowidctlpar\widctlpar
  27. \tldot\tx8280\tqr\tx8640\adjustright \i\f1\fs16\cgrid \sbasedon0 \snext0 \sautoupd toc 4;}{\s48\sa240\sl-220\slmult0\nowidctlpar\widctlpar\tx280\tx560\adjustright \b\fs19\cgrid \snext0 Cap;}{\s49\qr\li-1770\ri30\sb80\sa80\sl180\slmult0
  28. \nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \adjustright \fs16\cgrid \sbasedon64 \snext0 Tew;}{\s50\li240\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar
  29. \tx630\tx1020\tx1410\tx1800\tx2190\tx2580\tx2970\tx3360\tx3750\tx4140\tx4530\tx4920\tx5310\tx5700\tx6090\tx6480\tx6870\adjustright \f2\fs16\cgrid \sbasedon68 \snext50 Tex;}{\s51\qr\sl-140\slmult0\nowidctlpar\widctlpar\adjustright \fs12\cgrid
  30. \sbasedon0 \snext0 Tes;}{\*\cs52 \additive \cf11 \sbasedon10 annotation reference;}{\s53\sa180\nowidctlpar\widctlpar\adjustright \cf11\cgrid \sbasedon0 \snext53 annotation text;}{\s54\li720\sa60\nowidctlpar\widctlpar\adjustright \f2\fs20\cgrid
  31. \sbasedon0 \snext54 Normal Indent;}{\*\cs55 \additive \b\f0\fs19 \sbasedon10 Inline Code;}{\s56\sb40\sl-238\slmult0\keepn\nowidctlpar\widctlpar\pvpara\posy0\absh235\dxfrtext130\dfrmtxtx130\dfrmtxty0\adjustright \b\f1\fs18\cf2\cgrid \sbasedon57 \snext58
  32. Wh;}{\s57\sb40\sl-238\slmult0\keepn\nowidctlpar\widctlpar\pvpara\posy0\absh235\dxfrtext130\dfrmtxtx130\dfrmtxty0\adjustright \b\f1\fs18\cgrid \snext58 Nh;}{\s58\sb40\sa80\keepn\nowidctlpar\widctlpar\adjustright \fs21\cgrid \sbasedon59 \snext60 Np1;}{
  33. \s59\sa80\keepn\nowidctlpar\widctlpar\adjustright \fs21\cgrid \sbasedon23 \snext60 Np2;}{\s60\li30\ri30\sa40\sl-140\slmult0\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \adjustright \fs12\cf8\cgrid \snext0 Ne;}{\s61\li30\ri30\sb40\sl-80\slmult0
  34. \keepn\nowidctlpar\widctlpar\brdrb\brdrdb\brdrw15\brdrcf2 \adjustright \fs12\cf8\cgrid \snext56 Ws;}{\s62\li30\ri30\sl-200\slmult0\nowidctlpar\widctlpar\brdrt\brdrdb\brdrw15\brsp20\brdrcf2 \adjustright \fs16\cf8\cgrid \sbasedon0 \snext0 We;}{
  35. \s63\li30\ri30\sl-80\slmult0\keepn\nowidctlpar\widctlpar\brdrb\brdrs\brdrw15\brsp20 \adjustright \fs12\cf8\cgrid \snext57 Ns;}{\s64\qr\li30\ri30\sb80\sa80\sl-180\slmult0\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \adjustright \fs16\cgrid
  36. \sbasedon0 \snext0 Te;}{\s65\li-1800\sb20\sa60\sl-220\slmult0\keepn\nowidctlpar\widctlpar\adjustright \b\fs19\cgrid \sbasedon31 \snext32 Ttw;}{\s66\sl-200\slmult0
  37. \keepn\nowidctlpar\widctlpar\pvpara\phpg\posy0\absw1560\dxfrtext240\dfrmtxtx240\dfrmtxty0\adjustright \i\f1\fs16\cgrid \snext0 Mp;}{\s67\li-1800\sl-220\slmult0\nowidctlpar\widctlpar
  38. \tx-1410\tx-1020\tx-630\tx-240\tx150\tx540\tx930\tx1320\tx1710\tx2100\tx2490\tx2880\tx3270\tx3660\tx4050\tx4440\tx4830\tx5220\tx5610\tx6000\tx6390\tx6780\adjustright \f2\fs16\cgrid \sbasedon0 \snext67 Exw,PRE WIDE;}{\s68\sb20\sa60\sl-220\slmult0
  39. \nowidctlpar\widctlpar\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid \sbasedon0 \snext68 Texf;}{\s69\sb160\sa240\keepn\nowidctlpar\widctlpar
  40. \tqr\tx1560\pvpara\phpg\posy0\absw1560\dxfrtext240\dfrmtxtx240\dfrmtxty0\adjustright \fs28\cgrid \sbasedon0 \snext0 ArtSd;}{\s70\sb20\sa60\nowidctlpar\widctlpar\tx240\tx280\tx560\adjustright \fs19\cgrid \sbasedon34 \snext70 Tart;}{\s71\sa40\sl-200\slmult0
  41. \nowidctlpar\widctlpar\tx3480\tx5280\tx7080\tqr\tx8640\adjustright \i\f1\fs16\cgrid \sbasedon0 \snext0 \sautoupd toc 5;}{\s72\sa40\sl-200\slmult0\nowidctlpar\widctlpar\tx8280\tqr\tx8640\adjustright \f1\fs16\cgrid \sbasedon73 \snext26 \sautoupd
  42. toc 6,toc6;}{\s73\sa40\sl-200\slmult0\nowidctlpar\widctlpar\tx8280\tqr\tx8640\adjustright \i\f1\fs16\cgrid \sbasedon47 \snext0 \sautoupd toc 9;}{\s74\sa40\sl-200\slmult0\nowidctlpar\widctlpar\tx8280\tqr\tx8640\adjustright \f1\fs16\cgrid
  43. \sbasedon73 \snext0 \sautoupd toc 7;}{\s75\sa40\sl-200\slmult0\nowidctlpar\widctlpar\tx8280\tqr\tx8640\adjustright \f1\fs16\cgrid \sbasedon73 \snext0 \sautoupd toc 8;}{\s76\fi-280\li280\sa80\nowidctlpar\widctlpar
  44. \tx280{\*\pn \pnlvlbody\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2047\ilvl10\adjustright \fs21\cgrid \sbasedon21 \snext76 b;}}{\*\listtable{\list\listtemplateid1825333678\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0
  45. \levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid-120}{\list\listtemplateid-992318340\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0
  46. \levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid-119}{\list\listtemplateid-1\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext
  47. \'01*;}{\levelnumbers;}}{\listname ;}\listid-2}{\list\listtemplateid-737921570\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360
  48. }{\listname ;}\listid25302813}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent360{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360 }{\listname ;}\listid380248942}
  49. {\list\listtemplateid-737921570\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid609974127}
  50. {\list\listtemplateid-617813772\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent360{\leveltext\'02\'00\u-4033 ?;}{\levelnumbers\'01;}\fi-360\li360 }{\listname ;}\listid626393276}
  51. {\list\listtemplateid-737921570\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s21\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid927155647}
  52. {\list\listtemplateid-737921570\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid931162004}
  53. {\list\listtemplateid-737921570\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1358194475}
  54. {\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1362510706}
  55. {\list\listtemplateid-737921570\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1437867475}
  56. {\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1690257006}
  57. {\list\listtemplateid-737921570\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1769232843}
  58. {\list\listtemplateid-278087416\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1925802975}}
  59. {\*\listoverridetable{\listoverride\listid-119\listoverridecount0\ls1}{\listoverride\listid-120\listoverridecount0\ls2}{\listoverride\listid-119\listoverridecount0\ls3}{\listoverride\listid-120\listoverridecount0\ls4}{\listoverride\listid-119
  60. \listoverridecount0\ls5}{\listoverride\listid-120\listoverridecount0\ls6}{\listoverride\listid-119\listoverridecount0\ls7}{\listoverride\listid-120\listoverridecount0\ls8}{\listoverride\listid-119\listoverridecount0\ls9}{\listoverride\listid-120
  61. \listoverridecount0\ls10}{\listoverride\listid-119\listoverridecount0\ls11}{\listoverride\listid-120\listoverridecount0\ls12}{\listoverride\listid-119\listoverridecount0\ls13}{\listoverride\listid-120\listoverridecount0\ls14}{\listoverride\listid-119
  62. \listoverridecount0\ls15}{\listoverride\listid-120\listoverridecount0\ls16}{\listoverride\listid-119\listoverridecount0\ls17}{\listoverride\listid-120\listoverridecount0\ls18}{\listoverride\listid-119\listoverridecount0\ls19}{\listoverride\listid-120
  63. \listoverridecount0\ls20}{\listoverride\listid-119\listoverridecount0\ls21}{\listoverride\listid-120\listoverridecount0\ls22}{\listoverride\listid1925802975\listoverridecount0\ls23}{\listoverride\listid1925802975\listoverridecount0\ls24}
  64. {\listoverride\listid-119\listoverridecount0\ls25}{\listoverride\listid-120\listoverridecount0\ls26}{\listoverride\listid-2\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelold\levelspace0
  65. \levelindent360{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360 }}\ls27}{\listoverride\listid380248942\listoverridecount0\ls28}{\listoverride\listid25302813\listoverridecount0\ls29}{\listoverride\listid1690257006\listoverridecount0\ls30}
  66. {\listoverride\listid609974127\listoverridecount0\ls31}{\listoverride\listid626393276\listoverridecount0\ls32}{\listoverride\listid-2\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelold
  67. \levelspace0\levelindent360{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360 }}\ls33}{\listoverride\listid927155647\listoverridecount0\ls34}{\listoverride\listid1362510706\listoverridecount0\ls35}{\listoverride\listid1358194475
  68. \listoverridecount0\ls36}{\listoverride\listid931162004\listoverridecount0\ls37}{\listoverride\listid1769232843\listoverridecount0\ls38}{\listoverride\listid1437867475\listoverridecount0\ls39}{\listoverride\listid-2\listoverridecount1{\lfolevel
  69. \listoverrideformat{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent360{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360 }}\ls40}}{\info{\title Microsoft\'ae}{\author Rodney Cook}
  70. {\operator Rodney Cook}{\creatim\yr1997\mo2\dy26\hr15\min28}{\revtim\yr1997\mo2\dy28\hr15\min38}{\printim\yr1997\mo2\dy28\hr15\min37}{\version11}{\edmins114}{\nofpages6}{\nofwords1464}{\nofchars8346}{\*\company MSFT}{\nofcharsws0}{\vern71}}
  71. \margt1400\margb1400 \facingp\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade\viewkind4\viewscale100\viewzk2\pgbrdrhead\pgbrdrfoot \fet0\sectd \binfsxn265\binsxn265\psz1\sbknone\linex0\headery1987\footery360\endnhere\titlepg\sectdefaultcl {\*\pnseclvl1
  72. \pnucrm\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl5
  73. \pndec\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
  74. {\pntxtb ?}{\pntxta ?}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}\pard\plain \s23\li-120\sa160\nowidctlpar\widctlpar\brdrb\brdrs\brdrw45\brsp200 \tqr\tx8476\adjustright \fs21\cgrid {\b\i\f1\fs60\expnd16\expndtw80 Microsoft}{
  75. \b\i\f1\fs16\expnd12\expndtw60 \'ae\line }{\b\i\f1\fs40 Memphis Beta Device Driver Kit}{
  76. \par }\pard\plain \s28\sb540\sa540\sl-540\slmult0\keepn\nowidctlpar\widctlpar\adjustright \fs44\cgrid {I82930\line USB Device Sample Minidriver Design Notes
  77. \par }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\tx280\tx560\adjustright \fs19\cgrid {This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT.
  78. \par Microsoft Corporation may have patents or pending patent applications, trademarks, copyrights, or other intellectual property rights cove
  79. ring subject matter in this document. The furnishing of this document does not give you any license to the patents, trademarks, copyrights, or other intellectual property rights except as expressly provided in any written license agreement from Microsoft
  80. Corporation.
  81. \par Microsoft does not make any representation or warranty regarding specifications in this document or any product or item developed based on these specifications. Microsoft disclaims all express and implied warranties, including but not limited
  82. to the implied warranties or merchantability, fitness for a particular purpose and freedom from infringement. Without limiting the generality of the foregoing, Microsoft does not make any warranty of any kind that any item developed based on these specifi
  83. c
  84. ations, or any portion of a specification, will not infringe any copyright, patent, trade secret or other intellectual property right of any person or entity in any country. It is your responsibility to seek licenses for such intellectual property rights
  85. w
  86. here appropriate. Microsoft shall not be liable for any damages arising out of or in connection with the use of these specifications, including liability for lost profit, business interruption, or any other damages whatsoever. Some states do not allow the
  87. exclusion or limitation of liability or consequential or incidental damages; the above limitation may not apply to you.
  88. \par ActiveMovie, ActiveVRML, ActiveX, BackOffice, Developer Studio, Direct3D, DirectDraw, DirectInput, DirectMusic, DirectPlay, DirectSound, DirectX, Microsoft, NetMeeting, OpenType, Visual Basic, Visual C++, Win32, Windows, and Windows\~
  89. NT are trademarks or registered trademarks of Microsoft Corporation in the United States and/or other countries. Other product and company names mentioned herein may be the trademarks of their respective owners.
  90. \par \'a9\~1997\~Microsoft\~Corporation. All rights reserved.
  91. \par }\pard\plain \s31\sb20\sa60\sl-220\slmult0\keepn\nowidctlpar\widctlpar\adjustright \b\fs19\cgrid {{\*\bkmkstart _Toc324035518}{\*\bkmkstart _Toc324035584}{\*\bkmkstart _Toc324064341}{\*\bkmkstart _Toc324064446}{\*\bkmkstart _Toc324126415}
  92. {\*\bkmkstart _Toc325420562}{\*\bkmkstart _Toc325941761}{\*\bkmkstart _Toc325941835}{\*\bkmkstart _Toc327597423}{\*\bkmkstart _Toc327836240}{\*\bkmkstart _Toc327836405}{\*\bkmkstart _Toc327836708}{\*\bkmkstart _Toc327858794}{\*\bkmkstart _Toc327862029}
  93. \par Revision History
  94. \par }\trowd \trgaph108\trleft-108\trkeep \clvertalt\clbrdrb\brdrs\brdrw15 \cltxlrtb \cellx1440\clvertalt\clbrdrb\brdrs\brdrw15 \cltxlrtb \cellx7020\pard\plain \s25\sb20\sa60\sl-220\slmult0\keepn\nowidctlpar\widctlpar\intbl\adjustright \b\fs19\cgrid {
  95. {\*\bkmkend _Toc324035518}{\*\bkmkend _Toc324035584}{\*\bkmkend _Toc324064341}{\*\bkmkend _Toc324064446}{\*\bkmkend _Toc324126415}{\*\bkmkend _Toc325420562}{\*\bkmkend _Toc325941761}{\*\bkmkend _Toc325941835}{\*\bkmkend _Toc327597423}
  96. {\*\bkmkend _Toc327836240}{\*\bkmkend _Toc327836405}{\*\bkmkend _Toc327836708}{\*\bkmkend _Toc327858794}{\*\bkmkend _Toc327862029}Date\cell Description\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\b \row }\trowd
  97. \trgaph108\trleft-108\trkeep \clvertalt\cltxlrtb \cellx1440\clvertalt\cltxlrtb \cellx7020\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {1/6/97\cell January 97 Preview draft\cell }\pard\plain
  98. \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\row }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {
  99. \par }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\tx280\tx560\adjustright \fs19\cgrid {
  100. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {\page }{\fs40 Contents
  101. \par }\pard\plain \s32\qr\sl-20\slmult0\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15 \adjustright \fs8\cgrid {
  102. \par }\pard\plain \s16\sl-220\slmult0\keepn\nowidctlpar\widctlpar\tqr\tldot\tx8640\adjustright \fs19\cgrid {\field\fldedit{\*\fldinst { TOC \\o "1-3" }}{\fldrslt {\lang1024 Overview\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc381778549 \\h }{\lang1024
  103. {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003300380031003700370038003500340039000000}}}{\fldrslt {\lang1024 3}}}{\lang1024
  104. \par Background Notes\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc381778550 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003300380031003700370038003500350030000000}}}{\fldrslt {\lang1024 3}}}{
  105. \lang1024
  106. \par }\pard\plain \s29\li280\sl-220\slmult0\nowidctlpar\widctlpar\tqr\tldot\tx8640\adjustright \fs19\cgrid {\lang1024 Notes on Writing USB Device Minidrivers\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc381778551 \\h }{\lang1024 {\*\datafield
  107. 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003300380031003700370038003500350031000000}}}{\fldrslt {\lang1024 4}}}{\lang1024
  108. \par }\pard\plain \s16\sl-220\slmult0\keepn\nowidctlpar\widctlpar\tqr\tldot\tx8640\adjustright \fs19\cgrid {\lang1024 Anatomy of the Sample Minidriver\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc381778552 \\h }{\lang1024 {\*\datafield
  109. 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003300380031003700370038003500350032000000}}}{\fldrslt {\lang1024 4}}}{\lang1024
  110. \par Event-driven Walkthrough of the Sample Minidriver\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc381778553 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003300380031003700370038003500350033000000}}
  111. }{\fldrslt {\lang1024 6}}}{\lang1024
  112. \par References\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc381778554 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003300380031003700370038003500350034000000}}}{\fldrslt {\lang1024 6}}}{\lang1024
  113. \par }\pard\plain \s29\li280\sl-220\slmult0\nowidctlpar\widctlpar\tqr\tldot\tx8640\adjustright \fs19\cgrid {\lang1024\highlight7 LIST THEM HERE}{\lang1024 \tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc381778555 \\h }{\lang1024 {\*\datafield
  114. 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003300380031003700370038003500350035000000}}}{\fldrslt {\lang1024 6}}}{\lang1024
  115. \par Reference to Other Microsoft-supplied Samples\tab }{\field{\*\fldinst {\lang1024 PAGEREF _Toc381778556 \\h }{\lang1024 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003300380031003700370038003500350036000000}}
  116. }{\fldrslt {\lang1024 6}}}{\lang1024
  117. \par }\pard\plain \s1\sb200\sa80\sl-440\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \fs34\cgrid }}\pard\plain \s1\sb200\sa80\sl-440\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \fs34\cgrid {\fs19 \page }{
  118. {\*\bkmkstart _Toc381778549}Overview{\*\bkmkend _Toc381778549}
  119. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {
  120. The purpose of this Design Note is to document I82930, which is a sample USB device minidriver that is provided by Microsoft, in source-code form, to give the user assistance in writing their own minidriver.
  121. To be of maximum value, this document requires the user to have the following additional materials close at hand.
  122. \par {\pntext\pard\plain\s21 \f3\fs21\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \s21\fi-360\li360\sa80\nowidctlpar\widctlpar\tx280\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls34\adjustright
  123. \fs21\cgrid {\i USB Driver and Minidriver Design Notes and Reference}{, which is another of the documents in the Memphis DDK. All USB device driver-provided function calls made by this sample minidriver are documented here.
  124. \par {\pntext\pard\plain\s21 \f3\fs21\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s21\fi-360\li360\sa80\nowidctlpar\widctlpar\tx280\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls34\adjustright {\i
  125. WDM Design Notes and Reference}{, which is another of the documents in the Memphis DDK. References for I/O Request Packets (IRPs) that are used by this sample minidriver are documented here.
  126. \par {\pntext\pard\plain\s21 \f3\fs21\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s21\fi-360\li360\sa80\nowidctlpar\widctlpar\tx280\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls34\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls34\adjustright {
  127. The I82930 source-code files. After you install the WDM DDK, these source code files can be located at }{\highlight7 [}{\i\highlight7 path to be determined}{\highlight7 ].}{ \line
  128. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {I82930 is a driver for the Intel 82930 USB test board. This sample demonstrates how a minidriver gets loaded, and how it submits requests to the USB Driver Interface (USBDI).
  129. \par There are additional device-specific sample minidrivers located on this Memphis DDK. See the section titled \ldblquote Reference to Other Microsoft-provided Samples\rdblquote for a list of additional sample minidrivers
  130. provided by Microsoft to give the user assistance in writing their own minidriver. The focus of this Design Note is on the USB device sample minidriver. No attempt is made here to explain the USB Driver Interface -- a \ldblquote and then a miracle occurs
  131. \rdblquote attitude is taken with regard to USBDI.
  132. \par This Design Note is organized as follows:
  133. \par }\pard\plain \s24\sl-240\slmult0\keepn\nowidctlpar\widctlpar\adjustright \fs21\cgrid {\b Background Notes
  134. \par }\pard\plain \s18\li200\sa80\nowidctlpar\widctlpar\adjustright \fs21\cgrid {Provides important information relevant to writing USB device minidrivers.\line Clarifies the minidriver\rquote
  135. s role in a layered architecture, by showing what lives above and below it.\line Describes the nature of resources available to the minidriver.
  136. \par }\pard\plain \s24\sl-240\slmult0\keepn\nowidctlpar\widctlpar\adjustright \fs21\cgrid {\b Anatomy of the Sample Minidriver
  137. \par }\pard\plain \s18\li200\sa80\nowidctlpar\widctlpar\adjustright \fs21\cgrid {Provides a table that illustrates the anatomy of this sample minidriver.
  138. \par }\pard\plain \s24\sl-240\slmult0\keepn\nowidctlpar\widctlpar\adjustright \fs21\cgrid {\b Event-driven Walkthrough of the Sample Minidriver
  139. \par }\pard\plain \s18\li200\sa80\nowidctlpar\widctlpar\adjustright \fs21\cgrid {Provides helpful commentary on the sample source code.\line Identifies those portions of the minidriver that the user needs to adapt to meet their particular device requirements.
  140. \par }\pard\plain \s24\sl-240\slmult0\keepn\nowidctlpar\widctlpar\adjustright \fs21\cgrid {\b References
  141. \par }\pard\plain \s18\li200\sa80\nowidctlpar\widctlpar\adjustright \fs21\cgrid {References to material helpful toward understanding this sample minidriver.\line A reference to other Microsoft-provided sample minidrivers.
  142. \par }\pard\plain \s1\sb200\sa80\sl-440\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \fs34\cgrid {{\*\bkmkstart _Toc381778550}Background Notes{\*\bkmkend _Toc381778550}
  143. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {A minidriver is a hardware-specific DLL that uses a Microsoft-provided class driver to accomplish most action
  144. s through function calls, and provides only device-specific controls. Under WDM, the minidriver registers each adapter with the class driver, and the class driver creates a device object to represent each adapter that registers. The registration process i
  145. s described in }{\i WDM Design Notes and Reference.}{ The minidriver uses the class driver\rquote s device object to make system calls.
  146. \par }{A WDM USB device driver communicates with a WDM USB stack through an IRP interface. There are two ways to call DDIs:
  147. \par {\pntext\pard\plain\s21 \f3\fs21\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \s21\fi-360\li360\sa80\nowidctlpar\widctlpar\tx280{\*\pn \pnlvlblt\ilvl0\ls40\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls40\adjustright \fs21\cgrid {
  148. The client device driver passes USB Request Block (URB) structures to the next-lower driver as a parameter in an IRP with Irp->Majo
  149. rFunction set to IRP_MJ_INTERNAL_DEVICE_CONTROL and the next IRP stack location Parameters.DeviceIoControl.IoControlCode field set to IOCTL_INTERNAL_USB_SUBMIT_URB.
  150. \par {\pntext\pard\plain\s21 \f3\fs21\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s21\fi-360\li360\sa80\nowidctlpar\widctlpar\tx280{\*\pn \pnlvlblt\ilvl0\ls40\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls40\adjustright {
  151. The client device driver passes an IRP with Irp->Majorfunction set to IRP_MJ_INTERNAL_DEVICE_CONTROL, and the next IRP stack location Parameters.DeviceIoControl.IoControlCode field set to one of the other IOCTL_INTERNAL_USB_ function codes. \line
  152. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\adjustright \fs21\cgrid {The client device driver and bus driver share information in the common structures USBD_INTERFACE_INFORMATION and USBD_PIPE_INFORMATION.
  153. \par }{\b {\*\bkmkstart _Toc370556571}{\*\bkmkstart _Toc381151170}I/O Request Packet (IRP) Transfers}{{\*\bkmkend _Toc370556571}{\*\bkmkend _Toc381151170}
  154. . IRPs are passed to the next lower driver by using the WDM function IoCallDriver with the device object of the next lower driver as a
  155. parameter.The device object of the next lower driver for all USB client device drivers is the DeviceObject returned from the call to IoAttachDeviceToStack.
  156. \par }{\b {\*\bkmkstart _Toc370556575}{\*\bkmkstart _Toc381151172}USB Request Block (URB) Transfers}{{\*\bkmkend _Toc370556575}{\*\bkmkend _Toc381151172}. Clients send
  157. these requests to the bus by including them in an IRP a pointer to a URB structure; a function code within the URB identifies the specific request. For transfer requests, multiple URB structures may be linked and passed in with a single IRP.}{ }{
  158. The USB driver stack components assume all URB structures passed to them are allocated from the nonpaged pool.
  159. \par }{\b {\*\bkmkstart _Toc370556576}{\*\bkmkstart _Toc381151173}Common URB Header Structure}{{\*\bkmkend _Toc370556576}{\*\bkmkend _Toc381151173}. Different URB structures are defined for each function. However, every URB has a commo}{n header, _URB_HEADER}{
  160. . The header portion of a URB must always be initialized with the input parameters }{\i Length }{and }{\i Function}{, and will always return the output parameter }{\i Status}{.
  161. \par }{\b {\*\bkmkstart _Toc370556577}{\*\bkmkstart _Toc381151174}Bandwidth Allocation}{{\*\bkmkend _Toc370556577}{\*\bkmkend _Toc381151174}
  162. . Bandwidth allocation occurs through the process of selecting a configuration or interface and acquiring open pipe handles. While a driver holds an open handle for a specific pipe, the bandwidth necessary to transfer data on that pipe (based
  163. on maximum packet size and service interval) is reserved.
  164. \par }{\b {\*\bkmkstart _Toc370556578}{\*\bkmkstart _Toc381151175}IOCTL Codes}{. For a discussion of the IOCTL codes that a USB client device driver must use, see }{\i USB Driver and Minidriver Design Notes and Reference}{.
  165. \par }{\b URB Transfer Requests}{{\*\bkmkend _Toc370556578}{\*\bkmkend _Toc381151175}. For a discussion of URB transfer requests: transfer flags, status codes, halt/stall behavior, and linked URBs, see }{\i USB Driver and Minidriver Design Notes and Reference}
  166. {.
  167. \par }\pard\plain \s2\sb140\sa60\sl-380\slmult0\keepn\nowidctlpar\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\outlinelevel1\adjustright \fs30\cgrid {{\*\bkmkstart _Toc381778551}Notes on Writing USB Device Minidrivers{\*\bkmkend _Toc381778551}
  168. \par {\pntext\pard\plain\s21 \f3\fs21\highlight7\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \s21\fi-360\li360\sa80\nowidctlpar\widctlpar\tx280{\*\pn \pnlvlblt\ilvl0\ls27\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls27\adjustright
  169. \fs21\cgrid {\highlight7 [}{\i\highlight7 need notes???}{\highlight7 ]}{\line
  170. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {This section has described general issues relevant to writing USB device minidrivers. Now you are ready to start looking at the SONYDCR source code. The following section is an
  171. \ldblquote anatomy\rdblquote of the sample minidriver code in terms of C modules and driver entry points.
  172. \par }\pard\plain \s1\sb200\sa80\sl-440\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \fs34\cgrid {{\*\bkmkstart _Toc380474380}{\*\bkmkstart _Toc381778552}Anatomy of the Sample Minidriver{\*\bkmkend _Toc380474380}{\*\bkmkend _Toc381778552}
  173. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {After you install the WDM DDK, the following source code files can be located at [}{\i path to be determined}{].
  174. \par }\trowd \trgaph108\trleft-108 \clvertalt\cltxlrtb \cellx1440\clvertalt\cltxlrtb \cellx8748\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {I82930.c\cell
  175. Shows how a driver gets loaded, and how it submits requests to the USB Driver Interface.\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\row }\pard\plain \s35\qr\sl-160\slmult0\nowidctlpar\widctlpar\adjustright \fs12\cgrid {
  176. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {After you install the WDM DDK, the following header files can be located at [}{\i path to be determined}{].
  177. \par }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {I82930.h\cell Contains structures that are samples of information that could be used in a device extension structure.\cell }\pard\plain
  178. \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\row }\pard\plain \s35\qr\sl-160\slmult0\nowidctlpar\widctlpar\adjustright \fs12\cgrid {
  179. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {
  180. These sample files are heavily commented, to aid the user in understanding their purpose and their relationship to the stream class driver. Documentation for the DDIs referenced below may be found in }{\i
  181. USB Driver and Minidriver Design Notes and Reference}{, in }{\i WDM Design Notes and Reference}{
  182. , or in the source code files for the sample minidriver, listed above. Documentation for the class driver DDIs can be quickly found by looking to the Table of Contents for these documents. When DDIs are part of the sample min
  183. idriver source code, their file locations are noted in parentheses.\line
  184. \par }\trowd \trgaph108\trleft-108 \clvertalt\cltxlrtb \cellx4080\clvertalt\cltxlrtb \cellx8760\pard\plain \s25\sb20\sa60\sl-220\slmult0\keepn\nowidctlpar\widctlpar\intbl\adjustright \b\fs19\cgrid {Minidriver DDI\cell Description\cell }\pard\plain
  185. \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\row }\trowd \trgaph108\trleft-108 \clvertalt\cltxlrtb \cellx4080\clvertalt\cltxlrtb \cellx8760\pard\plain \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl
  186. \tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {NTSTATUS DriverEntry(
  187. \par IN PDRIVER_OBJECT DriverObject,
  188. \par IN PUNICODE_STRING RegistryPath
  189. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Installable driver initialization entry point. This entry point is called directly by the I/O system.\cell }\pard\plain
  190. \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright
  191. \f2\fs16\cgrid {NTSTATUS I82930_Dispatch(
  192. \par IN PDEVICE_OBJECT DeviceObject,
  193. \par IN PIRP Irp
  194. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Process the IRPs sent to this device.\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain
  195. \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {VOID I82930_Unload(
  196. \par IN PDRIVER_OBJECT DriverObject
  197. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Free allocated resources.\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain
  198. \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {NTSTATUS I82930_StartDevice(
  199. \par IN PDEVICE_OBJECT DeviceObject
  200. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Initializes a given instance of the device on the USB. The device descriptor is obtained and stored.\cell }\pard\plain
  201. \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright
  202. \f2\fs16\cgrid {NTSTATUS I82930_RemoveDevice(
  203. \par IN PDEVICE_OBJECT DeviceObject
  204. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Stops a given instance of an 82930 device on the USB.\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row
  205. }\pard\plain \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {NTSTATUS I82930_StopDevice(
  206. \par IN PDEVICE_OBJECT DeviceObject
  207. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Stops a given instance of an 82930 device on the USB.\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row
  208. }\pard\plain \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {NTSTATUS I82930_PnPAddDevice(
  209. \par IN PDRIVER_OBJECT DriverObject,
  210. \par IN PDEVICE_OBJECT PhysicalDeviceObject
  211. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Creates a new instance of the device.\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain
  212. \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {NTSTATUS I82930_CreateDeviceObject(
  213. \par IN PDRIVER_OBJECT DriverObject,
  214. \par IN PDEVICE_OBJECT *DeviceObject,
  215. \par LONG Instance
  216. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Creates a FunctionalDeviceObject.\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain
  217. \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {NTSTATUS I82930_CallUSBD(
  218. \par IN PDEVICE_OBJECT DeviceObject,
  219. \par IN PURB Urb
  220. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Passes a URB to the USBD class driver.\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain
  221. \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {NTSTATUS I82930_ConfigureDevice(
  222. \par IN PDEVICE_OBJECT DeviceObject
  223. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Initializes a given instance of the device on the USB and selects the configuration.\cell }\pard\plain
  224. \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright
  225. \f2\fs16\cgrid {NTSTATUS I82930_SelectInterface(
  226. \par IN PDEVICE_OBJECT DeviceObject,
  227. \par IN PUSB_CONFIGURATION_DESCRIPTOR\line ConfigurationDescriptor,
  228. \par PUSB_INTERFACE_INFORMATION Interface
  229. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Initializes an 82930 with multiple interfaces.\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row
  230. }\pard\plain \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {VOID I82930_Cleanup(
  231. \par PDEVICE_OBJECT DeviceObject
  232. \par (;\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {???\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain \s20\sl-220\slmult0
  233. \nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {NTSTATUS I82930_BuildPipeList(
  234. \par IN PDEVICE_OBJECT DeviceObject
  235. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {???\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain \s20\sl-220\slmult0
  236. \nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {NTSTATUS I82930_ResetPipe(
  237. \par IN PDEVICE_OBJECT DeviceObject,
  238. \par IN PI82930_PIPE Pipe
  239. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {Reset both pipes associated with a video channel on the camera.\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {
  240. \fs21 \row }\pard\plain \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {VOID I82930_DecrementIoCount(
  241. \par IN PDEVICE_OBJECT DeviceObject
  242. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {???\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\trowd \trgaph108\trleft-108 \clvertalt\cltxlrtb
  243. \cellx4080\clvertalt\cltxlrtb \cellx8760\pard\plain \s20\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx390\tx780\tx1170\tx1560\tx1950\tx2340\tx2730\tx3120\tx3510\tx3900\tx4290\tx4680\tx5070\tx5460\tx5850\tx6240\tx6630\adjustright \f2\fs16\cgrid {
  244. VOID I82930_IncrementIoCount(
  245. \par IN PDEVICE_OBJECT DeviceObject
  246. \par );\cell }\pard\plain \s26\sb20\sa60\sl-220\slmult0\nowidctlpar\widctlpar\intbl\tx280\tx560\adjustright \fs19\cgrid {???\cell }\pard\plain \nowidctlpar\widctlpar\intbl\adjustright \fs20\cgrid {\fs21 \row }\pard\plain
  247. \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {
  248. \par }\pard\plain \s1\sb200\sa80\sl-440\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \fs34\cgrid {{\*\bkmkstart _Toc381778553}Event-driven Walkthrough of the Sample Minidriver{\*\bkmkend _Toc381778553}
  249. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {
  250. The following steps briefly describe ??????????????????? for the sample USB device minidriver. The sample minidriver routines mentioned here are described in greater detail in the comments of the sample source code and i
  251. n routine-specific notes that follow.
  252. \par {\pntext\pard\plain\s23 \fs21\highlight7\cgrid \hich\af0\dbch\af0\loch\f0 1.\tab}}\pard \s23\fi-360\li360\sa160\nowidctlpar\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls35\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls35\adjustright {
  253. \highlight7 [}{\i\highlight7 need event-driven walkthrough}{\highlight7 ]}{
  254. \par }\pard\plain \s1\sb200\sa80\sl-440\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \fs34\cgrid {{\*\bkmkstart _Toc381778554}References{\*\bkmkend _Toc381778554}
  255. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {Documentation for the class driver DDIs can be quickly found by looking to the Table of Contents for }{\i WDM Design Notes and Reference,}{ or }{\i USB Drive
  256. r and Minidriver Design Notes and Reference}{. However, some DDIs need additional documentation when viewed in the context of this sample minidriver.
  257. \par }\pard\plain \s2\sb140\sa60\sl-380\slmult0\keepn\nowidctlpar\widctlpar\outlinelevel1\adjustright \fs30\cgrid {\highlight7 {\*\bkmkstart _Toc381778555}LIST THEM HERE}{{\*\bkmkend _Toc381778555}
  258. \par {\*\bkmkstart _Toc381778556}Reference to Other Microsoft-supplied Samples{\*\bkmkend _Toc381778556}
  259. \par }\pard\plain \s23\sa160\nowidctlpar\widctlpar\adjustright \fs21\cgrid {The following Microsoft-supplied minidrivers are available as part of this Memphis DDK.
  260. \par }{\i SCSAMPLE: Stream Class Sample Minidriver Design Notes }{documents the SCSAMPLE sample minidriver. The location of the sample source code is given in that document. (}{\i need info on demonstration value of this minidriver}{)
  261. \par
  262. \par }}