2160 lines
104 KiB
HTML
2160 lines
104 KiB
HTML
<html xmlns:v="urn:schemas-microsoft-com:vml"
|
||
xmlns:o="urn:schemas-microsoft-com:office:office"
|
||
xmlns:w="urn:schemas-microsoft-com:office:word"
|
||
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
|
||
xmlns="http://www.w3.org/TR/REC-html40">
|
||
|
||
<head>
|
||
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
|
||
<meta name=ProgId content=Word.Document>
|
||
<meta name=Generator content="Microsoft Word 12">
|
||
<meta name=Originator content="Microsoft Word 12">
|
||
<link rel=File-List href="Readme_files/filelist.xml">
|
||
<!--[if gte mso 9]><xml>
|
||
<o:OfficeDocumentSettings>
|
||
<o:RelyOnVML/>
|
||
<o:AllowPNG/>
|
||
<o:RemovePersonalInformation/>
|
||
<o:RemoveDateAndTime/>
|
||
</o:OfficeDocumentSettings>
|
||
</xml><![endif]-->
|
||
<link rel=themeData href="Readme_files/themedata.thmx">
|
||
<link rel=colorSchemeMapping href="Readme_files/colorschememapping.xml">
|
||
<!--[if gte mso 9]><xml>
|
||
<w:WordDocument>
|
||
<w:SpellingState>Clean</w:SpellingState>
|
||
<w:GrammarState>Clean</w:GrammarState>
|
||
<w:TrackMoves>false</w:TrackMoves>
|
||
<w:TrackFormatting/>
|
||
<w:PunctuationKerning/>
|
||
<w:ValidateAgainstSchemas/>
|
||
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
|
||
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
|
||
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
|
||
<w:DoNotPromoteQF/>
|
||
<w:LidThemeOther>EN-US</w:LidThemeOther>
|
||
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
|
||
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
|
||
<w:Compatibility>
|
||
<w:BreakWrappedTables/>
|
||
<w:SnapToGridInCell/>
|
||
<w:WrapTextWithPunct/>
|
||
<w:UseAsianBreakRules/>
|
||
<w:DontGrowAutofit/>
|
||
<w:SplitPgBreakAndParaMark/>
|
||
<w:DontVertAlignCellWithSp/>
|
||
<w:DontBreakConstrainedForcedTables/>
|
||
<w:DontVertAlignInTxbx/>
|
||
<w:Word11KerningPairs/>
|
||
<w:CachedColBalance/>
|
||
</w:Compatibility>
|
||
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
|
||
<m:mathPr>
|
||
<m:mathFont m:val="Cambria Math"/>
|
||
<m:brkBin m:val="before"/>
|
||
<m:brkBinSub m:val="--"/>
|
||
<m:smallFrac m:val="off"/>
|
||
<m:dispDef/>
|
||
<m:lMargin m:val="0"/>
|
||
<m:rMargin m:val="0"/>
|
||
<m:defJc m:val="centerGroup"/>
|
||
<m:wrapIndent m:val="1440"/>
|
||
<m:intLim m:val="subSup"/>
|
||
<m:naryLim m:val="undOvr"/>
|
||
</m:mathPr></w:WordDocument>
|
||
</xml><![endif]--><!--[if gte mso 9]><xml>
|
||
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
|
||
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
|
||
LatentStyleCount="267">
|
||
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
|
||
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
|
||
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
|
||
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
|
||
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
|
||
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
|
||
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
|
||
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
|
||
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
|
||
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
|
||
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
|
||
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
|
||
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
|
||
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
|
||
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
|
||
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
|
||
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
|
||
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
|
||
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
|
||
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
|
||
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
|
||
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
|
||
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
|
||
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
|
||
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
|
||
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Table Grid"/>
|
||
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
|
||
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
|
||
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Shading"/>
|
||
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light List"/>
|
||
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Grid"/>
|
||
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 1"/>
|
||
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 2"/>
|
||
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 1"/>
|
||
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 2"/>
|
||
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 1"/>
|
||
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 2"/>
|
||
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 3"/>
|
||
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Dark List"/>
|
||
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Shading"/>
|
||
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful List"/>
|
||
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Grid"/>
|
||
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light List Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
|
||
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
|
||
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
|
||
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
|
||
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
|
||
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
|
||
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light List Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
|
||
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light List Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
|
||
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light List Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
|
||
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light List Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
|
||
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light List Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
|
||
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
|
||
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
|
||
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
|
||
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
|
||
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
|
||
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
|
||
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
|
||
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
|
||
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
|
||
</w:LatentStyles>
|
||
</xml><![endif]-->
|
||
<style>
|
||
<!--
|
||
/* Font Definitions */
|
||
@font-face
|
||
{font-family:"Cambria Math";
|
||
panose-1:2 4 5 3 5 4 6 3 2 4;
|
||
mso-font-charset:1;
|
||
mso-generic-font-family:roman;
|
||
mso-font-format:other;
|
||
mso-font-pitch:variable;
|
||
mso-font-signature:0 0 0 0 0 0;}
|
||
@font-face
|
||
{font-family:Cambria;
|
||
panose-1:2 4 5 3 5 4 6 3 2 4;
|
||
mso-font-charset:0;
|
||
mso-generic-font-family:roman;
|
||
mso-font-pitch:variable;
|
||
mso-font-signature:-1610611985 1073741899 0 0 415 0;}
|
||
@font-face
|
||
{font-family:Calibri;
|
||
panose-1:2 15 5 2 2 2 4 3 2 4;
|
||
mso-font-charset:0;
|
||
mso-generic-font-family:swiss;
|
||
mso-font-pitch:variable;
|
||
mso-font-signature:-520092929 1073786111 9 0 415 0;}
|
||
@font-face
|
||
{font-family:Tahoma;
|
||
panose-1:2 11 6 4 3 5 4 4 2 4;
|
||
mso-font-charset:0;
|
||
mso-generic-font-family:swiss;
|
||
mso-font-pitch:variable;
|
||
mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
|
||
@font-face
|
||
{font-family:"Lucida Console";
|
||
panose-1:2 11 6 9 4 5 4 2 2 4;
|
||
mso-font-charset:0;
|
||
mso-generic-font-family:modern;
|
||
mso-font-pitch:fixed;
|
||
mso-font-signature:-2147482993 6144 0 0 31 0;}
|
||
/* Style Definitions */
|
||
p.MsoNormal, li.MsoNormal, div.MsoNormal
|
||
{mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
mso-style-parent:"";
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:10.0pt;
|
||
margin-left:0in;
|
||
line-height:115%;
|
||
mso-pagination:widow-orphan;
|
||
font-size:11.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
h1
|
||
{mso-style-priority:9;
|
||
mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
mso-style-link:"Heading 1 Char";
|
||
mso-style-next:Normal;
|
||
margin-top:24.0pt;
|
||
margin-right:0in;
|
||
margin-bottom:0in;
|
||
margin-left:0in;
|
||
margin-bottom:.0001pt;
|
||
line-height:115%;
|
||
mso-pagination:widow-orphan lines-together;
|
||
page-break-after:avoid;
|
||
mso-outline-level:1;
|
||
font-size:14.0pt;
|
||
font-family:"Cambria","serif";
|
||
mso-ascii-font-family:Cambria;
|
||
mso-ascii-theme-font:major-latin;
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-fareast-theme-font:major-fareast;
|
||
mso-hansi-font-family:Cambria;
|
||
mso-hansi-theme-font:major-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:major-bidi;
|
||
color:#365F91;
|
||
mso-themecolor:accent1;
|
||
mso-themeshade:191;
|
||
mso-font-kerning:0pt;}
|
||
h2
|
||
{mso-style-noshow:yes;
|
||
mso-style-priority:9;
|
||
mso-style-qformat:yes;
|
||
mso-style-link:"Heading 2 Char";
|
||
mso-style-next:Normal;
|
||
margin-top:10.0pt;
|
||
margin-right:0in;
|
||
margin-bottom:0in;
|
||
margin-left:0in;
|
||
margin-bottom:.0001pt;
|
||
line-height:115%;
|
||
mso-pagination:widow-orphan lines-together;
|
||
page-break-after:avoid;
|
||
mso-outline-level:2;
|
||
font-size:13.0pt;
|
||
font-family:"Cambria","serif";
|
||
mso-ascii-font-family:Cambria;
|
||
mso-ascii-theme-font:major-latin;
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-fareast-theme-font:major-fareast;
|
||
mso-hansi-font-family:Cambria;
|
||
mso-hansi-theme-font:major-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:major-bidi;
|
||
color:#4F81BD;
|
||
mso-themecolor:accent1;}
|
||
p.MsoToc1, li.MsoToc1, div.MsoToc1
|
||
{mso-style-update:auto;
|
||
mso-style-priority:39;
|
||
mso-style-next:Normal;
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:5.0pt;
|
||
margin-left:0in;
|
||
line-height:115%;
|
||
mso-pagination:widow-orphan;
|
||
font-size:11.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
p.MsoToc2, li.MsoToc2, div.MsoToc2
|
||
{mso-style-update:auto;
|
||
mso-style-priority:39;
|
||
mso-style-next:Normal;
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:5.0pt;
|
||
margin-left:11.0pt;
|
||
line-height:115%;
|
||
mso-pagination:widow-orphan;
|
||
font-size:11.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
p.MsoCommentText, li.MsoCommentText, div.MsoCommentText
|
||
{mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-link:"Comment Text Char";
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:10.0pt;
|
||
margin-left:0in;
|
||
mso-pagination:widow-orphan;
|
||
font-size:10.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
p.MsoHeader, li.MsoHeader, div.MsoHeader
|
||
{mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-link:"Header Char";
|
||
margin:0in;
|
||
margin-bottom:.0001pt;
|
||
mso-pagination:widow-orphan;
|
||
tab-stops:center 3.25in right 6.5in;
|
||
font-size:11.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
p.MsoFooter, li.MsoFooter, div.MsoFooter
|
||
{mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-link:"Footer Char";
|
||
margin:0in;
|
||
margin-bottom:.0001pt;
|
||
mso-pagination:widow-orphan;
|
||
tab-stops:center 3.25in right 6.5in;
|
||
font-size:11.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
span.MsoCommentReference
|
||
{mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-ansi-font-size:8.0pt;
|
||
mso-bidi-font-size:8.0pt;}
|
||
p.MsoTitle, li.MsoTitle, div.MsoTitle
|
||
{mso-style-priority:10;
|
||
mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
mso-style-link:"Title Char";
|
||
mso-style-next:Normal;
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:15.0pt;
|
||
margin-left:0in;
|
||
mso-add-space:auto;
|
||
mso-pagination:widow-orphan;
|
||
border:none;
|
||
mso-border-bottom-alt:solid #4F81BD 1.0pt;
|
||
mso-border-bottom-themecolor:accent1;
|
||
padding:0in;
|
||
mso-padding-alt:0in 0in 4.0pt 0in;
|
||
font-size:26.0pt;
|
||
font-family:"Cambria","serif";
|
||
mso-ascii-font-family:Cambria;
|
||
mso-ascii-theme-font:major-latin;
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-fareast-theme-font:major-fareast;
|
||
mso-hansi-font-family:Cambria;
|
||
mso-hansi-theme-font:major-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:major-bidi;
|
||
color:#17365D;
|
||
mso-themecolor:text2;
|
||
mso-themeshade:191;
|
||
letter-spacing:.25pt;
|
||
mso-font-kerning:14.0pt;}
|
||
p.MsoTitleCxSpFirst, li.MsoTitleCxSpFirst, div.MsoTitleCxSpFirst
|
||
{mso-style-priority:10;
|
||
mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
mso-style-link:"Title Char";
|
||
mso-style-next:Normal;
|
||
mso-style-type:export-only;
|
||
margin:0in;
|
||
margin-bottom:.0001pt;
|
||
mso-add-space:auto;
|
||
mso-pagination:widow-orphan;
|
||
border:none;
|
||
mso-border-bottom-alt:solid #4F81BD 1.0pt;
|
||
mso-border-bottom-themecolor:accent1;
|
||
padding:0in;
|
||
mso-padding-alt:0in 0in 4.0pt 0in;
|
||
font-size:26.0pt;
|
||
font-family:"Cambria","serif";
|
||
mso-ascii-font-family:Cambria;
|
||
mso-ascii-theme-font:major-latin;
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-fareast-theme-font:major-fareast;
|
||
mso-hansi-font-family:Cambria;
|
||
mso-hansi-theme-font:major-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:major-bidi;
|
||
color:#17365D;
|
||
mso-themecolor:text2;
|
||
mso-themeshade:191;
|
||
letter-spacing:.25pt;
|
||
mso-font-kerning:14.0pt;}
|
||
p.MsoTitleCxSpMiddle, li.MsoTitleCxSpMiddle, div.MsoTitleCxSpMiddle
|
||
{mso-style-priority:10;
|
||
mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
mso-style-link:"Title Char";
|
||
mso-style-next:Normal;
|
||
mso-style-type:export-only;
|
||
margin:0in;
|
||
margin-bottom:.0001pt;
|
||
mso-add-space:auto;
|
||
mso-pagination:widow-orphan;
|
||
border:none;
|
||
mso-border-bottom-alt:solid #4F81BD 1.0pt;
|
||
mso-border-bottom-themecolor:accent1;
|
||
padding:0in;
|
||
mso-padding-alt:0in 0in 4.0pt 0in;
|
||
font-size:26.0pt;
|
||
font-family:"Cambria","serif";
|
||
mso-ascii-font-family:Cambria;
|
||
mso-ascii-theme-font:major-latin;
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-fareast-theme-font:major-fareast;
|
||
mso-hansi-font-family:Cambria;
|
||
mso-hansi-theme-font:major-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:major-bidi;
|
||
color:#17365D;
|
||
mso-themecolor:text2;
|
||
mso-themeshade:191;
|
||
letter-spacing:.25pt;
|
||
mso-font-kerning:14.0pt;}
|
||
p.MsoTitleCxSpLast, li.MsoTitleCxSpLast, div.MsoTitleCxSpLast
|
||
{mso-style-priority:10;
|
||
mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
mso-style-link:"Title Char";
|
||
mso-style-next:Normal;
|
||
mso-style-type:export-only;
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:15.0pt;
|
||
margin-left:0in;
|
||
mso-add-space:auto;
|
||
mso-pagination:widow-orphan;
|
||
border:none;
|
||
mso-border-bottom-alt:solid #4F81BD 1.0pt;
|
||
mso-border-bottom-themecolor:accent1;
|
||
padding:0in;
|
||
mso-padding-alt:0in 0in 4.0pt 0in;
|
||
font-size:26.0pt;
|
||
font-family:"Cambria","serif";
|
||
mso-ascii-font-family:Cambria;
|
||
mso-ascii-theme-font:major-latin;
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-fareast-theme-font:major-fareast;
|
||
mso-hansi-font-family:Cambria;
|
||
mso-hansi-theme-font:major-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:major-bidi;
|
||
color:#17365D;
|
||
mso-themecolor:text2;
|
||
mso-themeshade:191;
|
||
letter-spacing:.25pt;
|
||
mso-font-kerning:14.0pt;}
|
||
a:link, span.MsoHyperlink
|
||
{mso-style-priority:99;
|
||
color:blue;
|
||
mso-themecolor:hyperlink;
|
||
text-decoration:underline;
|
||
text-underline:single;}
|
||
a:visited, span.MsoHyperlinkFollowed
|
||
{mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
color:purple;
|
||
mso-themecolor:followedhyperlink;
|
||
text-decoration:underline;
|
||
text-underline:single;}
|
||
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
|
||
{mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-parent:"Comment Text";
|
||
mso-style-link:"Comment Subject Char";
|
||
mso-style-next:"Comment Text";
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:10.0pt;
|
||
margin-left:0in;
|
||
mso-pagination:widow-orphan;
|
||
font-size:10.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;
|
||
font-weight:bold;}
|
||
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
|
||
{mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-link:"Balloon Text Char";
|
||
margin:0in;
|
||
margin-bottom:.0001pt;
|
||
mso-pagination:widow-orphan;
|
||
font-size:8.0pt;
|
||
font-family:"Tahoma","sans-serif";
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;}
|
||
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
|
||
{mso-style-priority:34;
|
||
mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:10.0pt;
|
||
margin-left:.5in;
|
||
mso-add-space:auto;
|
||
line-height:115%;
|
||
mso-pagination:widow-orphan;
|
||
font-size:11.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
|
||
{mso-style-priority:34;
|
||
mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
mso-style-type:export-only;
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:0in;
|
||
margin-left:.5in;
|
||
margin-bottom:.0001pt;
|
||
mso-add-space:auto;
|
||
line-height:115%;
|
||
mso-pagination:widow-orphan;
|
||
font-size:11.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
|
||
{mso-style-priority:34;
|
||
mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
mso-style-type:export-only;
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:0in;
|
||
margin-left:.5in;
|
||
margin-bottom:.0001pt;
|
||
mso-add-space:auto;
|
||
line-height:115%;
|
||
mso-pagination:widow-orphan;
|
||
font-size:11.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
|
||
{mso-style-priority:34;
|
||
mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
mso-style-type:export-only;
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:10.0pt;
|
||
margin-left:.5in;
|
||
mso-add-space:auto;
|
||
line-height:115%;
|
||
mso-pagination:widow-orphan;
|
||
font-size:11.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
p.MsoTocHeading, li.MsoTocHeading, div.MsoTocHeading
|
||
{mso-style-noshow:yes;
|
||
mso-style-priority:39;
|
||
mso-style-qformat:yes;
|
||
mso-style-parent:"Heading 1";
|
||
mso-style-next:Normal;
|
||
margin-top:24.0pt;
|
||
margin-right:0in;
|
||
margin-bottom:0in;
|
||
margin-left:0in;
|
||
margin-bottom:.0001pt;
|
||
line-height:115%;
|
||
mso-pagination:widow-orphan lines-together;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:"Cambria","serif";
|
||
mso-ascii-font-family:Cambria;
|
||
mso-ascii-theme-font:major-latin;
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-fareast-theme-font:major-fareast;
|
||
mso-hansi-font-family:Cambria;
|
||
mso-hansi-theme-font:major-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:major-bidi;
|
||
color:#365F91;
|
||
mso-themecolor:accent1;
|
||
mso-themeshade:191;
|
||
font-weight:bold;}
|
||
span.Heading1Char
|
||
{mso-style-name:"Heading 1 Char";
|
||
mso-style-priority:9;
|
||
mso-style-unhide:no;
|
||
mso-style-locked:yes;
|
||
mso-style-link:"Heading 1";
|
||
mso-ansi-font-size:14.0pt;
|
||
mso-bidi-font-size:14.0pt;
|
||
font-family:"Cambria","serif";
|
||
mso-ascii-font-family:Cambria;
|
||
mso-ascii-theme-font:major-latin;
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-fareast-theme-font:major-fareast;
|
||
mso-hansi-font-family:Cambria;
|
||
mso-hansi-theme-font:major-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:major-bidi;
|
||
color:#365F91;
|
||
mso-themecolor:accent1;
|
||
mso-themeshade:191;
|
||
font-weight:bold;}
|
||
span.Heading2Char
|
||
{mso-style-name:"Heading 2 Char";
|
||
mso-style-noshow:yes;
|
||
mso-style-priority:9;
|
||
mso-style-unhide:no;
|
||
mso-style-locked:yes;
|
||
mso-style-link:"Heading 2";
|
||
mso-ansi-font-size:13.0pt;
|
||
mso-bidi-font-size:13.0pt;
|
||
font-family:"Cambria","serif";
|
||
mso-ascii-font-family:Cambria;
|
||
mso-ascii-theme-font:major-latin;
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-fareast-theme-font:major-fareast;
|
||
mso-hansi-font-family:Cambria;
|
||
mso-hansi-theme-font:major-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:major-bidi;
|
||
color:#4F81BD;
|
||
mso-themecolor:accent1;
|
||
font-weight:bold;}
|
||
span.CommentTextChar
|
||
{mso-style-name:"Comment Text Char";
|
||
mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-unhide:no;
|
||
mso-style-locked:yes;
|
||
mso-style-link:"Comment Text";
|
||
mso-ansi-font-size:10.0pt;
|
||
mso-bidi-font-size:10.0pt;}
|
||
span.HeaderChar
|
||
{mso-style-name:"Header Char";
|
||
mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-unhide:no;
|
||
mso-style-locked:yes;
|
||
mso-style-link:Header;}
|
||
span.FooterChar
|
||
{mso-style-name:"Footer Char";
|
||
mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-unhide:no;
|
||
mso-style-locked:yes;
|
||
mso-style-link:Footer;}
|
||
span.TitleChar
|
||
{mso-style-name:"Title Char";
|
||
mso-style-priority:10;
|
||
mso-style-unhide:no;
|
||
mso-style-locked:yes;
|
||
mso-style-link:Title;
|
||
mso-ansi-font-size:26.0pt;
|
||
mso-bidi-font-size:26.0pt;
|
||
font-family:"Cambria","serif";
|
||
mso-ascii-font-family:Cambria;
|
||
mso-ascii-theme-font:major-latin;
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-fareast-theme-font:major-fareast;
|
||
mso-hansi-font-family:Cambria;
|
||
mso-hansi-theme-font:major-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:major-bidi;
|
||
color:#17365D;
|
||
mso-themecolor:text2;
|
||
mso-themeshade:191;
|
||
letter-spacing:.25pt;
|
||
mso-font-kerning:14.0pt;}
|
||
span.CommentSubjectChar
|
||
{mso-style-name:"Comment Subject Char";
|
||
mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-unhide:no;
|
||
mso-style-locked:yes;
|
||
mso-style-parent:"Comment Text Char";
|
||
mso-style-link:"Comment Subject";
|
||
mso-ansi-font-size:10.0pt;
|
||
mso-bidi-font-size:10.0pt;
|
||
font-weight:bold;}
|
||
span.BalloonTextChar
|
||
{mso-style-name:"Balloon Text Char";
|
||
mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-unhide:no;
|
||
mso-style-locked:yes;
|
||
mso-style-link:"Balloon Text";
|
||
mso-ansi-font-size:8.0pt;
|
||
mso-bidi-font-size:8.0pt;
|
||
font-family:"Tahoma","sans-serif";
|
||
mso-ascii-font-family:Tahoma;
|
||
mso-hansi-font-family:Tahoma;
|
||
mso-bidi-font-family:Tahoma;}
|
||
p.Code, li.Code, div.Code
|
||
{mso-style-name:Code;
|
||
mso-style-unhide:no;
|
||
mso-style-qformat:yes;
|
||
margin-top:0in;
|
||
margin-right:0in;
|
||
margin-bottom:0in;
|
||
margin-left:.5in;
|
||
margin-bottom:.0001pt;
|
||
mso-pagination:widow-orphan;
|
||
font-size:10.0pt;
|
||
font-family:"Lucida Console";
|
||
mso-fareast-font-family:"Times New Roman";
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-no-proof:yes;}
|
||
span.SpellE
|
||
{mso-style-name:"";
|
||
mso-spl-e:yes;}
|
||
span.GramE
|
||
{mso-style-name:"";
|
||
mso-gram-e:yes;}
|
||
.MsoChpDefault
|
||
{mso-style-type:export-only;
|
||
mso-default-props:yes;
|
||
font-size:10.0pt;
|
||
mso-ansi-font-size:10.0pt;
|
||
mso-bidi-font-size:10.0pt;
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-fareast-font-family:Calibri;
|
||
mso-fareast-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
@page Section1
|
||
{size:8.5in 11.0in;
|
||
margin:1.0in 1.0in 1.0in 1.0in;
|
||
mso-header-margin:.5in;
|
||
mso-footer-margin:.5in;
|
||
mso-paper-source:0;}
|
||
div.Section1
|
||
{page:Section1;}
|
||
/* List Definitions */
|
||
@list l0
|
||
{mso-list-id:47918216;
|
||
mso-list-type:hybrid;
|
||
mso-list-template-ids:724350324 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
||
@list l0:level1
|
||
{mso-level-tab-stop:none;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l0:level2
|
||
{mso-level-tab-stop:1.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l0:level3
|
||
{mso-level-tab-stop:1.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l0:level4
|
||
{mso-level-tab-stop:2.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l0:level5
|
||
{mso-level-tab-stop:2.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l0:level6
|
||
{mso-level-tab-stop:3.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l0:level7
|
||
{mso-level-tab-stop:3.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l0:level8
|
||
{mso-level-tab-stop:4.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l0:level9
|
||
{mso-level-tab-stop:4.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l1
|
||
{mso-list-id:1066609929;
|
||
mso-list-type:hybrid;
|
||
mso-list-template-ids:-107958286 -392505382 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
||
@list l1:level1
|
||
{mso-level-tab-stop:none;
|
||
mso-level-number-position:left;
|
||
margin-left:30.0pt;
|
||
text-indent:-.25in;}
|
||
@list l1:level2
|
||
{mso-level-tab-stop:1.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l1:level3
|
||
{mso-level-tab-stop:1.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l1:level4
|
||
{mso-level-tab-stop:2.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l1:level5
|
||
{mso-level-tab-stop:2.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l1:level6
|
||
{mso-level-tab-stop:3.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l1:level7
|
||
{mso-level-tab-stop:3.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l1:level8
|
||
{mso-level-tab-stop:4.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l1:level9
|
||
{mso-level-tab-stop:4.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l2
|
||
{mso-list-id:1093014492;
|
||
mso-list-type:hybrid;
|
||
mso-list-template-ids:550130486 269025295 269025305 269025307 269025295 269025305 269025307 269025295 269025305 269025307;}
|
||
@list l2:level1
|
||
{mso-level-tab-stop:none;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l2:level2
|
||
{mso-level-tab-stop:1.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l2:level3
|
||
{mso-level-tab-stop:1.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l2:level4
|
||
{mso-level-tab-stop:2.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l2:level5
|
||
{mso-level-tab-stop:2.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l2:level6
|
||
{mso-level-tab-stop:3.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l2:level7
|
||
{mso-level-tab-stop:3.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l2:level8
|
||
{mso-level-tab-stop:4.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l2:level9
|
||
{mso-level-tab-stop:4.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l3
|
||
{mso-list-id:1175345856;
|
||
mso-list-type:hybrid;
|
||
mso-list-template-ids:1522676176 -392505382 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
|
||
@list l3:level1
|
||
{mso-level-tab-stop:none;
|
||
mso-level-number-position:left;
|
||
margin-left:30.0pt;
|
||
text-indent:-.25in;}
|
||
@list l3:level2
|
||
{mso-level-tab-stop:1.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l3:level3
|
||
{mso-level-tab-stop:1.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l3:level4
|
||
{mso-level-tab-stop:2.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l3:level5
|
||
{mso-level-tab-stop:2.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l3:level6
|
||
{mso-level-tab-stop:3.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l3:level7
|
||
{mso-level-tab-stop:3.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l3:level8
|
||
{mso-level-tab-stop:4.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l3:level9
|
||
{mso-level-tab-stop:4.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l4
|
||
{mso-list-id:2122217799;
|
||
mso-list-type:hybrid;
|
||
mso-list-template-ids:-514672194 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
|
||
@list l4:level1
|
||
{mso-level-number-format:bullet;
|
||
mso-level-text:\F0B7;
|
||
mso-level-tab-stop:none;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;
|
||
font-family:Symbol;}
|
||
@list l4:level2
|
||
{mso-level-tab-stop:1.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l4:level3
|
||
{mso-level-tab-stop:1.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l4:level4
|
||
{mso-level-tab-stop:2.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l4:level5
|
||
{mso-level-tab-stop:2.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l4:level6
|
||
{mso-level-tab-stop:3.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l4:level7
|
||
{mso-level-tab-stop:3.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l4:level8
|
||
{mso-level-tab-stop:4.0in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
@list l4:level9
|
||
{mso-level-tab-stop:4.5in;
|
||
mso-level-number-position:left;
|
||
text-indent:-.25in;}
|
||
ol
|
||
{margin-bottom:0in;}
|
||
ul
|
||
{margin-bottom:0in;}
|
||
-->
|
||
</style>
|
||
<!--[if gte mso 10]>
|
||
<style>
|
||
/* Style Definitions */
|
||
table.MsoNormalTable
|
||
{mso-style-name:"Table Normal";
|
||
mso-tstyle-rowband-size:0;
|
||
mso-tstyle-colband-size:0;
|
||
mso-style-noshow:yes;
|
||
mso-style-priority:99;
|
||
mso-style-qformat:yes;
|
||
mso-style-parent:"";
|
||
mso-padding-alt:0in 5.4pt 0in 5.4pt;
|
||
mso-para-margin:0in;
|
||
mso-para-margin-bottom:.0001pt;
|
||
mso-pagination:widow-orphan;
|
||
font-size:10.0pt;
|
||
font-family:"Calibri","sans-serif";
|
||
mso-ascii-font-family:Calibri;
|
||
mso-ascii-theme-font:minor-latin;
|
||
mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;
|
||
mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;}
|
||
</style>
|
||
<![endif]--><!--[if gte mso 9]><xml>
|
||
<o:shapedefaults v:ext="edit" spidmax="19458"/>
|
||
</xml><![endif]--><!--[if gte mso 9]><xml>
|
||
<o:shapelayout v:ext="edit">
|
||
<o:idmap v:ext="edit" data="1"/>
|
||
</o:shapelayout></xml><![endif]-->
|
||
</head>
|
||
|
||
<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
|
||
|
||
<div class=Section1>
|
||
|
||
<div style='mso-element:para-border-div;border:none;border-bottom:solid #4F81BD 1.0pt;
|
||
mso-border-bottom-themecolor:accent1;padding:0in 0in 4.0pt 0in'>
|
||
|
||
<p class=MsoTitle align=center style='text-align:center'>Function Discovery
|
||
Provider Sample Readme</p>
|
||
|
||
</div>
|
||
|
||
<w:Sdt SdtDocPart="t" DocPartType="Table of Contents" DocPartUnique="t"
|
||
ID="148328954">
|
||
<p class=MsoTocHeading>Contents<span style='font-size:11.0pt;line-height:115%;
|
||
mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:
|
||
Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-font-family:Calibri;
|
||
mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
|
||
mso-bidi-theme-font:minor-bidi;color:windowtext;font-weight:normal'><w:sdtPr></w:sdtPr></span></p>
|
||
<p class=MsoToc1 style='tab-stops:right dotted 467.5pt'><!--[if supportFields]><span
|
||
style='mso-element:field-begin'></span><span
|
||
style='mso-spacerun:yes'><3E></span>TOC \o "1-3" \h \z \u <span
|
||
style='mso-element:field-separator'></span><![endif]--><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682101">Purpose<span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682101 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>1</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100300031000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc1 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682102">Prerequisites<span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682102 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>1</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100300032000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc1 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682103">Components<span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682103 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>2</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100300033000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc1 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682104">Building
|
||
the sample<span style='color:windowtext;display:none;mso-hide:screen;
|
||
text-decoration:none;text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682104 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>3</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100300034000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682105">To
|
||
build the sample using the command prompt<span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682105 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>3</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100300035000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682106">To
|
||
build the sample using Visual Studio 2008 (preferred method)<span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682106 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>3</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100300036000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc1 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682107">Installing
|
||
the sample<span style='color:windowtext;display:none;mso-hide:screen;
|
||
text-decoration:none;text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682107 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>4</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100300037000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682108">To
|
||
install the sample<span style='color:windowtext;display:none;mso-hide:screen;
|
||
text-decoration:none;text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682108 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>4</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100300038000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc1 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682109">Running
|
||
the sample<span style='color:windowtext;display:none;mso-hide:screen;
|
||
text-decoration:none;text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682109 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>4</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100300039000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682110">To
|
||
grant permission to the Local Service account<span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682110 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>4</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100310030000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc1 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682111">Troubleshooting<span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682111 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>5</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100310031000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc1 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682112">Limitations<span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682112 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>5</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100310032000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc1 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682113">Notes
|
||
for provider writers<span style='color:windowtext;display:none;mso-hide:screen;
|
||
text-decoration:none;text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682113 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>5</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100310033000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682114">Activation
|
||
contexts<span style='color:windowtext;display:none;mso-hide:screen;text-decoration:
|
||
none;text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682114 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>5</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100310034000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682115">Security
|
||
considerations<span style='color:windowtext;display:none;mso-hide:screen;
|
||
text-decoration:none;text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682115 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>6</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100310035000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682116">Preservation
|
||
of Add / Remove notification order<span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><span style='mso-element:field-begin'></span></span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'> PAGEREF _Toc230682116 \h </span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-separator'></span></span><![endif]--><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'>6</span><span style='color:windowtext;display:none;
|
||
mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100310036000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoToc2 style='tab-stops:right dotted 467.5pt'><span
|
||
class=MsoHyperlink><span style='mso-no-proof:yes'><a href="#_Toc230682117">Steps
|
||
for writing a provider<span style='color:windowtext;display:none;mso-hide:
|
||
screen;text-decoration:none;text-underline:none'><span style='mso-tab-count:
|
||
1 dotted'>. </span></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-begin'></span></span><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'> PAGEREF
|
||
_Toc230682117 \h </span><span style='color:windowtext;display:none;mso-hide:
|
||
screen;text-decoration:none;text-underline:none'><span style='mso-element:
|
||
field-separator'></span></span><![endif]--><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'>6</span><span
|
||
style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
|
||
text-underline:none'><!--[if gte mso 9]><xml>
|
||
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200330030003600380032003100310037000000</w:data>
|
||
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
|
||
display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
|
||
style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
|
||
style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
|
||
mso-no-proof:yes'><o:p></o:p></span></p>
|
||
<p class=MsoNormal><!--[if supportFields]><span style='mso-element:field-end'></span><![endif]--><o:p> </o:p></p>
|
||
</w:Sdt>
|
||
|
||
<h1><a name="_Toc230682101">Purpose</a></h1>
|
||
|
||
<p class=MsoNormal>This sample demonstrates how to write a fully functional
|
||
PnP-X Function Discovery provider.</p>
|
||
|
||
<h1><a name="_Toc230682102">Prerequisites</a></h1>
|
||
|
||
<p class=MsoNormal>You can build the sample on Windows XP, Vista or 7. You must
|
||
have the Windows Vista SDK installed on the build machine. Before building the
|
||
sample, you must integrate the SDK with Visual Studio.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>To integrate the Windows SDK with Visual
|
||
Studio 2008, click <b style='mso-bidi-font-weight:normal'>Start</b>, click <b
|
||
style='mso-bidi-font-weight:normal'>All Programs</b>, click <b
|
||
style='mso-bidi-font-weight:normal'>Microsoft Windows SDK v7.0</b>, click <b
|
||
style='mso-bidi-font-weight:normal'>Visual Studio Registration</b>, and then
|
||
click <b style='mso-bidi-font-weight:normal'>Integrate Windows SDK
|
||
Configuration Tool</b>. For more information about installing and integrating
|
||
the SDK, see the <a href="http://go.microsoft.com/fwlink/?LinkID=86832">SDK
|
||
Release Notes</a>.</p>
|
||
|
||
<p class=MsoNormal style='tab-stops:290.25pt'>You must run the sample on Windows
|
||
Vista or Windows 7.<span style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span></p>
|
||
|
||
<h1><a name="_Toc230682103">Components</a></h1>
|
||
|
||
<p class=MsoNormal>The sample consists of 3 components:<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>FDProviderHostSample.exe,
|
||
FDProviderSample.dll, and FDProviderSampleDevice.exe.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span><span class=SpellE>FDProviderSample</span>
|
||
implements a COM class that implements the <a
|
||
href="http://go.microsoft.com/fwlink/?LinkId=86833"><span class=SpellE>IFunctionDiscoveryProvider</span></a>
|
||
interface.<span style='mso-spacerun:yes'><EFBFBD> </span>This is the heart of the
|
||
sample and where most of the implementation work is focused.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>FDProviderHostSample.exe implements an EXE
|
||
host for the provider; this allows the provider to be hosted out of proc, which
|
||
is a requirement for PnP-X providers.<span style='mso-spacerun:yes'><EFBFBD>
|
||
</span>FDProviderSampleDevice.exe implements a simple soft device that is
|
||
enumerated by the sample provider.</p>
|
||
|
||
<p class=MsoNormal>The sample directory layout is shown below with brief
|
||
descriptions of the files.</p>
|
||
|
||
<p class=MsoListParagraphCxSpFirst style='margin-left:2.5in;mso-add-space:auto;
|
||
text-indent:-2.5in;tab-stops:2.5in'><span class=SpellE><span class=GramE>FDProviderHostSample</span></span><span
|
||
class=GramE><span style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Implementation
|
||
of FDProviderHostSample.exe.</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'>FDProviderHostSample.cpp<span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>All the code for the EXE
|
||
host.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>FDProviderHostSample.rc</span></span><span class=GramE><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Version resource.</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE>FDProviderHostSample.vcproj</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Visual Studio Project file.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>resource.h</span></span><span style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Header
|
||
for the resources.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=GramE>stdafx.cpp</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Precompiled
|
||
header <span class=SpellE>cpp</span>.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>stdafx.h</span></span><span style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Precompiled
|
||
header.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-2.5in;tab-stops:2.5in'><span class=SpellE>FDProviderSample</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Implementation
|
||
for FDProvider.dll</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=GramE>ClientNotificationWork.cpp<span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Implementation for <span
|
||
class=SpellE>TClientNotificationWork</span>.</span><span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>This class represents queued notifications
|
||
that must be sent to the provider client.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>ClientNotificationWork.h</span></span><span class=GramE><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Definition for <span
|
||
class=SpellE>TClientNotificationWork</span>.</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'>ComServer.cpp<span style='mso-tab-count:
|
||
1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Implementation of the <span
|
||
class=SpellE>ClassFactory</span> and DLL host support functions for the
|
||
Provider COM class.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'>ComServer.def<span style='mso-tab-count:
|
||
1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>DLL Export definitions
|
||
for FDProviderSample.dll</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE>ComServer.h</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Definitions
|
||
for DLL host support functions.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'>DiscoveryProtocol.cpp<span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Implementation of
|
||
the simple enumeration network protocol used by the sample.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>DiscoveryProtocol.h</span></span><span class=GramE><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Public
|
||
interface for the implementation.</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=GramE>FDProvider.cpp<span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Implementation
|
||
of the Function Discovery provider (<span class=SpellE>TFunctionDiscoveryProvider</span>).</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE>FDProvider.h</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Definition
|
||
of <span class=SpellE>TFunctionDiscoveryProvider</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>FDProviderSample.rc</span></span><span class=GramE><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Version
|
||
resource.</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE>FDProviderSample.vcproj</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Visual Studio Project
|
||
file.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=GramE>FunctionInstanceInfo.cpp<span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Implementation of <span
|
||
class=SpellE>TFunctionInstanceInfo</span>.</span><span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>This class acts as a container for the data
|
||
that will ultimately become the function instance.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>FunctionInstanceInfo.h</span></span><span class=GramE><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Declaration for <span
|
||
class=SpellE>TFunctionInstanceInfo</span>.</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE>LinkedList.h</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>A
|
||
circular double linked list implementation.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE>Locks.h</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>A
|
||
simple class wrapper for SRWLOCK.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>resource.h</span></span><span style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Version
|
||
resource.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=GramE>stdafx.cpp</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Precompiled
|
||
header <span class=SpellE>cpp</span>.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>stdafx.h</span></span><span style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Precompiled
|
||
header.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE>ThreadPool.h</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Implementation
|
||
for <span class=SpellE>TThreadPool</span><>, a utility class that present
|
||
Windows <span class=SpellE>ThreadPool</span> as a singleton, allowing for easy
|
||
sharing of a thread pool across objects.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-2.5in;tab-stops:2.5in'><span class=SpellE>FDProviderSampleDevice</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Implementation of
|
||
FDProviderSampleDevice.exe</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=GramE>FDProviderSampleDevice.cpp<span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Implementation of the soft
|
||
device.</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>FDProviderSampleDevice.rc</span></span><span class=GramE><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Version resource.</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE>FDProviderSampleDevice.vcproj</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Visual Studio project.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=GramE>stdafx.cpp</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Precompiled
|
||
header <span class=SpellE>cpp</span>.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>stdafx.h</span></span><span style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Precompiled
|
||
header.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-2.5in;tab-stops:2.5in'>Inc<span style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Shared
|
||
header files.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE>IEXEHostControl.h</span><span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Definition
|
||
of <span class=SpellE>IEXEHostControl</span>, a private interface used to
|
||
communicate between the <span class=SpellE>EXEHost</span> and the hosted
|
||
providers.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-171.0pt;tab-stops:2.5in'><span class=SpellE><span
|
||
class=GramE>Messages.h</span></span><span class=GramE><span style='mso-tab-count:
|
||
1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Definitions of
|
||
the messages for the network protocol.</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-2.5in;tab-stops:2.5in'><span class=GramE>FunctionDiscoveryProvider.sln<span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Visual Studio solution.</span></p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-2.5in;tab-stops:2.5in'>Install.bat<span style='mso-tab-count:
|
||
1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Batch <span
|
||
class=GramE>file</span> to configure the firewall and import the registry keys.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:2.5in;mso-add-space:
|
||
auto;text-indent:-2.5in;tab-stops:2.5in'>Install.reg<span style='mso-tab-count:
|
||
1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>Registry
|
||
file describing the registry modifications required for registering the COM
|
||
objects and PnP-X provider.</p>
|
||
|
||
<p class=MsoListParagraphCxSpLast style='margin-left:2.5in;mso-add-space:auto;
|
||
text-indent:-2.5in;tab-stops:2.5in'><span class=GramE>Readme.htm<span
|
||
style='mso-tab-count:1'><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </span>This
|
||
file.</span></p>
|
||
|
||
<h1><a name="_Toc230682104">Building the sample</a></h1>
|
||
|
||
<p class=MsoNormal>Before building the sample, you should copy the sample files
|
||
to a working folder not under the Program Files directory.</p>
|
||
|
||
<h2><a name="_Toc230682105">To build the sample using the command prompt</a></h2>
|
||
|
||
<p class=MsoListParagraphCxSpFirst style='margin-left:30.0pt;mso-add-space:
|
||
auto;text-indent:-.25in;mso-list:l3 level1 lfo2'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Click <b style='mso-bidi-font-weight:normal'>Start</b>,
|
||
click <b style='mso-bidi-font-weight:normal'>All Programs</b>, click <b
|
||
style='mso-bidi-font-weight:normal'>Microsoft Windows SDK</b>, and then click <b
|
||
style='mso-bidi-font-weight:normal'>CMD Shell</b>.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:30.0pt;mso-add-space:
|
||
auto;text-indent:-.25in;mso-list:l3 level1 lfo2'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Navigate to the <span class=SpellE>FunctionDiscoveryProvider</span>
|
||
directory.</p>
|
||
|
||
<p class=MsoListParagraphCxSpLast style='margin-left:30.0pt;mso-add-space:auto;
|
||
text-indent:-.25in;mso-list:l3 level1 lfo2'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Type <span class=SpellE><span style='font-family:
|
||
"Courier New"'>msbuild</span></span><span style='font-family:"Courier New"'>
|
||
FunctionDiscoveryProvider.sln</span></p>
|
||
|
||
<h2><a name="_Toc230682106">To build the sample using Visual Studio 2008
|
||
(preferred method)</a></h2>
|
||
|
||
<p class=MsoListParagraphCxSpFirst style='margin-left:30.0pt;mso-add-space:
|
||
auto;text-indent:-.25in;mso-list:l1 level1 lfo4'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Open Windows Explorer. </p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:30.0pt;mso-add-space:
|
||
auto;text-indent:-.25in;mso-list:l1 level1 lfo4'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Navigate to the <span class=SpellE>FunctionDiscoveryProvider</span>
|
||
directory.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='margin-left:30.0pt;mso-add-space:
|
||
auto;text-indent:-.25in;mso-list:l1 level1 lfo4'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Double-click FunctionDiscoveryProvider.sln to
|
||
open the file in Visual Studio.</p>
|
||
|
||
<p class=MsoListParagraphCxSpLast style='margin-left:30.0pt;mso-add-space:auto;
|
||
text-indent:-.25in;mso-list:l1 level1 lfo4'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>On the <b style='mso-bidi-font-weight:normal'>Build</b>
|
||
menu, click <b style='mso-bidi-font-weight:normal'>Build Solution</b>. By
|
||
Default, this will build 32 bit checked (Debug) binaries.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>By using the Configuration Manager in Visual
|
||
Studio, you can change to building free (Release) and x64 binaries, or you can
|
||
also use the Batch Build tool.<span style='mso-spacerun:yes'><EFBFBD> </span>Please
|
||
note that the binaries must match the host they will be running on, 32 bit
|
||
Windows will use the 32 bit binaries, and x64 Windows will use the 64 bit
|
||
binaries.<span style='mso-spacerun:yes'><EFBFBD> </span></p>
|
||
|
||
<p class=MsoNormal>For more information about building samples, see the <a
|
||
href="http://go.microsoft.com/fwlink/?LinkID=86832">SDK Release Notes</a>.</p>
|
||
|
||
<h1><a name="_Toc230682107">Installing the sample</a></h1>
|
||
|
||
<h2><a name="_Toc230682108">To install the sample</a></h2>
|
||
|
||
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in;mso-list:l2 level1 lfo6'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Build the sample using one of the methods described
|
||
above.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l2 level1 lfo6'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Open Install.reg (located in the <span
|
||
class=SpellE>FunctionDiscoveryProvider</span> directory).</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l2 level1 lfo6'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Edit the path to FDProviderSample.dll to match
|
||
the path to the file on your computer.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l2 level1 lfo6'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Edit the path to FDProviderHostSample.exe to
|
||
match the path to the file on your computer.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l2 level1 lfo6'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>5.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Save and close Install.reg.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l2 level1 lfo6'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>6.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Open Install.bat (located in the <span
|
||
class=SpellE>FunctionDiscoveryProvider</span> directory). </p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l2 level1 lfo6'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>7.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Edit the path to FDProviderHostSample.exe to
|
||
match the path to the file on your computer.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l2 level1 lfo6'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>8.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Save and close Install.bat.</p>
|
||
|
||
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in;mso-list:l2 level1 lfo6'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>9.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Run Install.bat. This batch file creates the
|
||
required registry entries and configures the firewall to allow network
|
||
communication.</p>
|
||
|
||
<h1><a name="_Toc230682109">Running the sample</a></h1>
|
||
|
||
<p class=MsoNormal>Before you can run the sample, you must install the sample
|
||
using the instructions given above.<span style='mso-spacerun:yes'><EFBFBD><EFBFBD> </span>You
|
||
must also ensure that the Local Service account has permission to execute files
|
||
in the folder in which the sample DLL files were built.</p>
|
||
|
||
<h2><a name="_Toc230682110">To grant permission to the Local Service account</a></h2>
|
||
|
||
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in;mso-list:l0 level1 lfo8'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Start Windows Explorer.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l0 level1 lfo8'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Browse to the folder in which the <span
|
||
class=GramE>sample DLLs were</span> built.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l0 level1 lfo8'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Right-click the folder, <span class=GramE>click</span>
|
||
<b style='mso-bidi-font-weight:normal'>Properties</b>, and then click the <b
|
||
style='mso-bidi-font-weight:normal'>Security</b> tab.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l0 level1 lfo8'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Click <b style='mso-bidi-font-weight:normal'>Edit</b>.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l0 level1 lfo8'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>5.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Click <b style='mso-bidi-font-weight:normal'>Add</b>.</p>
|
||
|
||
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in;mso-list:l0 level1 lfo8'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>6.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Type <20>LOCAL SERVICE<43> into the text box, and then
|
||
click <b style='mso-bidi-font-weight:normal'>Check Names</b>. </p>
|
||
|
||
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in;mso-list:l0 level1 lfo8'><![if !supportLists]><span
|
||
style='mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
|
||
style='mso-list:Ignore'>7.<span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Click <b style='mso-bidi-font-weight:normal'>OK </b>to
|
||
close the next three dialog boxes. </p>
|
||
|
||
<p class=MsoNormal>To run the sample, start FDProviderSampleDevice.exe on one
|
||
or more machines. To view usage instructions at the command prompt, type <span
|
||
style='font-family:"Courier New"'>FDProviderSampleDevice.exe /?</span> </p>
|
||
|
||
<p class=MsoNormal>The command line parameters for FDProviderSampleDevice.exe
|
||
control the properties of the devices. You must specify a <span class=SpellE>DeviceID</span>,
|
||
a <span class=SpellE>HardwareID</span>, a device category, and a friendly name
|
||
for the device. These properties are used by PnP and by the <b
|
||
style='mso-bidi-font-weight:normal'>Network Explorer</b>.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>For example, specifying a device category of
|
||
<EFBFBD>Printers<EFBFBD> will display the device as a printer in the <b style='mso-bidi-font-weight:
|
||
normal'>Network Explorer</b>.<span style='mso-spacerun:yes'><EFBFBD> </span>Also, the
|
||
specified <span class=SpellE>HardwareID</span> will be used to match a driver
|
||
during installation.</p>
|
||
|
||
<p class=MsoNormal>Once some sample soft devices are running, the <b
|
||
style='mso-bidi-font-weight:normal'>Network Explorer</b> will enumerate the
|
||
devices, display properties for devices, and install devices.</p>
|
||
|
||
<h1><a name="_Toc230682111">Troubleshooting</a></h1>
|
||
|
||
<p class=MsoNormal><br>
|
||
There could be many causes if your sample devices do not show up in the Network
|
||
Explorer.<span style='mso-spacerun:yes'><EFBFBD> </span>First check to see if you host
|
||
process (FDProviderHostSample.exe) is running while you are in the network
|
||
folder.<span style='mso-spacerun:yes'><EFBFBD> </span>You can check this by opening
|
||
Task Manager and clicking <20>Show processes from all users.<2E><span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>If it is not running, normally this means
|
||
that your registrations or file permissions are not correct.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>Carefully recheck the steps on installing and
|
||
granting permissions; chances are you might have missed something there.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>Another possibility is that you might be
|
||
trying to run the wrong binary.<span style='mso-spacerun:yes'><EFBFBD> </span>Make
|
||
sure you use the <20>Win32<33> binaries for 32 bit <span class=GramE>Windows,</span>
|
||
and <20>x64<36> binaries for x64 Windows.<span style='mso-spacerun:yes'><EFBFBD> </span>One
|
||
final suggestion is to check your firewall settings for the host processes and
|
||
sample devices.</p>
|
||
|
||
<h1><a name="_Toc230682112">Limitations</a></h1>
|
||
|
||
<p class=MsoNormal>The sample implements a very simple network protocol and the
|
||
implementation specifically does not address multi-homed machines or network
|
||
connectivity changes.<span style='mso-spacerun:yes'><EFBFBD> </span>When running the
|
||
sample on a multi-homed machine, you should disable one of the interfaces to ensure
|
||
that the multicast traffic uses the right interface.</p>
|
||
|
||
<h1><a name="_Toc230682113">Notes for provider writers</a></h1>
|
||
|
||
<h2><a name="_Toc230682114">Activation contexts</a></h2>
|
||
|
||
<p class=MsoNormal>Function Discovery providers must be free threaded.</p>
|
||
|
||
<p class=MsoNormal>By default, the PnP-X subsystem activates providers using
|
||
the CLSCTX_LOCAL_SERVER activation context; however, some clients may activate
|
||
the provider using the CLSCTX_INPROC_SERVER activation context.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>Therefore, providers must support activation
|
||
in both contexts.<span style='mso-spacerun:yes'><EFBFBD> </span>To accomplish this,
|
||
the sample implements the provider as a DLL to support in-proc activation and a
|
||
host process running as an EXE that that loads the DLL to support out-of-proc
|
||
activation.<span style='mso-spacerun:yes'><EFBFBD> </span>An EXE host is used in the
|
||
sample because it is simpler and consumes fewer resources than a Windows
|
||
service.<span style='mso-spacerun:yes'><EFBFBD> </span>The sample host process will
|
||
automatically be started by COM when a client activates a provider and will
|
||
exit once all clients have disconnected.</p>
|
||
|
||
<p class=MsoNormal>If you are writing a provider that must maintain state even
|
||
when no clients are connected to the provider, then you should use a Windows
|
||
service to host the provider.</p>
|
||
|
||
<h2><a name="_Toc230682115">Security considerations</a></h2>
|
||
|
||
<p class=MsoNormal>PnP-X Function Discovery providers typically communicate on
|
||
the network, often using multicast.<span style='mso-spacerun:yes'><EFBFBD> </span>For
|
||
this reason, providers are attack vectors which, if exploited, can result in
|
||
remote compromise of the system.<span style='mso-spacerun:yes'><EFBFBD> </span>To mitigate
|
||
security risks and as a defense-in-depth strategy, providers should run with
|
||
the least privilege required.<span style='mso-spacerun:yes'><EFBFBD> </span>The sample
|
||
provider host runs as the <span class=SpellE>LocalService</span> account. It is
|
||
recommended that all provider hosts run as <span class=SpellE>LocalService</span>.
|
||
</p>
|
||
|
||
<p class=MsoNormal>Because providers do not run as the same user account as the
|
||
client process, they need to cache the caller<65>s impersonation token and use it
|
||
to call <span class=SpellE>CoSetSecurityBlanket</span> on client
|
||
interfaces.<span style='mso-spacerun:yes'><EFBFBD> </span>There are two points to note
|
||
about this:</p>
|
||
|
||
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in;mso-list:l4 level1 lfo10'><![if !supportLists]><span
|
||
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
|
||
Symbol'><span style='mso-list:Ignore'><EFBFBD><span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>The provider must call <span class=SpellE>CoSetSecurityBlanket</span>,
|
||
even if it will not use the interface passed to it.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>Failure to do so will result in the interface
|
||
not being released until COM rundown occurs.</p>
|
||
|
||
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in;mso-list:l4 level1 lfo10'><![if !supportLists]><span
|
||
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
|
||
Symbol'><span style='mso-list:Ignore'><EFBFBD><span style='font:7.0pt "Times New Roman"'>
|
||
</span></span></span><![endif]>Because the provider caches the impersonation
|
||
token as well as some interfaces on which <span class=SpellE>CoSetSecurityBlanket</span>
|
||
has been called using the token, the provider host must register for logoff
|
||
notifications and free the cached token and interfaces for all providers that
|
||
were in use by the client for which a logoff have been received.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>A logon session is only completely ended when
|
||
all tokens for the session have been closed, so failure to close the cached
|
||
token and interfaces effectively prevents the session from ending until COM
|
||
rundown occurs.</p>
|
||
|
||
<p class=MsoNormal>The sample provider correctly deals with both points.</p>
|
||
|
||
<h2><a name="_Toc230682116">Preservation of Add / Remove notification order</a></h2>
|
||
|
||
<p class=MsoNormal>Network enumeration protocols generally have a mechanism to
|
||
order events on the network and detect and discard older information.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>Function Discovery providers must take care
|
||
that <a href="http://go.microsoft.com/fwlink/?LinkId=86834"><span class=SpellE>OnUpdate</span></a>
|
||
events are communicated to the client in the same order that events occurred on
|
||
the network.</p>
|
||
|
||
<p class=MsoNormal>To accomplish this, the sample provider keeps a per-provider
|
||
queue of notification data and will only deliver one notification to a client
|
||
at a time.<span style='mso-spacerun:yes'><EFBFBD> </span>All the queues are serviced
|
||
by a thread pool, so multiple clients may concurrently receive
|
||
notifications.<span style='mso-spacerun:yes'><EFBFBD> </span>This is an efficient and
|
||
scalable approach.</p>
|
||
|
||
<h2><a name="_Toc230682117">Steps for writing a provider</a></h2>
|
||
|
||
<p class=MsoNormal>The Function Discovery provider sample was developed with
|
||
the goal of serving as the foundation for implementing providers.<span
|
||
style='mso-spacerun:yes'><EFBFBD> </span>It is structured in a way that makes it easy
|
||
to replace the sample network protocol with a real protocol but preserve the
|
||
bulk of the code.</p>
|
||
|
||
<p class=MsoNormal>To this end, the entire network protocol implementation is
|
||
contained in DiscoveryProtocol.cpp.<span style='mso-spacerun:yes'><EFBFBD> </span><span
|
||
class=SpellE>TFunctionInstanceInfo</span> is a class that encapsulates all the
|
||
work of representing the data that represents a device on the network and turns
|
||
that information into a <a href="http://go.microsoft.com/fwlink/?LinkId=86835">function
|
||
instance</a>.<span style='mso-spacerun:yes'><EFBFBD> </span>The bulk of the work in
|
||
creating a new provider should be focused on the protocol implementation and in
|
||
modifying <span class=SpellE>TFunctionInstanceInfo</span>.</p>
|
||
|
||
<p class=MsoNormal>Places that require attention during implementation are
|
||
marked with TODO comments.</p>
|
||
|
||
</div>
|
||
|
||
</body>
|
||
|
||
</html>
|