diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4d18eb6..5dae0b6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,6 +63,11 @@ include_directories(${CMAKE_SOURCE_DIR}/dependencies/recreated/include)
link_directories(${CMAKE_SOURCE_DIR}/dependencies/recreated/lib)
link_libraries(binkw32 Mss32)
+# Handle DirectDraw and DirectPlay
+include_directories(${CMAKE_SOURCE_DIR}/dependencies/DXSDK_Aug2007/include)
+link_directories(${CMAKE_SOURCE_DIR}/dependencies/DXSDK_Aug2007/lib)
+link_libraries(ddraw dplayx)
+
# Handle pklib
file_dependent_read_list("${CMAKE_SOURCE_DIR}/cmake/pklib-sources.txt" PKLIB_SOURCES)
add_library(pklib ${PKLIB_SOURCES})
diff --git a/dependencies/DXSDK_Aug2007/DirectX End User EULA.txt b/dependencies/DXSDK_Aug2007/DirectX End User EULA.txt
new file mode 100644
index 0000000..0a52954
--- /dev/null
+++ b/dependencies/DXSDK_Aug2007/DirectX End User EULA.txt
@@ -0,0 +1,34 @@
+MICROSOFT SOFTWARE LICENSE TERMS
+MICROSOFT DIRECTX END USER RUNTIME
+These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft
+* updates,
+* supplements,
+* Internet-based services, and
+* support services
+for this software, unless other terms accompany those items. If so, those terms apply.
+BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE.
+If you comply with these license terms, you have the rights below.
+1. INSTALLATION AND USE RIGHTS. You may install and use any number of copies of the software on your devices.
+2. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not
+* work around any technical limitations in the software;
+* reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;
+* make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation;
+* publish the software for others to copy;
+* rent, lease or lend the software;
+* transfer the software or this agreement to any third party; or
+* use the software for commercial software hosting services.
+3. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software.
+4. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes.
+5. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting.
+6. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it.
+7. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.
+8. APPLICABLE LAW.
+a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.
+b. Outside the United States. If you acquired the software in any other country, the laws of that country apply.
+9. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so.
+10. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+11. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.
+This limitation applies to
+* anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and
+* claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.
+It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages.
diff --git a/dependencies/DXSDK_Aug2007/DirectX SDK EULA.rtf b/dependencies/DXSDK_Aug2007/DirectX SDK EULA.rtf
new file mode 100644
index 0000000..9bfcbec
--- /dev/null
+++ b/dependencies/DXSDK_Aug2007/DirectX SDK EULA.rtf
@@ -0,0 +1,753 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff37\deff37\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New{\*\falt Arial};}
+{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol{\*\falt Times};}{\f10\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings{\*\falt Symbol};}
+{\f11\froman\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt ?l?r ??\'81\'66c};}{\f37\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma{\*\falt ?? ??};}
+{\f41\fswiss\fcharset0\fprq2{\*\panose 020b0603020202020204}Trebuchet MS{\*\falt Univers};}{\f42\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho{\*\falt @MS Gothic};}{\f242\froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}
+{\f243\froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}{\f245\froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\f246\froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}
+{\f247\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\f248\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}{\f249\froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}
+{\f250\froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}{\f262\fmodern\fcharset238\fprq1 Courier New CE{\*\falt Arial};}{\f263\fmodern\fcharset204\fprq1 Courier New Cyr{\*\falt Arial};}
+{\f265\fmodern\fcharset161\fprq1 Courier New Greek{\*\falt Arial};}{\f266\fmodern\fcharset162\fprq1 Courier New Tur{\*\falt Arial};}{\f267\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew){\*\falt Arial};}
+{\f268\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic){\*\falt Arial};}{\f269\fmodern\fcharset186\fprq1 Courier New Baltic{\*\falt Arial};}{\f270\fmodern\fcharset163\fprq1 Courier New (Vietnamese){\*\falt Arial};}
+{\f612\fswiss\fcharset238\fprq2 Tahoma CE{\*\falt ?? ??};}{\f613\fswiss\fcharset204\fprq2 Tahoma Cyr{\*\falt ?? ??};}{\f615\fswiss\fcharset161\fprq2 Tahoma Greek{\*\falt ?? ??};}{\f616\fswiss\fcharset162\fprq2 Tahoma Tur{\*\falt ?? ??};}
+{\f617\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew){\*\falt ?? ??};}{\f618\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic){\*\falt ?? ??};}{\f619\fswiss\fcharset186\fprq2 Tahoma Baltic{\*\falt ?? ??};}
+{\f620\fswiss\fcharset163\fprq2 Tahoma (Vietnamese){\*\falt ?? ??};}{\f621\fswiss\fcharset222\fprq2 Tahoma (Thai){\*\falt ?? ??};}{\f652\fswiss\fcharset238\fprq2 Trebuchet MS CE{\*\falt Univers};}
+{\f653\fswiss\fcharset204\fprq2 Trebuchet MS Cyr{\*\falt Univers};}{\f655\fswiss\fcharset161\fprq2 Trebuchet MS Greek{\*\falt Univers};}{\f656\fswiss\fcharset162\fprq2 Trebuchet MS Tur{\*\falt Univers};}
+{\f659\fswiss\fcharset186\fprq2 Trebuchet MS Baltic{\*\falt Univers};}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;
+\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{
+\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \sautoupd Normal;}
+{\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext1 heading 1;}{\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext2 heading 2;}{\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext3 heading 3;}{\s4\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext4 heading 4;}{\s5\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar\tx1792\jclisttab\tx2155\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl4\outlinelevel4\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext5 heading 5;}{\s6\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar
+\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl5\outlinelevel5\adjustright\rin0\lin2149\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext6 heading 6;}{\s7\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl6\outlinelevel6\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext7 heading 7;}{\s8\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar
+\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl7\outlinelevel7\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext8 heading 8;}{\s9\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl8\outlinelevel8\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext9 heading 9;}{\*\cs10 \additive \slocked \ssemihidden Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af11\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{
+\s15\ql \li357\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext15 Body 1;}{\s16\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 Body 2;}{\s17\ql \li1077\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1077\itap0 \rtlch\fcs1
+\af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 Body 3;}{
+\s18\ql \li1435\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext18 Body 4;}{\s19\ql \li1803\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1803\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext19 Body 5;}{\s20\ql \li2160\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2160\itap0 \rtlch\fcs1
+\af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 Body 6;}{
+\s21\ql \li2506\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext21 Body 7;}{\s22\ql \li2863\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext22 Body 8;}{\s23\ql \li3221\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3221\itap0 \rtlch\fcs1
+\af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext23 Body 9;}{\s24\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 Bullet 1;}{
+\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext25 Bullet 2;}{\s26\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin1077\itap0
+\rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext26 Bullet 3;}{\s27\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext27 Bullet 4;}{
+\s28\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar\jclisttab\tx1795\wrapdefault\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext28 Bullet 5;}{\s29\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin2149\itap0
+\rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext29 Bullet 6;}{\s30\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar
+\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext30 Bullet 7;}{
+\s31\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext31 Bullet 8;}{\s32\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls9\adjustright\rin0\lin3221\itap0
+\rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon23 \snext32 Bullet 9;}{
+\s33\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext0 Heading EULA;}{\s34\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0
+\b\fs28\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading Software Title;}{\s35\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext35 Preamble;}{\s36\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext1 Preamble Border;}{
+\s37\qc \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext37 Heading Warranty;}{\s38\ql \fi-360\li360\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls11\outlinelevel0\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading 1 Warranty;}{\s39\ql \fi-360\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls11\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext0 Heading 2 Warranty;}{\s40\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon3 \snext40 Heading 3 Bold;}{\s41\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon27 \snext41
+Bullet 4 Underline;}{\s42\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\ul\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon26 \snext42 Bullet 3 Underline;}{\*\cs43 \additive \rtlch\fcs1 \ab\af37 \ltrch\fcs0
+\b\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\langnp1033\langfenp1033 \sbasedon10 \slocked Heading 2 Char;}{\s44\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af37\afs19\alang1025
+\ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon16 \snext44 Body 2 Underline;}{\s45\ql \li1077\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1077\itap0
+\rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon17 \snext45 Body 3 Underline;}{\s46\ql \li0\ri0\sb120\sa120\sl480\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext46 Body Text 2;}{
+\s47\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \ai\af37\afs19\alang1025 \ltrch\fcs0
+\i\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon27 \snext47 Bullet 4 Italics;}{\*\cs48 \additive \rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 \slocked
+Body 2 Char;}{\*\cs49 \additive \rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 \slocked Body 3 Char;}{\*\cs50 \additive \rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1033\langnp1033\langfenp1033
+\sbasedon10 \slocked Body 4 Char;}{\*\cs51 \additive \rtlch\fcs1 \af37 \ltrch\fcs0 \f37\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 \slocked Body 1 Char;}{\s52\ql \li0\ri0\sb120\sa120\widctlpar\brdrt\brdrs\brdrw10\brsp20
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon35 \snext52 Preamble Border Above;}{
+\s53\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext53 \ssemihidden footnote text;}{\*\cs54 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden footnote reference;}{\s55\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext55 \ssemihidden endnote text;}{\*\cs56 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super
+\sbasedon10 \ssemihidden endnote reference;}{\s57\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext57 \ssemihidden annotation text;}{\*\cs58 \additive \rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \fs16 \sbasedon10 \ssemihidden annotation reference;}{
+\s59\ql \li0\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext59 Char;}{\s60\ql \li0\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext60 Char Char Char Char;}{\*\cs61 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink;}{
+\s62\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs16\alang1025 \ltrch\fcs0 \fs16\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext62 \ssemihidden Balloon Text;}{\*\cs63 \additive \rtlch\fcs1 \ab\af41 \ltrch\fcs0 \b\f41\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Heading 2 Char1;}{\*\cs64 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 page number;}{
+\s65\ql \li0\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext65 Char Char Char Char1;}{\s66\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \styrsid8999754 Body 0 Bold;}{\s67\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025
+\ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \styrsid8999754 Body 0;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable{\list\listtemplateid176468498\listhybrid{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid692200086\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s32\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
+\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760
+\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }
+{\listname ;}\listid196815738}{\list\listtemplateid680715664{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0
+\b\i0\f41\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0
+\b\i0\f41\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af37\afs20 \ltrch\fcs0
+\b\i0\f37\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0
+\b0\i0\strike0\f41\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1
+\ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers
+\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers
+\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers
+;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}
+\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid199167701}{\list\listtemplateid-1793664660{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s38\fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s39\fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\'02\'02);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers
+\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0
+\ltrch\fcs0 \fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0
+\fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2880
+\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }
+{\listname ;}\listid394402059}{\list\listtemplateid1928476992{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0
+\b\i0\f41\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0
+\b\i0\f41\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af37\afs20 \ltrch\fcs0
+\b\i0\f37\fs20\fbias0 \s40\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20
+\ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1
+\ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers
+\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers
+\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers
+;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}
+\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid398796681}{\list\listtemplateid789093748\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-317712510\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s25\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
+\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320
+\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid477573462}{\list\listtemplateid1948578256
+{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0 \b\i0\f41\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }
+{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0\afs20 \ltrch\fcs0 \b\i0\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel
+\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel
+\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0 \fi-358\li1435
+\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0
+\fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0
+\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0
+\fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0
+\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0
+\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid630479929}{\list\listtemplateid67698717{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00);}{\levelnumbers\'01;}
+\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720
+\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel
+\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc4\levelnfcn4\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}
+\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fi-360\li3240\jclisttab\tx3240\lin3240 }{\listname ;}\listid700712945}{\list\listtemplateid680715664{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}
+\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0 \b\i0\f41\fs20\fbias0 \s1\fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}
+\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0 \b\i0\f41\fs20\fbias0 \s2\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}
+\rtlch\fcs1 \ab\ai0\af37\afs20 \ltrch\fcs0 \b\i0\f37\fs20\fbias0 \s3\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}
+\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0 \s4\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0 \s5\fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \s6\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \s7\fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \s8\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \s9\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid752163927}{\list\listtemplateid2088029282
+{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0 \b\i0\f41\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }
+{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0 \b\i0\f41\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }
+{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af37\afs20 \ltrch\fcs0 \b\i0\f37\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }
+{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0 \fi-358\li1435
+\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0
+\fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0
+\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0
+\fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0
+\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0
+\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid800729109}{\list\listtemplateid-296591990\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-48305026
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s31\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
+\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160
+\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid810947713}{\list\listtemplateid1567531878{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0 \b\i0\f41\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0 \b\i0\f41\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid826823576}
+{\list\listtemplateid2088029282{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0 \b\i0\f41\fs20\fbias0 \fi-357\li357
+\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af41\afs20 \ltrch\fcs0 \b\i0\f41\fs20\fbias0 \fi-363\li720
+\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af37\afs20 \ltrch\fcs0 \b\i0\f37\fs20\fbias0 \fi-357\li1077
+\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\strike0\f41\fs20\ulnone\fbias0
+\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af41\afs20 \ltrch\fcs0
+\b0\i0\strike0\f41\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1
+\ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1
+\ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1
+\ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1
+\ab0\ai0\af41\afs20 \ltrch\fcs0 \b0\i0\f41\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid974869818}{\list\listtemplateid-1813845996\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\leveltemplateid2033377338\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s30\fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
+\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600
+\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1219436735}{\list\listtemplateid-41362566\listhybrid{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-1175557160\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s27\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
+\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760
+\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }
+{\listname ;}\listid1559511898}{\list\listtemplateid-743794326\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1229593488\'01\u-3913 ?;}{\levelnumbers;}
+\f3\fbias0 \s26\fi-357\li1077\jclisttab\tx1080\lin1077 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440
+\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1567649130}{\list\listtemplateid1363474438\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1077
+\levelindent0{\leveltext\leveltemplateid1637229796\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s28\fi-357\li1792\jclisttab\tx1795\lin1792 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1077\levelindent0
+{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1077\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1077\levelindent0{\leveltext\leveltemplateid67698689
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1077\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
+\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1077\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320
+\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1077\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1077\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace1077\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1848404271}
+{\list\listtemplateid-1802592190\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid961321180\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s29\fi-357\li2149
+\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1877695764}{\list\listtemplateid1626211110\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li3600
+\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li7200\jclisttab\tx7200\lin7200 }{\listname ;}\listid1964966175}{\list\listtemplateid1186249844\listhybrid{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1182702444\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s24\fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
+\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040
+\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid2054619191}}
+{\*\listoverridetable{\listoverride\listid2054619191\listoverridecount0\ls1}{\listoverride\listid477573462\listoverridecount0\ls2}{\listoverride\listid1567649130\listoverridecount0\ls3}{\listoverride\listid1559511898\listoverridecount0\ls4}
+{\listoverride\listid1848404271\listoverridecount0\ls5}{\listoverride\listid1877695764\listoverridecount0\ls6}{\listoverride\listid1219436735\listoverridecount0\ls7}{\listoverride\listid810947713\listoverridecount0\ls8}{\listoverride\listid196815738
+\listoverridecount0\ls9}{\listoverride\listid398796681\listoverridecount0\ls10}{\listoverride\listid394402059\listoverridecount0\ls11}{\listoverride\listid700712945\listoverridecount0\ls12}{\listoverride\listid826823576\listoverridecount0\ls13}
+{\listoverride\listid630479929\listoverridecount0\ls14}{\listoverride\listid800729109\listoverridecount0\ls15}{\listoverride\listid974869818\listoverridecount0\ls16}{\listoverride\listid752163927\listoverridecount0\ls17}{\listoverride\listid1964966175
+\listoverridecount0\ls18}{\listoverride\listid199167701\listoverridecount0\ls19}{\listoverride\listid752163927\listoverridecount9{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat
+\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel
+\listoverridestartat\levelstartat1}\ls20}}{\*\rsidtbl \rsid17701\rsid345491\rsid480810\rsid535495\rsid555183\rsid787759\rsid1012355\rsid1070219\rsid1122066\rsid1528414\rsid1845488\rsid2784514\rsid2963177\rsid3042060\rsid3162620\rsid3165127\rsid3370445
+\rsid3416253\rsid3611186\rsid3739474\rsid4022155\rsid4739523\rsid4865423\rsid4995346\rsid5075535\rsid5185544\rsid5312418\rsid5459775\rsid6184270\rsid6498245\rsid6758513\rsid7226971\rsid7290457\rsid7345747\rsid7433926\rsid7438204\rsid7619174\rsid7692510
+\rsid7878867\rsid8324055\rsid8325040\rsid8409344\rsid8419363\rsid8458805\rsid8738620\rsid8812012\rsid8858237\rsid8999754\rsid9321702\rsid9651656\rsid9857610\rsid9860938\rsid9908851\rsid9964378\rsid10813938\rsid11142543\rsid11347136\rsid11484360
+\rsid11754382\rsid11874088\rsid12000701\rsid12585274\rsid12596065\rsid12664082\rsid13334496\rsid13908819\rsid14114191\rsid14168694\rsid14235961\rsid14293847\rsid14425952\rsid14491415\rsid14705568\rsid14771509\rsid14894057\rsid14897950\rsid14943232
+\rsid15493712\rsid15601712\rsid15872081\rsid15925451\rsid16088799\rsid16141742\rsid16395859\rsid16450365\rsid16594485\rsid16596261\rsid16661796\rsid16712132}{\*\generator Microsoft Word 11.0.8106;}{\info
+{\title MICROSOFT [PRE-RELEASE ][EVALUATION ]SOFTWARE LICENSE TERMS}{\creatim\yr2006\mo12\dy4\hr17\min1}{\revtim\yr2006\mo12\dy4\hr18\min12}{\printim\yr2005\mo7\dy21\hr8\min25}{\version3}{\edmins2}{\nofpages7}{\nofwords2660}{\nofchars15165}
+{\nofcharsws17790}{\vern24611}{\*\password 00000000}}{\*\userprops {\propname db_build_version}\proptype30{\staticval 2.6}{\propname db_charger_document_reference}\proptype3{\staticval 12122}{\propname db_charger_client_name}\proptype30{\staticval tbc}
+{\propname db_charger_matter_number}\proptype30{\staticval tbc}{\propname autosave}\proptype30{\staticval false}{\propname owner}\proptype30{\staticval REDMOND\'5cshelleym}{\propname db_master_reference}\proptype30{\staticval USETERMS_OTHERSUPER_ENGLISH}
+{\propname db_master_version}\proptype30{\staticval 20060329}{\propname db_master_clock}\proptype3{\staticval 512}{\propname db_master_name}\proptype30{\staticval List of Beta, Evaluation or Standalone Software License Terms Languages}{\propname db_master
+_description}\proptype30{\staticval }{\propname db_output_filter_reference}\proptype30{\staticval }{\propname db_base_url}\proptype30{\staticval http://usetermassembly/dealbuilder_live/DealBuilderNET/dealbuilder.aspx}{\propname ProductVersion}\proptype30
+{\staticval 0}{\propname MScom}\proptype11{\staticval 0}{\propname Language}\proptype30{\staticval English}{\propname CanadaAvail}\proptype11{\staticval 1}{\propname CanadaFrench}\proptype11{\staticval 0}{\propname FileFormat}\proptype11{\staticval 0}
+{\propname MandatoryActivation}\proptype11{\staticval 0}{\propname SoftwareType}\proptype30{\staticval Free, Standalone Software}{\propname ProductName}\proptype30{\staticval DirectX Software Development Kit (SDK)}{\propname NumberOfCopies}\proptype30
+{\staticval Any number of copies}{\propname StandaloneUseRight}\proptype30{\staticval On the user's device(s)}{\propname MediaElementsTemplates}\proptype11{\staticval 1}{\propname DistributableCode}\proptype11{\staticval 1}{\propname DistributableCodeTyp
+e}\proptype30{\staticval Redist.txt\'3bSample Code}{\propname Transfer}\proptype30{\staticval Transfer to a third party}{\propname OtherMicrosoftPrograms}\proptype11{\staticval 1}{\propname OtherMicrosoftProgramsTerms}\proptype30{\staticval The separate l
+icense terms associated with the other Microsoft programs}{\propname PrereleaseCode}\proptype11{\staticval 1}{\propname ThirdPartyPrograms}\proptype11{\staticval 0}{\propname Benchmarking}\proptype11{\staticval 1}{\propname MPEG}\proptype11{\staticval 0}
+{\propname InternetBasedServices}\proptype11{\staticval 0}{\propname InternetBasedServicesFeaturesDesc}\proptype30{\staticval }{\propname db_commit}\proptype30{\staticval ProductVersion}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/
+wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
+\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin
+\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale143\viewzk2\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\rempersonalinfo\rsidroot10813938\viewbksp1 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0
+{\*\template C:\\Documents and Settings\\sabrinap\\Application Data\\Microsoft\\Templates\\EULA.dot}
+{\*\docvar {db_xml}{\'0d\'0dhttp://usetermassembly/dealbuilder_live/DealBuilderNET/dealbuilder.aspxmicrosoftmicrosoftmicrosoft12121tbctbcUSETERMS_OTHERSUPER_ENGLISH2.6List of Beta, Evaluation or Stand
+alone Software License Terms Languages 20060329512trueuniquetruetruetruetruetruetruetrueeagerday_month_year,.day_month_year,._blankrtffalsedraftingindefinitetrueautosav
+e|text|falseowner|text|REDMOND\'5cshelleymtruefalse<
+Control NAME="db_output_document_answers" TYPE="boolean">truepromptvaluepagegroupsureunsureunknowndeferredfalseal
+iasfalseascendingfalsetruefalseRepeatCheckPromptAnswerDeferralGuidanceInsert your comments belowVariable/dealbuilder_live/help/dealbuilder/help.htmlonsubmittrue<
+Control NAME="db_input_show_group_title" TYPE="boolean">truefalsetrue
+falsefalse
+true2dropdownsureUnknownfirst<
+Value>Otherlast20204Specify others:Specify other:11, and and/or or YesNo(%1 of %2)&\'3bnbsp\'3b
+visibledigitsPrev
+Control>Next&\'3bnbsp\'3b|&\'3bnbsp\'3b<
+Value>*afteraftertruefa
+lseclient_side<\'3bU>\'3bWARNING:<\'3b/U>\'3b That page is no longer relevant because of answe
+rs given on this page or a previous page!enabledrelevant_pages00English100Free, Standalone SoftwareDirectX Software Development Kit (SDK)Any number of copiesOn the user&apos\'3bs device(s)11Redist.txtSample CodeTransfer to a third party1The separate license terms associated with the other Microsoft programs10100}}{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14235961 \chftnsep
+\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14235961 \chftnsepc
+\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14235961 \chftnsep
+\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14235961 \chftnsepc
+\par }}\ltrpar \sectd \ltrsect\psz1\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid4739523\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3
+\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
+{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar
+\s33\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0
+\b\fs28\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 MICROSOFT SOFTWARE LICENSE TERMS
+\par }\pard\plain \ltrpar\s34\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0
+\b\fs28\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 MICROSOFT }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid14114191
+\hich\af37\dbch\af11\loch\f37 DIRECTX SOFTWARE DEVELOPMENT KIT (SDK)}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par }\pard\plain \ltrpar\s35\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The ter
+\hich\af37\dbch\af11\loch\f37 m\hich\af37\dbch\af11\loch\f37 s also apply to any Microsoft
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 updates,
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 supplements,
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 Internet-based services, and
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 support services
+\par }\pard\plain \ltrpar\s35\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+for this software, unless other terms accompany those items. If so, those terms apply.
+\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF\hich\af37\dbch\af11\loch\f37 YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE.
+\par }\pard\plain \ltrpar\s52\ql \li0\ri0\sb120\sa120\widctlpar\brdrt\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 If you comply with these license terms, you have the rights below.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 1.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 INSTALLATION AND USE RIGHTS.
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Installation and Use.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\cs48\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 You may install and use any number of copies of }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \cs48\b0\insrsid555183\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+the software on your devices.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \cs48\insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 b.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+Included Microsoft Programs.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \cs48\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 The software contains other Microsoft programs. The license terms with those programs apply to your use of them.}{
+\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 c.\tab}\hich\af37\dbch\af11\loch\f37 Pre-release Code.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\cs48\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 The software contains pre-release code. The license terms }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \cs48\b0\insrsid11484360 \hich\af37\dbch\af11\loch\f37 for}{\rtlch\fcs1 \ab0\af37
+\ltrch\fcs0 \cs48\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 pre-release code }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \cs48\b0\insrsid11484360 \hich\af37\dbch\af11\loch\f37 below }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\cs48\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 app\hich\af37\dbch\af11\loch\f37 ly to your use of it.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 2.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Media Elements and Templates.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\cs48\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 You may copy and use images, clip art, animations, sounds, music, shapes, video clips and templates provided with the software and identified fo\hich\af37\dbch\af11\loch\f37
+r such use in documents and projects that you create. You may distribute those documents and projects non-commercially. If you wish to use these media elements or templates for any other purpose, go to }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\cs61\b0\ul\cf2\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 www.microsoft.com/permission}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \cs48\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 to learn whether that u
+\hich\af37\dbch\af11\loch\f37 se is allowed.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 b.\tab}\hich\af37\dbch\af11\loch\f37 Distributable Code.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\cs48\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 The software contains code that you are permitted to distribute in programs you develop if you comply with the terms below.}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s40 \rtlch\fcs1 \ab\af37\afs20 \ltrch\fcs0 \b\f37\fs20\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 i.\tab}}\pard\plain \ltrpar\s40\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Right to Use and Distribute.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\cs49\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37 The code and text files listed below are \'93\loch\f37 Distributable Code\hich\af37\dbch\af11\loch\f37 \hich\f37 .\'94}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9908851 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s41\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
+\af37 \ltrch\fcs0 \insrsid9908851 \hich\af37\dbch\af11\loch\f37 DIRECTX }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 REDIST.TXT Files}{\rtlch\fcs1 \af37 \ltrch\fcs0 \ulnone\insrsid9964378\charrsid14235961
+\hich\af37\dbch\af11\loch\f37 . You may copy and distribute the object code form of code listed in }{\rtlch\fcs1 \af37 \ltrch\fcs0 \ulnone\insrsid9908851 \hich\af37\dbch\af11\loch\f37 DIRECTX }{\rtlch\fcs1 \af37 \ltrch\fcs0
+\ulnone\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 REDIST.TXT files.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s41\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid11484360 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Sample Code}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\ulnone\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 . You may modify, copy, and distribute the source and object code}{\rtlch\fcs1 \af37 \ltrch\fcs0 \ulnone\insrsid11484360 \hich\af37\dbch\af11\loch\f37 \hich\f37
+ form of code marked as \'93\loch\f37 sample}{\rtlch\fcs1 \af37 \ltrch\fcs0 \ulnone\insrsid9964378\charrsid14235961 \loch\af37\dbch\af11\hich\f37 \'94}{\rtlch\fcs1 \af37 \ltrch\fcs0 \ulnone\insrsid11484360 \hich\af37\dbch\af11\loch\f37 , as well as those
+\hich\af37\dbch\af11\loch\f37 marked as follows:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid16088799
+\par }\pard \ltrpar\s41\ql \li1435\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1435\itap0\pararsid11484360 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360 \\}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360
+\hich\af37\dbch\af11\loch\f37 Utilities\\Source\\Maya
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360 \\}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360 \hich\af37\dbch\af11\loch\f37 Utilities\\Source\\Max.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378
+\par {\listtext\pard\plain\ltrpar \s41 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s41\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid14114191 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Third Party Distribution}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\ulnone\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 . You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+
+\par {\listtext\pard\plain\ltrpar \s40 \rtlch\fcs1 \ab\af37\afs20 \ltrch\fcs0 \b\f37\fs20\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 ii.\tab}}\pard\plain \ltrpar\s40\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Distribution Requirements}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 .}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \cs49\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 For any Dis\hich\af37\dbch\af11\loch\f37
+tributable Code you distribute, you must}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s27\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
+\af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 add significant primary functionality to it in your programs;
+\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37
+require distributors and external end users to agree to terms that protect it at least as much as this agreement;
+\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 display your valid \hich\af37\dbch\af11\loch\f37
+copyright notice on your programs; and
+\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37
+indemnify, defend, and hold harmless Microsoft from any claims, including attorneys\hich\f37 \rquote \loch\f37 fees, related to the distribution or use of your programs.
+\par {\listtext\pard\plain\ltrpar \s40 \rtlch\fcs1 \ab\af37\afs20 \ltrch\fcs0 \b\f37\fs20\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 iii.\tab}}\pard\plain \ltrpar\s40\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Distribution Restrictions.}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\cs49\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \cs49\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 You may not}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+
+\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s27\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
+\af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 alter any copyright, tra\hich\af37\dbch\af11\loch\f37 demark or patent notice in the Distributable Code;
+\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 use Microsoft\hich\f37 \rquote \loch\f37 s trademarks in your programs
+\hich\f37 \rquote \loch\f37 names or in a way that suggests your programs come from or are endorsed by Microsoft;
+\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 distribute Distributable Code to run on a platform other than the Wi
+\hich\af37\dbch\af11\loch\f37 ndows platform;
+\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 include Distributable Code in malicious, deceptive or unlawful programs; or
+
+\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37
+modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that r\hich\af37\dbch\af11\loch\f37
+equires, as a condition of use, modification or distribution, that
+\par {\listtext\pard\plain\ltrpar \s28 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s28\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar
+\jclisttab\tx1795\wrapdefault\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin1792\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
+\af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 the code be disclosed or distributed in source code form; or
+\par {\listtext\pard\plain\ltrpar \s28 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 others have the right to modify it.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 3.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Scope of License}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 .}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 The software is licensed, not sold. This agreement only gives you\hich\af37\dbch\af11\loch\f37
+ some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any te
+\hich\af37\dbch\af11\loch\f37 c\hich\af37\dbch\af11\loch\f37 hnical limitations in the software that only allow you to use it in certain ways. You may not}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 disclose the results of any benchmark tests of the software to any third party without Microsoft\hich\f37 \rquote \loch\f37 s prior written approval}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\insrsid16596261 \hich\af37\dbch\af11\loch\f37 ;}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 work around any technical limita\hich\af37\dbch\af11\loch\f37
+tions in the software}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid16596261 \hich\af37\dbch\af11\loch\f37 ;}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37
+reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid16596261 \hich\af37\dbch\af11\loch\f37 ;}{\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37
+make more copies of the software than specified in this agreement or allowed b\hich\af37\dbch\af11\loch\f37 y applicable law, despite this limitation}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid16596261 \hich\af37\dbch\af11\loch\f37 ;}{\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 publish the software for others to copy}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\insrsid16596261 \hich\af37\dbch\af11\loch\f37 ;}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 rent, lease or lend the software}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\insrsid16596261 \hich\af37\dbch\af11\loch\f37 ; or}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 use the software for commercial software hosting services}{\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid16596261 \hich\af37\dbch\af11\loch\f37 .}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 4.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 BACKUP COPY.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+ You may make one backup copy of the software. You ma\hich\af37\dbch\af11\loch\f37 y use it only to reinstall the software.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 5.\tab}\hich\af37\dbch\af11\loch\f37 DOCUMENTATION.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes.}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 6.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid9964378\charrsid14235961
+\hich\af37\dbch\af11\loch\f37 Export Restrictions}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 .}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+ The software is subject to {\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname place}}\hich\af37\dbch\af11\loch\f37 United States{\*\xmlclose}{\*\xmlclose}
+ export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additio\hich\af37\dbch\af11\loch\f37
+nal information, see }{\field\flddirty{\*\fldinst {\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \cs61\b0\ul\cf2\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 HYPERLINK "http://www.microsoft.com/exporting" }{\rtlch\fcs1 \ab0\af0 \ltrch\fcs0
+\cs61\b0\ul\cf2\insrsid5312418\charrsid14235961 {\*\datafield
+00d0c9ea79f9bace118c8200aa004ba90b02000000170000001c0000007700770077002e006d006900630072006f0073006f00660074002e0063006f006d002f006500780070006f007200740069006e0067000000e0c9ea79f9bace118c8200aa004ba90b4600000068007400740070003a002f002f007700770077002e00
+6d006900630072006f0073006f00660074002e0063006f006d002f006500780070006f007200740069006e006700000000000000000000000000000000000000000000000000000000e10000000000000000001800000000000000000000000000000000000000000000000000000000000000000000140000000000000000
+00007220000000010000000000002000000000004e0000000000000000}}}{\fldrslt {\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \cs61\b0\ul\cf2\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 www.microsoft.com/exporting}}}\sectd
+\psz1\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid4739523\sftnbj {\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 .}{\rtlch\fcs1 \af37 \ltrch\fcs0 \cs61\insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid9651656\charrsid14235961 \hich\af41\dbch\af11\loch\f41 7.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid9651656\charrsid14235961
+\hich\af37\dbch\af11\loch\f37 SUPPORT SERVICES.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9651656\charrsid14235961 \hich\af37\dbch\af11\loch\f37 }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid9651656\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37
+Because this software is \'93\loch\f37 \hich\f37 as is,\'94\loch\f37 we may not provide support services for it.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9651656\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 8.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid9964378\charrsid14235961
+\hich\af37\dbch\af11\loch\f37 Entire Agreement.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 This agreement, and the terms for \hich\af37\dbch\af11\loch\f37
+supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\cf1\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 9.\tab}}\pard \ltrpar
+\s1\ql \fi-360\li360\ri0\sb120\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid14114191 {\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\cf1\insrsid9964378\charrsid14235961
+\hich\af37\dbch\af11\loch\f37 Applicable Law}{\rtlch\fcs1 \af37 \ltrch\fcs0 \cf1\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 .
+\par {\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname place}}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 a.\tab}
+}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 United States{\*\xmlclose}{\*\xmlclose}.}{\rtlch\fcs1 \ab0\af37
+\ltrch\fcs0 \b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 If you acquired the software in the {\*\xmlopen\xmlns2{\factoidname country-region}}\hich\af37\dbch\af11\loch\f37 United States{\*\xmlclose}, {\*\xmlopen\xmlns2{\factoidname
+State}}{\*\xmlopen\xmlns2{\factoidname place}}\hich\af37\dbch\af11\loch\f37 Washington{\*\xmlclose}{\*\xmlclose}
+ state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims un\hich\af37\dbch\af11\loch\f37
+der state consumer protection laws, unfair competition laws, and in tort.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 b.\tab}\hich\af37\dbch\af11\loch\f37 Outside the {\*\xmlopen\xmlns2{\factoidname country-region}}
+{\*\xmlopen\xmlns2{\factoidname place}}\hich\af37\dbch\af11\loch\f37 United States{\*\xmlclose}{\*\xmlclose}.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+ If you acquired the software in any other country, the laws of that country apply.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 10.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Legal Effect.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 This agreement describes certa
+\hich\af37\dbch\af11\loch\f37
+in legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of
+\hich\af37\dbch\af11\loch\f37 y\hich\af37\dbch\af11\loch\f37 our country do not permit it to do so.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid9964378\charrsid14235961
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 11.\tab}\hich\af37\dbch\af11\loch\f37 Disclaimer of Warranty.}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37 The software is licensed \'93\loch\f37 \hich\f37 as-is.\'94\loch\f37
+ You bear the risk of using it. Microsoft gives no express warranties, guarantees or conditions. You may have additional consumer rights under your loc\hich\af37\dbch\af11\loch\f37
+al laws which this agreement cannot change. To the extent permitted under your local laws, Microsoft excludes the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid9964378\charrsid14235961 \hich\af41\dbch\af11\loch\f41 12.\tab}}\pard \ltrpar\s1\ql \fi-360\li360\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid14114191 {\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+Limitation on and Exclusion of Remedies and\hich\af37\dbch\af11\loch\f37
+ Damages. You can recover from Microsoft and its suppliers only direct damages up to U.S. $5.00. You cannot recover any other damages, including consequential, lost profits, special, indirect or incidental damages.
+\par }\pard\plain \ltrpar\s15\ql \li357\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 This limitation applies to
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37 anything r\hich\af37\dbch\af11\loch\f37 elated to the software, services, content (including code) on third party Internet sites, or third party programs; and
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid9964378\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37
+claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent pe\hich\af37\dbch\af11\loch\f37 rmitted by applicable law.
+\par }\pard\plain \ltrpar\ql \li360\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid9964378\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidenta
+\hich\af37\dbch\af11\loch\f37 l, consequential or other damages.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9964378\charrsid14235961
+\par }\pard\plain \ltrpar\s66\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14114191 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Please note: As this software is distributed in
+{\*\xmlopen\xmlns2{\factoidname City}}{\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname City}}\hich\af37\dbch\af11\loch\f37 Quebec{\*\xmlclose}, {\*\xmlopen\xmlns2{\factoidname country-region}}\hich\af37\dbch\af11\loch\f37 Canada
+{\*\xmlclose}{\*\xmlclose}{\*\xmlclose}, some of the clauses in this agreement are provided below in French.
+\par }\pard \ltrpar\s66\ql \li0\ri0\sb240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14114191 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Remarque}{\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid480810\charrsid14235961 \hich\af37\dbch\af11\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37 : Ce logiciel \'e9\loch\f37 \hich\f37 tant distribu\'e9\loch\f37 au
+{\*\xmlopen\xmlns2{\factoidname City}}{\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname City}}\hich\af37\dbch\af11\loch\f37 \hich\f37 Qu\'e9\loch\f37 bec{\*\xmlclose}, {\*\xmlopen\xmlns2{\factoidname country-region}}
+\hich\af37\dbch\af11\loch\f37 Canada{\*\xmlclose}{\*\xmlclose}{\*\xmlclose}\hich\f37 , certaines des clauses dans ce contrat sont fournies ci-dessous en fran\'e7\loch\f37 ais.
+\par }\pard\plain \ltrpar\s67\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37 EXON\'c9\loch\f37 RATION DE GARANTIE.}{\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37 Le logiciel vis\'e9\loch\f37 \hich\f37 par une licence est offert \'ab\loch\f37 \hich\f37 tel quel \'bb\loch\f37 \hich\f37 . Toute utilisation de ce logiciel est \'e0
+\loch\f37 \hich\f37 votre seule risque et p\'e9\loch\f37 ril. Microsoft n\hich\f37 \rquote \loch\f37 ac\hich\af37\dbch\af11\loch\f37 corde aucune autre garantie expresse. }{\rtlch\fcs1 \af37 \ltrch\fcs0
+\lang1036\langfe1033\langnp1036\insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37 Vous pouvez b\'e9\loch\f37 \hich\f37 n\'e9\loch\f37 ficier de droits additionnels en vertu du }{\rtlch\fcs1 \af37 \ltrch\fcs0
+\lang1036\langfe1033\langnp1036\insrsid1070219\charrsid14235961 \hich\af37\dbch\af11\loch\f37 droit local sur la protection d}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+es consommateurs, que ce contrat ne peut modifier. }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 La ou elles sont permises par le droit locale, les garanties implicites de qua\hich\af37\dbch\af11\loch\f37
+\hich\f37 lit\'e9\loch\f37 marchande, d\hich\f37 \rquote \loch\f37 \hich\f37 ad\'e9\loch\f37 \hich\f37 quation \'e0\loch\f37 un usage particulier et d\hich\f37 \rquote \loch\f37 \hich\f37 absence de contrefa\'e7\loch\f37 on sont exclues.
+\par }\pard \ltrpar\s67\ql \li0\ri0\sb120\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14114191 {\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37
+LIMITATION DES DOMMAGES-INT\'c9\loch\f37 \hich\f37 R\'ca\loch\f37 \hich\f37 TS ET EXCLUSION DE RESPONSABILIT\'c9\loch\f37 POUR LES DOMMAGES.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+ Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en c\hich\af37\dbch\af11\loch\f37 \hich\f37 as de dommages directs uniquement \'e0\loch\f37 \hich\f37 hauteur de 5,00 $ US. Vous ne pouvez pr\'e9\loch\f37 \hich\f37 tendre \'e0
+\loch\f37 \hich\f37 aucune indemnisation pour les autres dommages, y compris les dommages sp\'e9\loch\f37 \hich\f37 ciaux, indirects ou accessoires et pertes de b\'e9\loch\f37 \hich\f37 n\'e9\loch\f37 fices.
+\par \hich\af37\dbch\af11\loch\f37 Cette limitation concerne}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480810\charrsid14235961 \hich\af37\dbch\af11\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 :
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid8999754\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-360\li720\ri0\sb120\sa120\keepn\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37 tout ce qui est reli\'e9\loch\f37 au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers}{
+\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid480810\charrsid14235961 \hich\af37\dbch\af11\loch\f37 }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 ; et
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid8999754\charrsid14235961 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid14114191 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37 les r\'e9\loch\f37 \hich\f37
+clamations au titre de violation de contrat ou de garantie, ou au titre de responsabilit\'e9\loch\f37 str\hich\af37\dbch\af11\loch\f37 \hich\f37 icte, de n\'e9\loch\f37 gligence ou d\hich\f37 \rquote \loch\f37 \hich\f37
+une autre faute dans la limite autoris\'e9\loch\f37 e par la loi en vigueur.
+\par }\pard\plain \ltrpar\s67\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14114191 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 Elle s\hich\f37 \rquote \loch\f37 \hich\f37 applique \'e9\loch\f37
+\hich\f37 galement, m\'ea\loch\f37 \hich\f37 me si Microsoft connaissait ou devrait conna\'ee\loch\f37 tre l\hich\f37 \rquote \'e9\loch\f37 \hich\f37 ventualit\'e9\loch\f37 d\hich\f37 \rquote \loch\f37 un tel dommage. Si votre pays n\hich\f37 \rquote
+\loch\f37 autorise pas l\hich\f37 \rquote \loch\f37 exclusion ou la limitatio\hich\af37\dbch\af11\loch\f37 \hich\f37 n de responsabilit\'e9\loch\f37
+ pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l\hich\f37 \rquote \loch\f37 exclusion ci-dessus ne s\hich\f37 \rquote \loch\f37 \hich\f37 appliquera pas \'e0\loch\f37 \hich\f37 votre \'e9
+\loch\f37 gard.
+\par }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 EFFET JURIDIQUE.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37 Le pr\'e9\loch\f37 \hich\f37
+sent contrat d\'e9\hich\af37\dbch\af11\loch\f37 crit certains droits juridiques. Vous pourriez avoir d\hich\f37 \rquote \loch\f37 \hich\f37 autres droits pr\'e9\loch\f37 vus par les lois de votre pays. }{\rtlch\fcs1 \af37 \ltrch\fcs0
+\lang1036\langfe1033\langnp1036\insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37 \hich\f37 Le pr\'e9\loch\f37 \hich\f37 sent contrat ne modifie pas les droits que vous conf\'e8\loch\f37 rent l}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\lang1036\langfe1033\langnp1036\insrsid15601712\charrsid14235961 \hich\af37\dbch\af11\loch\f37 es lois de votre pays si celles-}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid8999754\charrsid14235961 \hich\af37\dbch\af11\loch\f37
+ci ne le permettent pas.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid9964378
+\par }\pard\plain \ltrpar\s33\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0
+\b\fs28\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360 \page }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 MICROSOFT }{
+\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360 \hich\af37\dbch\af11\loch\f37 DIRECTX SOFTWARE D\hich\af37\dbch\af11\loch\f37 EVELOPMENT KIT }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+PRE-RELEASE SOFTWARE LICENSE TERMS
+\par }\pard\plain \ltrpar\s34\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0
+\b\fs28\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par }\pard\plain \ltrpar\s35\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360 \hich\af37\dbch\af11\loch\f37
+\hich\f37 all software identified as \'93}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 pre-release sof\hich\af37\dbch\af11\loch\f37 tware}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360
+\loch\af37\dbch\af11\hich\f37 \'94\loch\f37 included in the DirectX Software Development Kit (SDK)}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+, which includes the media on which you received it, if any. The terms also apply to any Microsoft
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid11484360 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 updates,
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 supplements,
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 Internet-based services, and
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37 support services
+\par }\pard\plain \ltrpar\s35\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 for this software,\hich\af37\dbch\af11\loch\f37
+ unless other terms accompany those items. If so, those terms apply.
+\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 By using the software, you accept these terms. If you do not accept them, do not use the software.
+\par }\pard\plain \ltrpar\s52\ql \li0\ri0\sb120\sa120\widctlpar\brdrt\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 If you comply with these license terms, you have the rights below.
+
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 1.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls20\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 INSTALLATION AND\hich\af37\dbch\af11\loch\f37 USE RIGHTS.
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid11484360 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 You may install and use any number of copies of the software on your premises to design, develop and test your programs for use with the software.
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37
+You may not test the software in a live operating environment unless Microsoft permits you to do so under another agreement.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 2.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 TERM.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 The term of this agreement is until }{\rtlch\fcs1
+\ab0\af37 \ltrch\fcs0 \b0\insrsid11484360 \hich\af37\dbch\af11\loch\f37 the expiration of the software as a result of a time-bomb}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+, or commercial release of t\hich\af37\dbch\af11\loch\f37 he software, whichever is first.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 3.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+PRE-RELEASE SOFTWARE. }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+ This software is a pre-release version. It may not work the way a final version of the software will. We may change it for the final, commercial version. We also may not release a commercial ver\hich\af37\dbch\af11\loch\f37 sion.}{\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 4.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+FEEDBACK. }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+ If you give feedback about the software to Microsoft, you give to Microsoft, without charge, the right to use, share and commercialize your feedback in any way and for any purpose. You also give to third parties, without charge, any pa
+\hich\af37\dbch\af11\loch\f37
+tent rights needed for their products, technologies and services to use or interface with any specific parts of a Microsoft software or service that includes the feedback. You will not give feedback that is subject to a license that requires Microsoft to
+\hich\af37\dbch\af11\loch\f37 \hich\af37\dbch\af11\loch\f37 license its software or documentation to third parties because we include your feedback in them. These rights survive this agreement.}{\rtlch\fcs1 \af0 \ltrch\fcs0
+\insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 5.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid11484360\charrsid14425952
+\hich\af37\dbch\af11\loch\f37 Scope of License}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 .}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+ The software is licensed, not sold. This agreement only gives you some rights to use the software. \hich\af37\dbch\af11\loch\f37
+ Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the softwar
+\hich\af37\dbch\af11\loch\f37 e\hich\af37\dbch\af11\loch\f37 that only allow you to use it in certain ways. You may not}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid11484360 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 disclose the results of any benchmark tests of the software to any third party without Microsoft\hich\f37 \rquote \loch\f37 s prior written approval}{\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid11484360 \hich\af37\dbch\af11\loch\f37 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+work around any technical limitations in the software}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360 \hich\af37\dbch\af11\loch\f37 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 reverse e
+\hich\af37\dbch\af11\loch\f37 ngineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360 \hich\af37\dbch\af11\loch\f37 ;}{
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+make more copies of the software than specified in this agreement or allowed by applicable law, despite this lim\hich\af37\dbch\af11\loch\f37 itation}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360 \hich\af37\dbch\af11\loch\f37 ;}{\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+publish the software for others to copy}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360 \hich\af37\dbch\af11\loch\f37 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+rent, lease or lend the software}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360 \hich\af37\dbch\af11\loch\f37 ;}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+transfer the software or this agreement to any third party}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360 \hich\af37\dbch\af11\loch\f37 ; or}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+use the software for commercial software hosting services}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360 \hich\af37\dbch\af11\loch\f37 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid11484360\charrsid11484360 \hich\af41\dbch\af11\loch\f41 6.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid11484360\charrsid11484360 \hich\af37\dbch\af11\loch\f37 Export Restrictions}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid11484360 \hich\af37\dbch\af11\loch\f37 .}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0
+\b0\insrsid11484360\charrsid11484360 \hich\af37\dbch\af11\loch\f37 The soft\hich\af37\dbch\af11\loch\f37 ware is subject to {\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname place}}\hich\af37\dbch\af11\loch\f37
+United States{\*\xmlclose}{\*\xmlclose} export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and en
+\hich\af37\dbch\af11\loch\f37 d use. For additional information, see }{\field{\*\fldinst {\rtlch\fcs1 \af37 \ltrch\fcs0 \cf2\insrsid11484360 \hich\af37\dbch\af11\loch\f37 HYPERLINK "http://}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\cf2\insrsid11484360\charrsid11484360 \hich\af37\dbch\af11\loch\f37 www.microsoft.com/exporting}{\rtlch\fcs1 \af37 \ltrch\fcs0 \cf2\insrsid11484360 \hich\af37\dbch\af11\loch\f37 " }{\rtlch\fcs1 \af37 \ltrch\fcs0 \cf2\insrsid5312418\charrsid16594485
+{\*\datafield
+00d0c9ea79f9bace118c8200aa004ba90b02000000170000001c0000007700770077002e006d006900630072006f0073006f00660074002e0063006f006d002f006500780070006f007200740069006e0067000000e0c9ea79f9bace118c8200aa004ba90b4600000068007400740070003a002f002f007700770077002e00
+6d006900630072006f0073006f00660074002e0063006f006d002f006500780070006f007200740069006e00670000000000}}}{\fldrslt {\rtlch\fcs1 \af37 \ltrch\fcs0 \cs61\ul\cf2\insrsid11484360\charrsid16594485 \hich\af37\dbch\af11\loch\f37 www.microsoft.com/exporting}}}
+\sectd \psz1\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid4739523\sftnbj {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid11484360 \hich\af37\dbch\af11\loch\f37 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\ul\insrsid11484360\charrsid11484360
+
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 7.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid11484360\charrsid14425952
+\hich\af37\dbch\af11\loch\f37 SUPPORT SERVICES.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 }{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+\hich\f37 Because this software is \'93\loch\f37 \hich\f37 as is,\'94\loch\f37 we may not provide support services for it.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 8.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid11484360\charrsid14425952
+\hich\af37\dbch\af11\loch\f37 Entire Agreement.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 This agreement,\hich\af37\dbch\af11\loch\f37
+ and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\cf1\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 9.\tab}}\pard \ltrpar
+\s1\ql \fi-360\li360\ri0\sb120\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid11484360 {\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\cf1\insrsid11484360\charrsid14425952
+\hich\af37\dbch\af11\loch\f37 Applicable Law}{\rtlch\fcs1 \af37 \ltrch\fcs0 \cf1\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 .
+\par {\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname place}}{\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 a.\tab}
+}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 United States{\*\xmlclose}{\*\xmlclose}.}{\rtlch\fcs1 \ab0\af37
+\ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 If you acquired the software in the {\*\xmlopen\xmlns2{\factoidname country-region}}\hich\af37\dbch\af11\loch\f37 United States{\*\xmlclose}, {\*\xmlopen\xmlns2{\factoidname
+country-region}}{\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname State}}\hich\af37\dbch\af11\loch\f37 Washington{\*\xmlclose}{\*\xmlclose}{\*\xmlclose}
+ state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, i\hich\af37\dbch\af11\loch\f37
+ncluding claims under state consumer protection laws, unfair competition laws, and in tort.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 b.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+Outside the {\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname place}}\hich\af37\dbch\af11\loch\f37 United States{\*\xmlclose}{\*\xmlclose}.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952
+\hich\af37\dbch\af11\loch\f37 If you acquired the software in any other country, the laws of that country apply.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 10.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033
+{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 Legal Effect.}{\rtlch\fcs1 \ab0\af37 \ltrch\fcs0 \b0\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 This agreement de
+\hich\af37\dbch\af11\loch\f37
+scribes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if
+\hich\af37\dbch\af11\loch\f37 \hich\af37\dbch\af11\loch\f37 the laws of your country do not permit it to do so.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \caps\insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 11.\tab}}{\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid11484360\charrsid14425952
+\hich\af37\dbch\af11\loch\f37 Disclaimer of Warranty.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 \hich\f37 The software is licensed \'93\loch\f37 \hich\f37 as-is.\'94\loch\f37
+ You bear the risk of using it. Microsoft gives no express warranties, guarantees or conditions. You may have additional consumer rights u\hich\af37\dbch\af11\loch\f37
+nder your local laws which this agreement cannot change. To the extent permitted under your local laws, Microsoft excludes the implied warranties of merchantability, fitness for a particular purpose and non-infringement.}{\rtlch\fcs1 \af0 \ltrch\fcs0
+\caps\insrsid11484360\charrsid14425952
+\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af41\afs20 \ltrch\fcs0 \b\caps\f41\fs20\insrsid11484360\charrsid14425952 \hich\af41\dbch\af11\loch\f41 12.\tab}}\pard \ltrpar\s1\ql \fi-360\li360\ri0\sb120\sa120\widctlpar
+\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid11484360 {\rtlch\fcs1 \af37 \ltrch\fcs0 \caps\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 Limitation on and Exclusion of
+\hich\af37\dbch\af11\loch\f37 Remedies and Damages. }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+You can recover from Microsoft and its suppliers only direct damages up to U.S. $5.00. You cannot recover any other damages, including consequential, lost profits, special, indirect or incidental damages.}{\rtlch\fcs1 \af0 \ltrch\fcs0
+\caps\insrsid11484360\charrsid14425952
+\par }\pard\plain \ltrpar\s15\ql \li357\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0\pararsid11484360 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 This limitation applies t\hich\af37\dbch\af11\loch\f37 o
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid11484360 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af37\dbch\af11\loch\f37
+claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to\hich\af37\dbch\af11\loch\f37 the extent permitted by applicable law.
+\par }\pard\plain \ltrpar\ql \li360\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid11484360 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37
+It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitatio\hich\af37\dbch\af11\loch\f37
+n of incidental, consequential or other damages.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11484360\charrsid14425952
+\par }\pard\plain \ltrpar\s66\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11484360 \rtlch\fcs1 \ab\af37\afs19\alang1025 \ltrch\fcs0
+\b\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 Please note: As this software is distributed in
+{\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname City}}\hich\af37\dbch\af11\loch\f37 Quebec{\*\xmlclose}{\*\xmlclose},
+{\*\xmlopen\xmlns2{\factoidname country-region}}\hich\af37\dbch\af11\loch\f37 Canada{\*\xmlclose}{\*\xmlclose}{\*\xmlclose}, some of the clauses in this agreement are provided below in French.
+\par }\pard \ltrpar\s66\ql \li0\ri0\sb240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11484360 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 \hich\f37 Remarque : Ce logiciel
+\'e9\loch\f37 tant dist\hich\af37\dbch\af11\loch\f37 \hich\f37 ribu\'e9\loch\f37 au {\*\xmlopen\xmlns2{\factoidname country-region}}{\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname City}}
+\hich\af37\dbch\af11\loch\f37 \hich\f37 Qu\'e9\loch\f37 bec{\*\xmlclose}{\*\xmlclose}, {\*\xmlopen\xmlns2{\factoidname place}}\hich\af37\dbch\af11\loch\f37 Canada{\*\xmlclose}{\*\xmlclose}{\*\xmlclose}\hich\f37
+, certaines des clauses dans ce contrat sont fournies ci-dessous en fran\'e7\loch\f37 ais.
+\par }\pard\plain \ltrpar\s67\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11484360 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\lang9226\langfe1033\langnp9226\insrsid11484360\charrsid5075535 \hich\af37\dbch\af11\loch\f37 \hich\f37 EXON\'c9\loch\f37
+RATION DE GARANTIE.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang9226\langfe1033\langnp9226\insrsid11484360\charrsid5075535 \hich\af37\dbch\af11\loch\f37 \hich\f37 Le logiciel vis\'e9\loch\f37 \hich\f37 par une licence est offert \'ab\loch\f37 \hich\f37
+ tel quel \'bb\loch\f37 . Toute utilisation de ce logici\hich\af37\dbch\af11\loch\f37 \hich\f37 el est \'e0\loch\f37 \hich\f37 votre seule risque et p\'e9\loch\f37 ril. Microsoft n\hich\f37 \rquote \loch\f37 \hich\f37
+accorde aucune autre garantie expresse. Vous pouvez b\'e9\loch\f37 \hich\f37 n\'e9\loch\f37 ficier de droits additionnels en vertu du droit local sur la protection dues consommateurs, que ce contrat ne peut modifier. La ou elles sont permise
+\hich\af37\dbch\af11\loch\f37 s\hich\af37\dbch\af11\loch\f37 \hich\f37 par le droit locale, les garanties implicites de qualit\'e9\loch\f37 marchande, d\hich\f37 \rquote \loch\f37 \hich\f37 ad\'e9\loch\f37 \hich\f37 quation \'e0\loch\f37
+ un usage particulier et d\hich\f37 \rquote \loch\f37 \hich\f37 absence de contrefa\'e7\loch\f37 on sont exclues.
+\par }\pard \ltrpar\s67\ql \li0\ri0\sb120\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11484360 {\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\lang9226\langfe1033\langnp9226\insrsid11484360\charrsid5075535
+\hich\af37\dbch\af11\loch\f37 \hich\f37 LIMITATION DES DOMMAGES-INT\'c9\loch\f37 \hich\f37 R\'ca\loch\f37 \hich\f37 TS ET EXCLUSION DE RESPONSABILIT\'c9\loch\f37 POUR LES DOMMAGES.}{\rtlch\fcs1 \af37 \ltrch\fcs0
+\lang9226\langfe1033\langnp9226\insrsid11484360\charrsid5075535 \hich\af37\dbch\af11\loch\f37 \hich\f37 Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement \'e0\loch\f37 \hich\f37
+ hauteur de 5,00 $ US. Vous ne pouvez pr\'e9\loch\f37 \hich\f37 tendre \'e0\loch\f37 \hich\f37 aucune indemnisation pour les autres dommages, y compris les dommages sp\'e9\loch\f37 ciaux, indirects \hich\af37\dbch\af11\loch\f37 o
+\hich\af37\dbch\af11\loch\f37 \hich\f37 u accessoires et pertes de b\'e9\loch\f37 \hich\f37 n\'e9\loch\f37 fices.
+\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 Cette limitation concerne :
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\insrsid11484360\charrsid14425952 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s25\ql \fi-360\li720\ri0\sb120\sa120\keepn\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid11484360 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37
+\ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 \hich\f37 tout ce qui est reli\'e9\loch\f37 au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et
+
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af37\afs19 \ltrch\fcs0 \f3\fs19\lang9226\langfe1033\langnp9226\insrsid11484360\charrsid5075535 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s25\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
+\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid11484360 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang9226\langfe1033\langnp9226\insrsid11484360\charrsid5075535 \hich\af37\dbch\af11\loch\f37 \hich\f37 les r\'e9
+\hich\af37\dbch\af11\loch\f37 \hich\f37 clamations au titre de violation de contrat ou de garantie, ou au titre de responsabilit\'e9\loch\f37 \hich\f37 stricte, de n\'e9\loch\f37 gligence ou d\hich\f37 \rquote \loch\f37 \hich\f37
+une autre faute dans la limite autoris\'e9\loch\f37 e par la loi en vigueur.
+\par }\pard\plain \ltrpar\s67\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11484360 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang9226\langfe1033\langnp9226\insrsid11484360\charrsid5075535 \hich\af37\dbch\af11\loch\f37 Elle s\hich\f37 \rquote \loch\f37 \hich\f37
+applique \'e9\loch\f37 \hich\f37 galement, m\'ea\loch\f37 \hich\f37 me si Microsoft connaissait ou devrait conna\'ee\hich\af37\dbch\af11\loch\f37 tre l\hich\f37 \rquote \'e9\loch\f37 \hich\f37 ventualit\'e9\loch\f37 d\hich\f37 \rquote \loch\f37
+un tel dommage. Si votre pays n\hich\f37 \rquote \loch\f37 autorise pas l\hich\f37 \rquote \loch\f37 \hich\f37 exclusion ou la limitation de responsabilit\'e9\loch\f37
+ pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l\hich\f37 \rquote \loch\f37 exclusion ci-dessus ne s\hich\f37 \rquote \loch\f37 applique\hich\af37\dbch\af11\loch\f37 r
+\hich\af37\dbch\af11\loch\f37 \hich\f37 a pas \'e0\loch\f37 \hich\f37 votre \'e9\loch\f37 gard.
+\par }{\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 EFFET JURIDIQUE.}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid11484360\charrsid14425952 \hich\af37\dbch\af11\loch\f37 \hich\f37 Le pr\'e9\loch\f37 \hich\f37
+sent contrat d\'e9\loch\f37 crit certains droits juridiques. }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang9226\langfe1033\langnp9226\insrsid11484360\charrsid5075535 \hich\af37\dbch\af11\loch\f37 Vous pourriez avoir d\hich\f37 \rquote \loch\f37 \hich\f37
+autres droits pr\'e9\loch\f37 \hich\f37 vus par les lois de votre pays. Le pr\'e9\loch\f37 \hich\f37 sent contrat ne modifie pas les droits que vous conf\'e8\loch\f37 rent les lois de votre pays si c\hich\af37\dbch\af11\loch\f37
+elles ci ne le permettent pas.}{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\lang9226\langfe1033\langnp9226\insrsid11484360\charrsid5075535
+\par }\pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11484360 \rtlch\fcs1 \af37\afs19\alang1025 \ltrch\fcs0
+\fs19\lang1033\langfe1033\loch\af37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang9226\langfe1033\langnp9226\insrsid11484360\charrsid5075535
+\par
+\par }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid11484360\charrsid11484360
+\par }}
\ No newline at end of file
diff --git a/dependencies/DXSDK_Aug2007/DirectX SDK EULA.txt b/dependencies/DXSDK_Aug2007/DirectX SDK EULA.txt
new file mode 100644
index 0000000..87893ce
--- /dev/null
+++ b/dependencies/DXSDK_Aug2007/DirectX SDK EULA.txt
@@ -0,0 +1,119 @@
+MICROSOFT SOFTWARE LICENSE TERMS
+MICROSOFT DIRECTX SOFTWARE DEVELOPMENT KIT (SDK)
+These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft
+* updates,
+* supplements,
+* Internet-based services, and
+* support services
+for this software, unless other terms accompany those items. If so, those terms apply.
+BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE.
+If you comply with these license terms, you have the rights below.
+1. INSTALLATION AND USE RIGHTS.
+a. Installation and Use. You may install and use any number of copies of the software on your devices.
+b. Included Microsoft Programs. The software contains other Microsoft programs. The license terms with those programs apply to your use of them.
+c. Pre-release Code. The software contains pre-release code. The license terms for pre-release code below apply to your use of it.
+2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.
+a. Media Elements and Templates. You may copy and use images, clip art, animations, sounds, music, shapes, video clips and templates provided with the software and identified for such use in documents and projects that you create. You may distribute those documents and projects non-commercially. If you wish to use these media elements or templates for any other purpose, go to www.microsoft.com/permission to learn whether that use is allowed.
+b. Distributable Code. The software contains code that you are permitted to distribute in programs you develop if you comply with the terms below.
+i. Right to Use and Distribute. The code and text files listed below are “Distributable Code.”
+* DIRECTX REDIST.TXT Files. You may copy and distribute the object code form of code listed in DIRECTX REDIST.TXT files.
+* Sample Code. You may modify, copy, and distribute the source and object code form of code marked as “sample”, as well as those marked as follows:
+\Utilities\Source\Maya
+\Utilities\Source\Max.
+* Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs.
+ii. Distribution Requirements. For any Distributable Code you distribute, you must
+* add significant primary functionality to it in your programs;
+* require distributors and external end users to agree to terms that protect it at least as much as this agreement;
+* display your valid copyright notice on your programs; and
+* indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs.
+iii. Distribution Restrictions. You may not
+* alter any copyright, trademark or patent notice in the Distributable Code;
+* use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft;
+* distribute Distributable Code to run on a platform other than the Windows platform;
+* include Distributable Code in malicious, deceptive or unlawful programs; or
+* modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that
+* the code be disclosed or distributed in source code form; or
+* others have the right to modify it.
+3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not
+* disclose the results of any benchmark tests of the software to any third party without Microsoft’s prior written approval;
+* work around any technical limitations in the software;
+* reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;
+* make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation;
+* publish the software for others to copy;
+* rent, lease or lend the software; or
+* use the software for commercial software hosting services.
+4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software.
+5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes.
+6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting.
+7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it.
+8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.
+9. APPLICABLE LAW.
+a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.
+b. Outside the United States. If you acquired the software in any other country, the laws of that country apply.
+10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so.
+11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.
+This limitation applies to
+* anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and
+* claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.
+It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages.
+Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French.
+Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français.
+EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues.
+LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices.
+Cette limitation concerne :
+* tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et
+* les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur.
+Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard.
+EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas.
+
+MICROSOFT DIRECTX SOFTWARE DEVELOPMENT KIT PRE-RELEASE SOFTWARE LICENSE TERMS
+
+These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to all software identified as “pre-release software” included in the DirectX Software Development Kit (SDK), which includes the media on which you received it, if any. The terms also apply to any Microsoft
+* updates,
+* supplements,
+* Internet-based services, and
+* support services
+for this software, unless other terms accompany those items. If so, those terms apply.
+By using the software, you accept these terms. If you do not accept them, do not use the software.
+If you comply with these license terms, you have the rights below.
+1. INSTALLATION AND USE RIGHTS.
+* You may install and use any number of copies of the software on your premises to design, develop and test your programs for use with the software.
+* You may not test the software in a live operating environment unless Microsoft permits you to do so under another agreement.
+2. TERM. The term of this agreement is until the expiration of the software as a result of a time-bomb, or commercial release of the software, whichever is first.
+3. PRE-RELEASE SOFTWARE. This software is a pre-release version. It may not work the way a final version of the software will. We may change it for the final, commercial version. We also may not release a commercial version.
+4. FEEDBACK. If you give feedback about the software to Microsoft, you give to Microsoft, without charge, the right to use, share and commercialize your feedback in any way and for any purpose. You also give to third parties, without charge, any patent rights needed for their products, technologies and services to use or interface with any specific parts of a Microsoft software or service that includes the feedback. You will not give feedback that is subject to a license that requires Microsoft to license its software or documentation to third parties because we include your feedback in them. These rights survive this agreement.
+5. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not
+* disclose the results of any benchmark tests of the software to any third party without Microsoft’s prior written approval;
+* work around any technical limitations in the software;
+* reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;
+* make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation;
+* publish the software for others to copy;
+* rent, lease or lend the software;
+* transfer the software or this agreement to any third party; or
+* use the software for commercial software hosting services.
+6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting.
+7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it.
+8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.
+9. APPLICABLE LAW.
+a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.
+b. Outside the United States. If you acquired the software in any other country, the laws of that country apply.
+10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so.
+11. DISCLAIMER OF WARRANTY. The software is licensed “as-is.” You bear the risk of using it. Microsoft gives no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this agreement cannot change. To the extent permitted under your local laws, Microsoft excludes the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
+12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. You can recover from Microsoft and its suppliers only direct damages up to U.S. $5.00. You cannot recover any other damages, including consequential, lost profits, special, indirect or incidental damages.
+This limitation applies to
+* anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and
+* claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.
+It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages.
+Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French.
+Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français.
+EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection dues consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues.
+LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices.
+Cette limitation concerne :
+* tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et
+* les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur.
+Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard.
+EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles ci ne le permettent pas.
+
+
+
diff --git a/dependencies/DXSDK_Aug2007/README.md b/dependencies/DXSDK_Aug2007/README.md
new file mode 100644
index 0000000..1fa40a5
--- /dev/null
+++ b/dependencies/DXSDK_Aug2007/README.md
@@ -0,0 +1,6 @@
+# DirectDraw and DirectPlay Dependencies
+
+The August 2007 SDK was the last version of the DirectX SDK that included the headers and libraries for both DirectDraw and DirectPlay.
+This folder only contains the headers and libraries for DirectDraw and DirectPlay, no other contents of the SDK. All present licenses are still included.
+
+The files itself were taken from this Github Repository: [DirectX SDK Collection](https://github.com/NovaRain/DXSDK_Collection)
diff --git a/dependencies/DXSDK_Aug2007/Roland-license.txt b/dependencies/DXSDK_Aug2007/Roland-license.txt
new file mode 100644
index 0000000..ff38a4d
--- /dev/null
+++ b/dependencies/DXSDK_Aug2007/Roland-license.txt
@@ -0,0 +1,65 @@
+-------------------------------------------------------------------------
+
+ROLAND SOUNDCANVAS SOUND SET FOR GENERAL MIDI AND GS FORMAT
+
+The Roland SoundCanvas Sound Set includes the necessary sounds to make a
+complete General MIDI compatible sound set. It also includes additional
+sounds necessary to make a complete GS Format compatible sound set.
+
+WHAT IS THE GS FORMAT?
+
+The GS Format is a standardized set of specifications for sound sources
+that defines the manner in which multitimbral sound generating devices
+will respond to MIDI messages. The GS Format also complies with General
+MIDI System Level 1.
+
+The GS Format also defines a number of other details over and above the
+features of General MIDI. These include unique specifications for sound
+and functions available for tone editing, effects, and other specifications
+concerning the manner in which sound sources will respond to MIDI messages.
+Any device that is equipped with GS Format sound sources can faithfully
+reproduce both General MIDI sound recordings and GS Format MIDI sound
+recordings.
+
+HOW TO CONTACT ROLAND:
+
+For more information, please contact:
+
+Roland Corporation U.S.
+7200 Dominion Circle
+Los Angeles, CA 90040-3696
+
+Phone: (323) 890-3700
+Fax: (323) 890-3701
+
+COPYRIGHT NOTICE AND LICENSE LIMITATIONS
+
+Roland GS Sound Set/Microsoft (P) 1996 Roland Corporation U.S.
+
+The Roland GS Sound Set/Microsoft, the "Sample Set", incorporates the
+Roland SoundCanvas Sound Set. Roland Corporation U.S. owns the Sample Set
+and all copyrights pertaining thereto and has licensed the Sample Set for
+use solely on Microsoft operating system products and Microsoft Application
+Products.
+
+Roland reserves all rights to the Sample Set not expressly granted by Roland
+Corporation U.S. or by Microsoft under the terms of Microsoft's End User
+License Agreement.
+
+The Sample Set may only be redistributed with your software application as a
+part of a Microsoft operating system product installation and under the terms
+of Microsoft's End User License Agreement. The Sample Set may not be
+separated from the Microsoft operating system product; the Sample Set may
+only be installed by the Microsoft installation procedure for the associated
+Microsoft operating system product or for an associated software development
+kit. All other uses of the Sample Set require a separate written license
+from Roland Corporation U.S.
+
+The Sample Set may not be used, copied or redistributed in hardware ROM or
+similar technology of any device without prior express written permission
+from an authorized representative of Roland Corporation U.S. The Sample
+Set may not be redistributed with any Musical Instrument . A "Musical
+Instrument" is any device that is capable of generating musical sounds
+without being directly connected to a computer with a licensed Microsoft
+operating system product. You may not modify the Sample Set under any
+circumstances.
diff --git a/dependencies/DXSDK_Aug2007/include/ddraw.h b/dependencies/DXSDK_Aug2007/include/ddraw.h
new file mode 100644
index 0000000..4b72177
--- /dev/null
+++ b/dependencies/DXSDK_Aug2007/include/ddraw.h
@@ -0,0 +1,5856 @@
+/*==========================================================================;
+ *
+ * Copyright (C) Microsoft Corporation. All Rights Reserved.
+ *
+ * File: ddraw.h
+ * Content: DirectDraw include file
+ *
+ ***************************************************************************/
+
+#ifndef __DDRAW_INCLUDED__
+#define __DDRAW_INCLUDED__
+
+//Disable the nameless union warning when building internally
+#undef ENABLE_NAMELESS_UNION_PRAGMA
+#ifdef DIRECTX_REDIST
+#define ENABLE_NAMELESS_UNION_PRAGMA
+#endif
+
+#ifdef ENABLE_NAMELESS_UNION_PRAGMA
+#pragma warning(disable:4201)
+#endif
+
+/*
+ * If you wish an application built against the newest version of DirectDraw
+ * to run against an older DirectDraw run time then define DIRECTDRAW_VERSION
+ * to be the earlies version of DirectDraw you wish to run against. For,
+ * example if you wish an application to run against a DX 3 runtime define
+ * DIRECTDRAW_VERSION to be 0x0300.
+ */
+#ifndef DIRECTDRAW_VERSION
+#define DIRECTDRAW_VERSION 0x0700
+#endif /* DIRECTDRAW_VERSION */
+
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#define COM_NO_WINDOWS_H
+#include
+#else
+#define IUnknown void
+#if !defined( NT_BUILD_ENVIRONMENT ) && !defined(WINNT)
+ #define CO_E_NOTINITIALIZED 0x800401F0L
+#endif
+#endif
+
+#define _FACDD 0x876
+#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// For compilers that don't support nameless unions, do a
+//
+// #define NONAMELESSUNION
+//
+// before #include
+//
+#ifndef DUMMYUNIONNAMEN
+#if defined(__cplusplus) || !defined(NONAMELESSUNION)
+#define DUMMYUNIONNAMEN(n)
+#else
+#define DUMMYUNIONNAMEN(n) u##n
+#endif
+#endif
+
+#ifndef MAKEFOURCC
+ #define MAKEFOURCC(ch0, ch1, ch2, ch3) \
+ ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
+ ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+#endif //defined(MAKEFOURCC)
+
+/*
+ * FOURCC codes for DX compressed-texture pixel formats
+ */
+#define FOURCC_DXT1 (MAKEFOURCC('D','X','T','1'))
+#define FOURCC_DXT2 (MAKEFOURCC('D','X','T','2'))
+#define FOURCC_DXT3 (MAKEFOURCC('D','X','T','3'))
+#define FOURCC_DXT4 (MAKEFOURCC('D','X','T','4'))
+#define FOURCC_DXT5 (MAKEFOURCC('D','X','T','5'))
+
+/*
+ * GUIDS used by DirectDraw objects
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+
+DEFINE_GUID( CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
+DEFINE_GUID( CLSID_DirectDraw7, 0x3c305196,0x50db,0x11d3,0x9c,0xfe,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
+DEFINE_GUID( CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
+DEFINE_GUID( IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
+DEFINE_GUID( IID_IDirectDraw4, 0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
+DEFINE_GUID( IID_IDirectDraw7, 0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
+DEFINE_GUID( IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
+DEFINE_GUID( IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
+DEFINE_GUID( IID_IDirectDrawSurface4, 0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
+DEFINE_GUID( IID_IDirectDrawSurface7, 0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
+DEFINE_GUID( IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawColorControl, 0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
+DEFINE_GUID( IID_IDirectDrawGammaControl, 0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
+
+#endif
+
+/*============================================================================
+ *
+ * DirectDraw Structures
+ *
+ * Various structures used to invoke DirectDraw.
+ *
+ *==========================================================================*/
+
+struct IDirectDraw;
+struct IDirectDrawSurface;
+struct IDirectDrawPalette;
+struct IDirectDrawClipper;
+
+typedef struct IDirectDraw FAR *LPDIRECTDRAW;
+typedef struct IDirectDraw2 FAR *LPDIRECTDRAW2;
+typedef struct IDirectDraw4 FAR *LPDIRECTDRAW4;
+typedef struct IDirectDraw7 FAR *LPDIRECTDRAW7;
+typedef struct IDirectDrawSurface FAR *LPDIRECTDRAWSURFACE;
+typedef struct IDirectDrawSurface2 FAR *LPDIRECTDRAWSURFACE2;
+typedef struct IDirectDrawSurface3 FAR *LPDIRECTDRAWSURFACE3;
+typedef struct IDirectDrawSurface4 FAR *LPDIRECTDRAWSURFACE4;
+typedef struct IDirectDrawSurface7 FAR *LPDIRECTDRAWSURFACE7;
+typedef struct IDirectDrawPalette FAR *LPDIRECTDRAWPALETTE;
+typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER;
+typedef struct IDirectDrawColorControl FAR *LPDIRECTDRAWCOLORCONTROL;
+typedef struct IDirectDrawGammaControl FAR *LPDIRECTDRAWGAMMACONTROL;
+
+typedef struct _DDFXROP FAR *LPDDFXROP;
+typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC;
+typedef struct _DDSURFACEDESC2 FAR *LPDDSURFACEDESC2;
+typedef struct _DDCOLORCONTROL FAR *LPDDCOLORCONTROL;
+
+/*
+ * API's
+ */
+#if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM )
+//#if defined( _WIN32 ) && !defined( _NO_ENUM )
+ typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
+ typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID);
+ extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext );
+ extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext );
+ /*
+ * Protect against old SDKs
+ */
+ #if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500)
+ #define HMONITOR_DECLARED
+ DECLARE_HANDLE(HMONITOR);
+ #endif
+ typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
+ typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
+ extern HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
+ extern HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
+ typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
+ typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
+
+ #ifdef UNICODE
+ typedef LPDDENUMCALLBACKW LPDDENUMCALLBACK;
+ #define DirectDrawEnumerate DirectDrawEnumerateW
+ typedef LPDDENUMCALLBACKEXW LPDDENUMCALLBACKEX;
+ typedef LPDIRECTDRAWENUMERATEEXW LPDIRECTDRAWENUMERATEEX;
+ #define DirectDrawEnumerateEx DirectDrawEnumerateExW
+ #else
+ typedef LPDDENUMCALLBACKA LPDDENUMCALLBACK;
+ #define DirectDrawEnumerate DirectDrawEnumerateA
+ typedef LPDDENUMCALLBACKEXA LPDDENUMCALLBACKEX;
+ typedef LPDIRECTDRAWENUMERATEEXA LPDIRECTDRAWENUMERATEEX;
+ #define DirectDrawEnumerateEx DirectDrawEnumerateExA
+ #endif
+ extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
+ extern HRESULT WINAPI DirectDrawCreateEx( GUID FAR * lpGuid, LPVOID *lplpDD, REFIID iid,IUnknown FAR *pUnkOuter );
+ extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter );
+#endif
+/*
+ * Flags for DirectDrawEnumerateEx
+ * DirectDrawEnumerateEx supercedes DirectDrawEnumerate. You must use GetProcAddress to
+ * obtain a function pointer (of type LPDIRECTDRAWENUMERATEEX) to DirectDrawEnumerateEx.
+ * By default, only the primary display device is enumerated.
+ * DirectDrawEnumerate is equivalent to DirectDrawEnumerate(,,DDENUM_NONDISPLAYDEVICES)
+ */
+
+/*
+ * This flag causes enumeration of any GDI display devices which are part of
+ * the Windows Desktop
+ */
+#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L
+
+/*
+ * This flag causes enumeration of any GDI display devices which are not
+ * part of the Windows Desktop
+ */
+#define DDENUM_DETACHEDSECONDARYDEVICES 0x00000002L
+
+/*
+ * This flag causes enumeration of non-display devices
+ */
+#define DDENUM_NONDISPLAYDEVICES 0x00000004L
+
+
+#define REGSTR_KEY_DDHW_DESCRIPTION "Description"
+#define REGSTR_KEY_DDHW_DRIVERNAME "DriverName"
+#define REGSTR_PATH_DDHW "Hardware\\DirectDrawDrivers"
+
+#define DDCREATE_HARDWAREONLY 0x00000001l
+#define DDCREATE_EMULATIONONLY 0x00000002l
+
+#if defined(WINNT) || !defined(WIN32)
+#ifndef _HRESULT_DEFINED
+#define _HRESULT_DEFINED
+typedef __success(return >= 0) long HRESULT;
+#endif // !_HRESULT_DEFINED
+#endif
+
+//#ifndef WINNT
+typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
+typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID);
+typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
+typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID);
+typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK7)(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID);
+//#endif
+
+/*
+ * Generic pixel format with 8-bit RGB and alpha components
+ */
+typedef struct _DDARGB
+{
+ BYTE blue;
+ BYTE green;
+ BYTE red;
+ BYTE alpha;
+} DDARGB;
+
+typedef DDARGB FAR *LPDDARGB;
+
+/*
+ * This version of the structure remains for backwards source compatibility.
+ * The DDARGB structure is the one that should be used for all DirectDraw APIs.
+ */
+typedef struct _DDRGBA
+{
+ BYTE red;
+ BYTE green;
+ BYTE blue;
+ BYTE alpha;
+} DDRGBA;
+
+typedef DDRGBA FAR *LPDDRGBA;
+
+
+/*
+ * DDCOLORKEY
+ */
+typedef struct _DDCOLORKEY
+{
+ DWORD dwColorSpaceLowValue; // low boundary of color space that is to
+ // be treated as Color Key, inclusive
+ DWORD dwColorSpaceHighValue; // high boundary of color space that is
+ // to be treated as Color Key, inclusive
+} DDCOLORKEY;
+
+typedef DDCOLORKEY FAR* LPDDCOLORKEY;
+
+/*
+ * DDBLTFX
+ * Used to pass override information to the DIRECTDRAWSURFACE callback Blt.
+ */
+typedef struct _DDBLTFX
+{
+ DWORD dwSize; // size of structure
+ DWORD dwDDFX; // FX operations
+ DWORD dwROP; // Win32 raster operations
+ DWORD dwDDROP; // Raster operations new for DirectDraw
+ DWORD dwRotationAngle; // Rotation angle for blt
+ DWORD dwZBufferOpCode; // ZBuffer compares
+ DWORD dwZBufferLow; // Low limit of Z buffer
+ DWORD dwZBufferHigh; // High limit of Z buffer
+ DWORD dwZBufferBaseDest; // Destination base value
+ DWORD dwZDestConstBitDepth; // Bit depth used to specify Z constant for destination
+ union
+ {
+ DWORD dwZDestConst; // Constant to use as Z buffer for dest
+ LPDIRECTDRAWSURFACE lpDDSZBufferDest; // Surface to use as Z buffer for dest
+ } DUMMYUNIONNAMEN(1);
+ DWORD dwZSrcConstBitDepth; // Bit depth used to specify Z constant for source
+ union
+ {
+ DWORD dwZSrcConst; // Constant to use as Z buffer for src
+ LPDIRECTDRAWSURFACE lpDDSZBufferSrc; // Surface to use as Z buffer for src
+ } DUMMYUNIONNAMEN(2);
+ DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend
+ DWORD dwAlphaEdgeBlend; // Alpha for edge blending
+ DWORD dwReserved;
+ DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination
+ union
+ {
+ DWORD dwAlphaDestConst; // Constant to use as Alpha Channel
+ LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as Alpha Channel
+ } DUMMYUNIONNAMEN(3);
+ DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source
+ union
+ {
+ DWORD dwAlphaSrcConst; // Constant to use as Alpha Channel
+ LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as Alpha Channel
+ } DUMMYUNIONNAMEN(4);
+ union
+ {
+ DWORD dwFillColor; // color in RGB or Palettized
+ DWORD dwFillDepth; // depth value for z-buffer
+ DWORD dwFillPixel; // pixel value for RGBA or RGBZ
+ LPDIRECTDRAWSURFACE lpDDSPattern; // Surface to use as pattern
+ } DUMMYUNIONNAMEN(5);
+ DDCOLORKEY ddckDestColorkey; // DestColorkey override
+ DDCOLORKEY ddckSrcColorkey; // SrcColorkey override
+} DDBLTFX;
+
+typedef DDBLTFX FAR* LPDDBLTFX;
+
+
+
+/*
+ * DDSCAPS
+ */
+typedef struct _DDSCAPS
+{
+ DWORD dwCaps; // capabilities of surface wanted
+} DDSCAPS;
+
+typedef DDSCAPS FAR* LPDDSCAPS;
+
+
+/*
+ * DDOSCAPS
+ */
+typedef struct _DDOSCAPS
+{
+ DWORD dwCaps; // capabilities of surface wanted
+} DDOSCAPS;
+
+typedef DDOSCAPS FAR* LPDDOSCAPS;
+
+/*
+ * This structure is used internally by DirectDraw.
+ */
+typedef struct _DDSCAPSEX
+{
+ DWORD dwCaps2;
+ DWORD dwCaps3;
+ union
+ {
+ DWORD dwCaps4;
+ DWORD dwVolumeDepth;
+ } DUMMYUNIONNAMEN(1);
+} DDSCAPSEX, FAR * LPDDSCAPSEX;
+
+/*
+ * DDSCAPS2
+ */
+typedef struct _DDSCAPS2
+{
+ DWORD dwCaps; // capabilities of surface wanted
+ DWORD dwCaps2;
+ DWORD dwCaps3;
+ union
+ {
+ DWORD dwCaps4;
+ DWORD dwVolumeDepth;
+ } DUMMYUNIONNAMEN(1);
+} DDSCAPS2;
+
+typedef DDSCAPS2 FAR* LPDDSCAPS2;
+
+/*
+ * DDCAPS
+ */
+#define DD_ROP_SPACE (256/32) // space required to store ROP array
+/*
+ * NOTE: Our choosen structure number scheme is to append a single digit to
+ * the end of the structure giving the version that structure is associated
+ * with.
+ */
+
+/*
+ * This structure represents the DDCAPS structure released in DirectDraw 1.0. It is used internally
+ * by DirectDraw to interpret caps passed into ddraw by drivers written prior to the release of DirectDraw 2.0.
+ * New applications should use the DDCAPS structure defined below.
+ */
+typedef struct _DDCAPS_DX1
+{
+ DWORD dwSize; // size of the DDDRIVERCAPS structure
+ DWORD dwCaps; // driver specific capabilities
+ DWORD dwCaps2; // more driver specific capabilites
+ DWORD dwCKeyCaps; // color key capabilities of the surface
+ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
+ DWORD dwPalCaps; // palette capabilities
+ DWORD dwSVCaps; // stereo vision capabilities
+ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+ DWORD dwVidMemTotal; // total amount of video memory
+ DWORD dwVidMemFree; // amount of free video memory
+ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+ DWORD dwNumFourCCCodes; // number of four cc codes
+ DWORD dwAlignBoundarySrc; // source rectangle alignment
+ DWORD dwAlignSizeSrc; // source rectangle byte size
+ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+ DWORD dwAlignSizeDest; // dest rectangle byte size
+ DWORD dwAlignStrideAlign; // stride alignment
+ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+ DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities
+ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMinLiveVideoStretch; // OBSOLETE! This field remains for compatability reasons only
+ DWORD dwMaxLiveVideoStretch; // OBSOLETE! This field remains for compatability reasons only
+ DWORD dwMinHwCodecStretch; // OBSOLETE! This field remains for compatability reasons only
+ DWORD dwMaxHwCodecStretch; // OBSOLETE! This field remains for compatability reasons only
+ DWORD dwReserved1; // reserved
+ DWORD dwReserved2; // reserved
+ DWORD dwReserved3; // reserved
+} DDCAPS_DX1;
+
+typedef DDCAPS_DX1 FAR* LPDDCAPS_DX1;
+
+/*
+ * This structure is the DDCAPS structure as it was in version 2 and 3 of Direct X.
+ * It is present for back compatability.
+ */
+typedef struct _DDCAPS_DX3
+{
+ DWORD dwSize; // size of the DDDRIVERCAPS structure
+ DWORD dwCaps; // driver specific capabilities
+ DWORD dwCaps2; // more driver specific capabilites
+ DWORD dwCKeyCaps; // color key capabilities of the surface
+ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
+ DWORD dwPalCaps; // palette capabilities
+ DWORD dwSVCaps; // stereo vision capabilities
+ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+ DWORD dwVidMemTotal; // total amount of video memory
+ DWORD dwVidMemFree; // amount of free video memory
+ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+ DWORD dwNumFourCCCodes; // number of four cc codes
+ DWORD dwAlignBoundarySrc; // source rectangle alignment
+ DWORD dwAlignSizeSrc; // source rectangle byte size
+ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+ DWORD dwAlignSizeDest; // dest rectangle byte size
+ DWORD dwAlignStrideAlign; // stride alignment
+ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+ DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities
+ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwReserved1; // reserved
+ DWORD dwReserved2; // reserved
+ DWORD dwReserved3; // reserved
+ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
+ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
+ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
+ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
+ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
+ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
+ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
+ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
+ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
+ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
+ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
+ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
+ DWORD dwReserved4; // reserved
+ DWORD dwReserved5; // reserved
+ DWORD dwReserved6; // reserved
+} DDCAPS_DX3;
+typedef DDCAPS_DX3 FAR* LPDDCAPS_DX3;
+
+/*
+ * This structure is the DDCAPS structure as it was in version 5 of Direct X.
+ * It is present for back compatability.
+ */
+typedef struct _DDCAPS_DX5
+{
+/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure
+/* 4*/ DWORD dwCaps; // driver specific capabilities
+/* 8*/ DWORD dwCaps2; // more driver specific capabilites
+/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface
+/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+/* 14*/ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
+/* 18*/ DWORD dwPalCaps; // palette capabilities
+/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities
+/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory
+/* 40*/ DWORD dwVidMemFree; // amount of free video memory
+/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes
+/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment
+/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size
+/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size
+/* 60*/ DWORD dwAlignStrideAlign; // stride alignment
+/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+/* 84*/ DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities
+/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* a0*/ DWORD dwReserved1; // reserved
+/* a4*/ DWORD dwReserved2; // reserved
+/* a8*/ DWORD dwReserved3; // reserved
+/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
+/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
+/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
+/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
+/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
+/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
+/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
+/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
+/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
+/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
+/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
+/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
+// Members added for DX5:
+/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports
+/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used
+/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts
+/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts
+/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts
+/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts
+/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts
+/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
+} DDCAPS_DX5;
+typedef DDCAPS_DX5 FAR* LPDDCAPS_DX5;
+
+typedef struct _DDCAPS_DX6
+{
+/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure
+/* 4*/ DWORD dwCaps; // driver specific capabilities
+/* 8*/ DWORD dwCaps2; // more driver specific capabilites
+/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface
+/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+/* 14*/ DWORD dwFXAlphaCaps; // alpha caps
+/* 18*/ DWORD dwPalCaps; // palette capabilities
+/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities
+/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory
+/* 40*/ DWORD dwVidMemFree; // amount of free video memory
+/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes
+/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment
+/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size
+/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size
+/* 60*/ DWORD dwAlignStrideAlign; // stride alignment
+/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+/* 84*/ DDSCAPS ddsOldCaps; // Was DDSCAPS ddsCaps. ddsCaps is of type DDSCAPS2 for DX6
+/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* a0*/ DWORD dwReserved1; // reserved
+/* a4*/ DWORD dwReserved2; // reserved
+/* a8*/ DWORD dwReserved3; // reserved
+/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
+/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
+/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
+/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
+/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
+/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
+/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
+/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
+/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
+/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
+/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
+/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
+/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports
+/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used
+/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts
+/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts
+/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts
+/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts
+/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts
+/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
+// Members added for DX6 release
+/*16c*/ DDSCAPS2 ddsCaps; // Surface Caps
+} DDCAPS_DX6;
+typedef DDCAPS_DX6 FAR* LPDDCAPS_DX6;
+
+typedef struct _DDCAPS_DX7
+{
+/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure
+/* 4*/ DWORD dwCaps; // driver specific capabilities
+/* 8*/ DWORD dwCaps2; // more driver specific capabilites
+/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface
+/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+/* 14*/ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
+/* 18*/ DWORD dwPalCaps; // palette capabilities
+/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities
+/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory
+/* 40*/ DWORD dwVidMemFree; // amount of free video memory
+/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes
+/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment
+/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size
+/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size
+/* 60*/ DWORD dwAlignStrideAlign; // stride alignment
+/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+/* 84*/ DDSCAPS ddsOldCaps; // Was DDSCAPS ddsCaps. ddsCaps is of type DDSCAPS2 for DX6
+/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* a0*/ DWORD dwReserved1; // reserved
+/* a4*/ DWORD dwReserved2; // reserved
+/* a8*/ DWORD dwReserved3; // reserved
+/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
+/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
+/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
+/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
+/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
+/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
+/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
+/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
+/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
+/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
+/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
+/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
+/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports
+/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used
+/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts
+/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts
+/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts
+/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts
+/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts
+/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
+// Members added for DX6 release
+/*16c*/ DDSCAPS2 ddsCaps; // Surface Caps
+} DDCAPS_DX7;
+typedef DDCAPS_DX7 FAR* LPDDCAPS_DX7;
+
+
+#if DIRECTDRAW_VERSION <= 0x300
+ typedef DDCAPS_DX3 DDCAPS;
+#elif DIRECTDRAW_VERSION <= 0x500
+ typedef DDCAPS_DX5 DDCAPS;
+#elif DIRECTDRAW_VERSION <= 0x600
+ typedef DDCAPS_DX6 DDCAPS;
+#else
+ typedef DDCAPS_DX7 DDCAPS;
+#endif
+
+typedef DDCAPS FAR* LPDDCAPS;
+
+
+
+/*
+ * DDPIXELFORMAT
+ */
+typedef struct _DDPIXELFORMAT
+{
+ DWORD dwSize; // size of structure
+ DWORD dwFlags; // pixel format flags
+ DWORD dwFourCC; // (FOURCC code)
+ union
+ {
+ DWORD dwRGBBitCount; // how many bits per pixel
+ DWORD dwYUVBitCount; // how many bits per pixel
+ DWORD dwZBufferBitDepth; // how many total bits/pixel in z buffer (including any stencil bits)
+ DWORD dwAlphaBitDepth; // how many bits for alpha channels
+ DWORD dwLuminanceBitCount; // how many bits per pixel
+ DWORD dwBumpBitCount; // how many bits per "buxel", total
+ DWORD dwPrivateFormatBitCount;// Bits per pixel of private driver formats. Only valid in texture
+ // format list and if DDPF_D3DFORMAT is set
+ } DUMMYUNIONNAMEN(1);
+ union
+ {
+ DWORD dwRBitMask; // mask for red bit
+ DWORD dwYBitMask; // mask for Y bits
+ DWORD dwStencilBitDepth; // how many stencil bits (note: dwZBufferBitDepth-dwStencilBitDepth is total Z-only bits)
+ DWORD dwLuminanceBitMask; // mask for luminance bits
+ DWORD dwBumpDuBitMask; // mask for bump map U delta bits
+ DWORD dwOperations; // DDPF_D3DFORMAT Operations
+ } DUMMYUNIONNAMEN(2);
+ union
+ {
+ DWORD dwGBitMask; // mask for green bits
+ DWORD dwUBitMask; // mask for U bits
+ DWORD dwZBitMask; // mask for Z bits
+ DWORD dwBumpDvBitMask; // mask for bump map V delta bits
+ struct
+ {
+ WORD wFlipMSTypes; // Multisample methods supported via flip for this D3DFORMAT
+ WORD wBltMSTypes; // Multisample methods supported via blt for this D3DFORMAT
+ } MultiSampleCaps;
+
+ } DUMMYUNIONNAMEN(3);
+ union
+ {
+ DWORD dwBBitMask; // mask for blue bits
+ DWORD dwVBitMask; // mask for V bits
+ DWORD dwStencilBitMask; // mask for stencil bits
+ DWORD dwBumpLuminanceBitMask; // mask for luminance in bump map
+ } DUMMYUNIONNAMEN(4);
+ union
+ {
+ DWORD dwRGBAlphaBitMask; // mask for alpha channel
+ DWORD dwYUVAlphaBitMask; // mask for alpha channel
+ DWORD dwLuminanceAlphaBitMask;// mask for alpha channel
+ DWORD dwRGBZBitMask; // mask for Z channel
+ DWORD dwYUVZBitMask; // mask for Z channel
+ } DUMMYUNIONNAMEN(5);
+} DDPIXELFORMAT;
+
+typedef DDPIXELFORMAT FAR* LPDDPIXELFORMAT;
+
+/*
+ * DDOVERLAYFX
+ */
+typedef struct _DDOVERLAYFX
+{
+ DWORD dwSize; // size of structure
+ DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend
+ DWORD dwAlphaEdgeBlend; // Constant to use as alpha for edge blend
+ DWORD dwReserved;
+ DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination
+ union
+ {
+ DWORD dwAlphaDestConst; // Constant to use as alpha channel for dest
+ LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as alpha channel for dest
+ } DUMMYUNIONNAMEN(1);
+ DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source
+ union
+ {
+ DWORD dwAlphaSrcConst; // Constant to use as alpha channel for src
+ LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as alpha channel for src
+ } DUMMYUNIONNAMEN(2);
+ DDCOLORKEY dckDestColorkey; // DestColorkey override
+ DDCOLORKEY dckSrcColorkey; // DestColorkey override
+ DWORD dwDDFX; // Overlay FX
+ DWORD dwFlags; // flags
+} DDOVERLAYFX;
+
+typedef DDOVERLAYFX FAR *LPDDOVERLAYFX;
+
+
+/*
+ * DDBLTBATCH: BltBatch entry structure
+ */
+typedef struct _DDBLTBATCH
+{
+ LPRECT lprDest;
+ LPDIRECTDRAWSURFACE lpDDSSrc;
+ LPRECT lprSrc;
+ DWORD dwFlags;
+ LPDDBLTFX lpDDBltFx;
+} DDBLTBATCH;
+
+typedef DDBLTBATCH FAR * LPDDBLTBATCH;
+
+
+/*
+ * DDGAMMARAMP
+ */
+typedef struct _DDGAMMARAMP
+{
+ WORD red[256];
+ WORD green[256];
+ WORD blue[256];
+} DDGAMMARAMP;
+typedef DDGAMMARAMP FAR * LPDDGAMMARAMP;
+
+/*
+ * This is the structure within which DirectDraw returns data about the current graphics driver and chipset
+ */
+
+#define MAX_DDDEVICEID_STRING 512
+
+typedef struct tagDDDEVICEIDENTIFIER
+{
+ /*
+ * These elements are for presentation to the user only. They should not be used to identify particular
+ * drivers, since this is unreliable and many different strings may be associated with the same
+ * device, and the same driver from different vendors.
+ */
+ char szDriver[MAX_DDDEVICEID_STRING];
+ char szDescription[MAX_DDDEVICEID_STRING];
+
+ /*
+ * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons
+ * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic
+ * drivers. It is recommended that guidDeviceIdentifier is used for this purpose.
+ *
+ * This version has the form:
+ * wProduct = HIWORD(liDriverVersion.HighPart)
+ * wVersion = LOWORD(liDriverVersion.HighPart)
+ * wSubVersion = HIWORD(liDriverVersion.LowPart)
+ * wBuild = LOWORD(liDriverVersion.LowPart)
+ */
+#ifdef _WIN32
+ LARGE_INTEGER liDriverVersion; /* Defined for applications and other 32 bit components */
+#else
+ DWORD dwDriverVersionLowPart; /* Defined for 16 bit driver components */
+ DWORD dwDriverVersionHighPart;
+#endif
+
+
+ /*
+ * These elements can be used to identify particular chipsets. Use with extreme caution.
+ * dwVendorId Identifies the manufacturer. May be zero if unknown.
+ * dwDeviceId Identifies the type of chipset. May be zero if unknown.
+ * dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown.
+ * dwRevision Identifies the revision level of the chipset. May be zero if unknown.
+ */
+ DWORD dwVendorId;
+ DWORD dwDeviceId;
+ DWORD dwSubSysId;
+ DWORD dwRevision;
+
+ /*
+ * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
+ * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
+ * reprofile the graphics subsystem.
+ * This element can also be used to identify particular problematic drivers.
+ */
+ GUID guidDeviceIdentifier;
+} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
+
+typedef struct tagDDDEVICEIDENTIFIER2
+{
+ /*
+ * These elements are for presentation to the user only. They should not be used to identify particular
+ * drivers, since this is unreliable and many different strings may be associated with the same
+ * device, and the same driver from different vendors.
+ */
+ char szDriver[MAX_DDDEVICEID_STRING];
+ char szDescription[MAX_DDDEVICEID_STRING];
+
+ /*
+ * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons
+ * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic
+ * drivers. It is recommended that guidDeviceIdentifier is used for this purpose.
+ *
+ * This version has the form:
+ * wProduct = HIWORD(liDriverVersion.HighPart)
+ * wVersion = LOWORD(liDriverVersion.HighPart)
+ * wSubVersion = HIWORD(liDriverVersion.LowPart)
+ * wBuild = LOWORD(liDriverVersion.LowPart)
+ */
+#ifdef _WIN32
+ LARGE_INTEGER liDriverVersion; /* Defined for applications and other 32 bit components */
+#else
+ DWORD dwDriverVersionLowPart; /* Defined for 16 bit driver components */
+ DWORD dwDriverVersionHighPart;
+#endif
+
+
+ /*
+ * These elements can be used to identify particular chipsets. Use with extreme caution.
+ * dwVendorId Identifies the manufacturer. May be zero if unknown.
+ * dwDeviceId Identifies the type of chipset. May be zero if unknown.
+ * dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown.
+ * dwRevision Identifies the revision level of the chipset. May be zero if unknown.
+ */
+ DWORD dwVendorId;
+ DWORD dwDeviceId;
+ DWORD dwSubSysId;
+ DWORD dwRevision;
+
+ /*
+ * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
+ * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
+ * reprofile the graphics subsystem.
+ * This element can also be used to identify particular problematic drivers.
+ */
+ GUID guidDeviceIdentifier;
+
+ /*
+ * This element is used to determine the Windows Hardware Quality Lab (WHQL)
+ * certification level for this driver/device pair.
+ */
+ DWORD dwWHQLLevel;
+
+} DDDEVICEIDENTIFIER2, * LPDDDEVICEIDENTIFIER2;
+
+/*
+ * Flags for the IDirectDraw4::GetDeviceIdentifier method
+ */
+
+/*
+ * This flag causes GetDeviceIdentifier to return information about the host (typically 2D) adapter in a system equipped
+ * with a stacked secondary 3D adapter. Such an adapter appears to the application as if it were part of the
+ * host adapter, but is typically physcially located on a separate card. The stacked secondary's information is
+ * returned when GetDeviceIdentifier's dwFlags field is zero, since this most accurately reflects the qualities
+ * of the DirectDraw object involved.
+ */
+#define DDGDI_GETHOSTIDENTIFIER 0x00000001L
+
+/*
+ * Macros for interpretting DDEVICEIDENTIFIER2.dwWHQLLevel
+ */
+#define GET_WHQL_YEAR( dwWHQLLevel ) \
+ ( (dwWHQLLevel) / 0x10000 )
+#define GET_WHQL_MONTH( dwWHQLLevel ) \
+ ( ( (dwWHQLLevel) / 0x100 ) & 0x00ff )
+#define GET_WHQL_DAY( dwWHQLLevel ) \
+ ( (dwWHQLLevel) & 0xff )
+
+
+/*
+ * callbacks
+ */
+typedef DWORD (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext );
+#ifdef STREAMING
+typedef DWORD (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD);
+#endif
+
+
+/*
+ * INTERACES FOLLOW:
+ * IDirectDraw
+ * IDirectDrawClipper
+ * IDirectDrawPalette
+ * IDirectDrawSurface
+ */
+
+/*
+ * IDirectDraw
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDraw
+DECLARE_INTERFACE_( IDirectDraw, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
+ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
+ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
+ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
+ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
+ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
+ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDraw_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDraw_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDraw_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
+#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
+#define IDirectDraw_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
+#define IDirectDraw_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
+#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
+#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
+#define IDirectDraw_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
+#define IDirectDraw_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
+#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
+#define IDirectDraw_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
+#define IDirectDraw_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
+#define IDirectDraw_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
+#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
+#define IDirectDraw_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
+#define IDirectDraw_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
+#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->lpVtbl->SetDisplayMode(p, a, b, c)
+#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
+#else
+#define IDirectDraw_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDraw_AddRef(p) (p)->AddRef()
+#define IDirectDraw_Release(p) (p)->Release()
+#define IDirectDraw_Compact(p) (p)->Compact()
+#define IDirectDraw_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c)
+#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d)
+#define IDirectDraw_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c)
+#define IDirectDraw_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b)
+#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
+#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d)
+#define IDirectDraw_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw_GetCaps(p, a, b) (p)->GetCaps(a, b)
+#define IDirectDraw_GetDisplayMode(p, a) (p)->GetDisplayMode(a)
+#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b)
+#define IDirectDraw_GetGDISurface(p, a) (p)->GetGDISurface(a)
+#define IDirectDraw_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw_GetScanLine(p, a) (p)->GetScanLine(a)
+#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw_Initialize(p, a) (p)->Initialize(a)
+#define IDirectDraw_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b)
+#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->SetDisplayMode(a, b, c)
+#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b)
+#endif
+
+#endif
+
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDraw2
+DECLARE_INTERFACE_( IDirectDraw2, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
+ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
+ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
+ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
+ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
+ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
+ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
+};
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDraw2_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDraw2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDraw2_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
+#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
+#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
+#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
+#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
+#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
+#define IDirectDraw2_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw2_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
+#define IDirectDraw2_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
+#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
+#define IDirectDraw2_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
+#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
+#define IDirectDraw2_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
+#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
+#define IDirectDraw2_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
+#define IDirectDraw2_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
+#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
+#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
+#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
+#else
+#define IDirectDraw2_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDraw2_AddRef(p) (p)->AddRef()
+#define IDirectDraw2_Release(p) (p)->Release()
+#define IDirectDraw2_Compact(p) (p)->Compact()
+#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c)
+#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d)
+#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c)
+#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b)
+#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
+#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d)
+#define IDirectDraw2_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw2_GetCaps(p, a, b) (p)->GetCaps(a, b)
+#define IDirectDraw2_GetDisplayMode(p, a) (p)->GetDisplayMode(a)
+#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b)
+#define IDirectDraw2_GetGDISurface(p, a) (p)->GetGDISurface(a)
+#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw2_GetScanLine(p, a) (p)->GetScanLine(a)
+#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw2_Initialize(p, a) (p)->Initialize(a)
+#define IDirectDraw2_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b)
+#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
+#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b)
+#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c)
+#endif
+
+#endif
+
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDraw4
+DECLARE_INTERFACE_( IDirectDraw4, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4 FAR *, IUnknown FAR *) PURE;
+ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 FAR * ) PURE;
+ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE;
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ) PURE;
+ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
+ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE;
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
+ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4 FAR *) PURE;
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
+ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE;
+ /*** Added in the V4 Interface ***/
+ STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE4 *) PURE;
+ STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
+ STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+ STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER, DWORD ) PURE;
+};
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDraw4_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDraw4_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw4_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDraw4_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw4_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
+#define IDirectDraw4_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
+#define IDirectDraw4_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
+#define IDirectDraw4_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
+#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
+#define IDirectDraw4_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
+#define IDirectDraw4_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw4_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
+#define IDirectDraw4_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
+#define IDirectDraw4_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
+#define IDirectDraw4_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
+#define IDirectDraw4_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
+#define IDirectDraw4_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
+#define IDirectDraw4_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
+#define IDirectDraw4_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
+#define IDirectDraw4_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw4_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
+#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
+#define IDirectDraw4_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
+#define IDirectDraw4_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
+#define IDirectDraw4_GetSurfaceFromDC(p, a, b) (p)->lpVtbl->GetSurfaceFromDC(p, a, b)
+#define IDirectDraw4_RestoreAllSurfaces(p) (p)->lpVtbl->RestoreAllSurfaces(p)
+#define IDirectDraw4_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
+#else
+#define IDirectDraw4_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDraw4_AddRef(p) (p)->AddRef()
+#define IDirectDraw4_Release(p) (p)->Release()
+#define IDirectDraw4_Compact(p) (p)->Compact()
+#define IDirectDraw4_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c)
+#define IDirectDraw4_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d)
+#define IDirectDraw4_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c)
+#define IDirectDraw4_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b)
+#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
+#define IDirectDraw4_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d)
+#define IDirectDraw4_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw4_GetCaps(p, a, b) (p)->GetCaps(a, b)
+#define IDirectDraw4_GetDisplayMode(p, a) (p)->GetDisplayMode(a)
+#define IDirectDraw4_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b)
+#define IDirectDraw4_GetGDISurface(p, a) (p)->GetGDISurface(a)
+#define IDirectDraw4_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw4_GetScanLine(p, a) (p)->GetScanLine(a)
+#define IDirectDraw4_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw4_Initialize(p, a) (p)->Initialize(a)
+#define IDirectDraw4_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw4_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b)
+#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
+#define IDirectDraw4_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b)
+#define IDirectDraw4_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c)
+#define IDirectDraw4_GetSurfaceFromDC(p, a, b) (p)->GetSurfaceFromDC(a, b)
+#define IDirectDraw4_RestoreAllSurfaces(p) (p)->RestoreAllSurfaces()
+#define IDirectDraw4_TestCooperativeLevel(p) (p)->TestCooperativeLevel()
+#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b)
+#endif
+
+#endif
+
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDraw7
+DECLARE_INTERFACE_( IDirectDraw7, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE7 FAR *, IUnknown FAR *) PURE;
+ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE7, LPDIRECTDRAWSURFACE7 FAR * ) PURE;
+ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE;
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7 ) PURE;
+ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
+ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE;
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
+ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE7 FAR *) PURE;
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
+ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE;
+ /*** Added in the V4 Interface ***/
+ STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE7 *) PURE;
+ STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
+ STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+ STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER2, DWORD ) PURE;
+ STDMETHOD(StartModeTest)(THIS_ LPSIZE, DWORD, DWORD ) PURE;
+ STDMETHOD(EvaluateMode)(THIS_ DWORD, DWORD * ) PURE;
+};
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDraw7_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDraw7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw7_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDraw7_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw7_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
+#define IDirectDraw7_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
+#define IDirectDraw7_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
+#define IDirectDraw7_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
+#define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
+#define IDirectDraw7_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
+#define IDirectDraw7_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw7_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
+#define IDirectDraw7_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
+#define IDirectDraw7_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
+#define IDirectDraw7_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
+#define IDirectDraw7_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
+#define IDirectDraw7_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
+#define IDirectDraw7_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
+#define IDirectDraw7_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
+#define IDirectDraw7_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw7_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
+#define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
+#define IDirectDraw7_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
+#define IDirectDraw7_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
+#define IDirectDraw7_GetSurfaceFromDC(p, a, b) (p)->lpVtbl->GetSurfaceFromDC(p, a, b)
+#define IDirectDraw7_RestoreAllSurfaces(p) (p)->lpVtbl->RestoreAllSurfaces(p)
+#define IDirectDraw7_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
+#define IDirectDraw7_StartModeTest(p,a,b,c) (p)->lpVtbl->StartModeTest(p,a,b,c)
+#define IDirectDraw7_EvaluateMode(p,a,b) (p)->lpVtbl->EvaluateMode(p,a,b)
+#else
+#define IDirectDraw7_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDraw7_AddRef(p) (p)->AddRef()
+#define IDirectDraw7_Release(p) (p)->Release()
+#define IDirectDraw7_Compact(p) (p)->Compact()
+#define IDirectDraw7_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c)
+#define IDirectDraw7_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d)
+#define IDirectDraw7_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c)
+#define IDirectDraw7_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b)
+#define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
+#define IDirectDraw7_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d)
+#define IDirectDraw7_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw7_GetCaps(p, a, b) (p)->GetCaps(a, b)
+#define IDirectDraw7_GetDisplayMode(p, a) (p)->GetDisplayMode(a)
+#define IDirectDraw7_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b)
+#define IDirectDraw7_GetGDISurface(p, a) (p)->GetGDISurface(a)
+#define IDirectDraw7_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw7_GetScanLine(p, a) (p)->GetScanLine(a)
+#define IDirectDraw7_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw7_Initialize(p, a) (p)->Initialize(a)
+#define IDirectDraw7_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw7_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b)
+#define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
+#define IDirectDraw7_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b)
+#define IDirectDraw7_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c)
+#define IDirectDraw7_GetSurfaceFromDC(p, a, b) (p)->GetSurfaceFromDC(a, b)
+#define IDirectDraw7_RestoreAllSurfaces(p) (p)->RestoreAllSurfaces()
+#define IDirectDraw7_TestCooperativeLevel(p) (p)->TestCooperativeLevel()
+#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b)
+#define IDirectDraw7_StartModeTest(p,a,b,c) (p)->lpVtbl->StartModeTest(a,b,c)
+#define IDirectDraw7_EvaluateMode(p,a,b) (p)->lpVtbl->EvaluateMode(a,b)
+#endif
+
+#endif
+
+
+/*
+ * IDirectDrawPalette
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawPalette
+DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawPalette methods ***/
+ STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE;
+ STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDrawPalette_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawPalette_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawPalette_GetCaps(p, a) (p)->lpVtbl->GetCaps(p, a)
+#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->lpVtbl->GetEntries(p, a, b, c, d)
+#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->lpVtbl->Initialize(p, a, b, c)
+#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->lpVtbl->SetEntries(p, a, b, c, d)
+#else
+#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDrawPalette_AddRef(p) (p)->AddRef()
+#define IDirectDrawPalette_Release(p) (p)->Release()
+#define IDirectDrawPalette_GetCaps(p, a) (p)->GetCaps(a)
+#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->GetEntries(a, b, c, d)
+#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->Initialize(a, b, c)
+#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->SetEntries(a, b, c, d)
+#endif
+
+#endif
+
+
+/*
+ * IDirectDrawClipper
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawClipper
+DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawClipper methods ***/
+ STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE;
+ STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE;
+ STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE;
+ STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE;
+ STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDrawClipper_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawClipper_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->lpVtbl->GetClipList(p, a, b, c)
+#define IDirectDrawClipper_GetHWnd(p, a) (p)->lpVtbl->GetHWnd(p, a)
+#define IDirectDrawClipper_Initialize(p, a, b) (p)->lpVtbl->Initialize(p, a, b)
+#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->lpVtbl->IsClipListChanged(p, a)
+#define IDirectDrawClipper_SetClipList(p, a, b) (p)->lpVtbl->SetClipList(p, a, b)
+#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->lpVtbl->SetHWnd(p, a, b)
+#else
+#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDrawClipper_AddRef(p) (p)->AddRef()
+#define IDirectDrawClipper_Release(p) (p)->Release()
+#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->GetClipList(a, b, c)
+#define IDirectDrawClipper_GetHWnd(p, a) (p)->GetHWnd(a)
+#define IDirectDrawClipper_Initialize(p, a, b) (p)->Initialize(a, b)
+#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->IsClipListChanged(a)
+#define IDirectDrawClipper_SetClipList(p, a, b) (p)->SetClipList(a, b)
+#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->SetHWnd(a, b)
+#endif
+
+#endif
+
+/*
+ * IDirectDrawSurface and related interfaces
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface
+DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#else
+#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface_Release(p) (p)->Release()
+#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface_GetCaps(p,b) (p)->GetCaps(b)
+#define IDirectDrawSurface_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface_Restore(p) (p)->Restore()
+#define IDirectDrawSurface_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface_Unlock(p,b) (p)->Unlock(b)
+#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#endif
+
+/*
+ * IDirectDrawSurface2 and related interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface2
+DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface2_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface2_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface2_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface2_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface2_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface2_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface2_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface2_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface2_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface2_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface2_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface2_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+#else
+#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface2_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface2_Release(p) (p)->Release()
+#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface2_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface2_GetCaps(p,b) (p)->GetCaps(b)
+#define IDirectDrawSurface2_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface2_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface2_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface2_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface2_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface2_Restore(p) (p)->Restore()
+#define IDirectDrawSurface2_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface2_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface2_Unlock(p,b) (p)->Unlock(b)
+#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface2_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface2_PageUnlock(p,a) (p)->PageUnlock(a)
+#endif
+
+/*
+ * IDirectDrawSurface3 and related interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface3
+DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
+ /*** Added in the V3 interface ***/
+ STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface3_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface3_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface3_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface3_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface3_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface3_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface3_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface3_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface3_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface3_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface3_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface3_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface3_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface3_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface3_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+#else
+#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface3_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface3_Release(p) (p)->Release()
+#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface3_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface3_GetCaps(p,b) (p)->GetCaps(b)
+#define IDirectDrawSurface3_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface3_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface3_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface3_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface3_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface3_Restore(p) (p)->Restore()
+#define IDirectDrawSurface3_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface3_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface3_Unlock(p,b) (p)->Unlock(b)
+#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface3_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface3_PageUnlock(p,a) (p)->PageUnlock(a)
+#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+#endif
+
+/*
+ * IDirectDrawSurface4 and related interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface4
+DECLARE_INTERFACE_( IDirectDrawSurface4, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE4) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE4 FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE4) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
+ /*** Added in the v3 interface ***/
+ STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
+ /*** Added in the v4 interface ***/
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+ STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
+ STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface4_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface4_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface4_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface4_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface4_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface4_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface4_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface4_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface4_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface4_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface4_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface4_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface4_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface4_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface4_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface4_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface4_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface4_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface4_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface4_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface4_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface4_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface4_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface4_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface4_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirectDrawSurface4_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirectDrawSurface4_GetUniquenessValue(p, a) (p)->lpVtbl->GetUniquenessValue(p, a)
+#define IDirectDrawSurface4_ChangeUniquenessValue(p) (p)->lpVtbl->ChangeUniquenessValue(p)
+#else
+#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface4_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface4_Release(p) (p)->Release()
+#define IDirectDrawSurface4_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface4_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface4_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface4_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface4_GetCaps(p,b) (p)->GetCaps(b)
+#define IDirectDrawSurface4_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface4_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface4_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface4_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface4_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface4_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface4_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface4_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface4_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface4_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface4_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface4_Restore(p) (p)->Restore()
+#define IDirectDrawSurface4_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface4_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface4_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface4_Unlock(p,b) (p)->Unlock(b)
+#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface4_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface4_PageUnlock(p,a) (p)->PageUnlock(a)
+#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirectDrawSurface4_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirectDrawSurface4_GetUniquenessValue(p, a) (p)->GetUniquenessValue(a)
+#define IDirectDrawSurface4_ChangeUniquenessValue(p) (p)->ChangeUniquenessValue()
+#endif
+
+/*
+ * IDirectDrawSurface7 and related interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface7
+DECLARE_INTERFACE_( IDirectDrawSurface7, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE7) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE7, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE7, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE7) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK7) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK7) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE7, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE7 FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE7,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE7) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
+ /*** Added in the v3 interface ***/
+ STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
+ /*** Added in the v4 interface ***/
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+ STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
+ STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
+ /*** Moved Texture7 methods here ***/
+ STDMETHOD(SetPriority)(THIS_ DWORD) PURE;
+ STDMETHOD(GetPriority)(THIS_ LPDWORD) PURE;
+ STDMETHOD(SetLOD)(THIS_ DWORD) PURE;
+ STDMETHOD(GetLOD)(THIS_ LPDWORD) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface7_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface7_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface7_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface7_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface7_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface7_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface7_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface7_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface7_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface7_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface7_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface7_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface7_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface7_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface7_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface7_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface7_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface7_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface7_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface7_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface7_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface7_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface7_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirectDrawSurface7_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirectDrawSurface7_GetUniquenessValue(p, a) (p)->lpVtbl->GetUniquenessValue(p, a)
+#define IDirectDrawSurface7_ChangeUniquenessValue(p) (p)->lpVtbl->ChangeUniquenessValue(p)
+#define IDirectDrawSurface7_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirectDrawSurface7_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a)
+#define IDirectDrawSurface7_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
+#define IDirectDrawSurface7_GetLOD(p,a) (p)->lpVtbl->GetLOD(p,a)
+#else
+#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface7_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface7_Release(p) (p)->Release()
+#define IDirectDrawSurface7_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface7_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface7_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface7_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface7_GetCaps(p,b) (p)->GetCaps(b)
+#define IDirectDrawSurface7_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface7_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface7_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface7_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface7_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface7_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface7_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface7_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface7_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface7_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface7_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface7_Restore(p) (p)->Restore()
+#define IDirectDrawSurface7_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface7_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface7_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface7_Unlock(p,b) (p)->Unlock(b)
+#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface7_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface7_PageUnlock(p,a) (p)->PageUnlock(a)
+#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirectDrawSurface7_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirectDrawSurface7_GetUniquenessValue(p, a) (p)->GetUniquenessValue(a)
+#define IDirectDrawSurface7_ChangeUniquenessValue(p) (p)->ChangeUniquenessValue()
+#define IDirectDrawSurface7_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirectDrawSurface7_GetPriority(p,a) (p)->GetPriority(a)
+#define IDirectDrawSurface7_SetLOD(p,a) (p)->SetLOD(a)
+#define IDirectDrawSurface7_GetLOD(p,a) (p)->GetLOD(a)
+#endif
+
+
+/*
+ * IDirectDrawColorControl
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawColorControl
+DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawColorControl methods ***/
+ STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
+ STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDrawColorControl_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawColorControl_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawColorControl_GetColorControls(p, a) (p)->lpVtbl->GetColorControls(p, a)
+#define IDirectDrawColorControl_SetColorControls(p, a) (p)->lpVtbl->SetColorControls(p, a)
+#else
+#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDrawColorControl_AddRef(p) (p)->AddRef()
+#define IDirectDrawColorControl_Release(p) (p)->Release()
+#define IDirectDrawColorControl_GetColorControls(p, a) (p)->GetColorControls(a)
+#define IDirectDrawColorControl_SetColorControls(p, a) (p)->SetColorControls(a)
+#endif
+
+#endif
+
+
+/*
+ * IDirectDrawGammaControl
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawGammaControl
+DECLARE_INTERFACE_( IDirectDrawGammaControl, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawGammaControl methods ***/
+ STDMETHOD(GetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
+ STDMETHOD(SetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawGammaControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDrawGammaControl_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawGammaControl_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawGammaControl_GetGammaRamp(p, a, b) (p)->lpVtbl->GetGammaRamp(p, a, b)
+#define IDirectDrawGammaControl_SetGammaRamp(p, a, b) (p)->lpVtbl->SetGammaRamp(p, a, b)
+#else
+#define IDirectDrawGammaControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDrawGammaControl_AddRef(p) (p)->AddRef()
+#define IDirectDrawGammaControl_Release(p) (p)->Release()
+#define IDirectDrawGammaControl_GetGammaRamp(p, a, b) (p)->GetGammaRamp(a, b)
+#define IDirectDrawGammaControl_SetGammaRamp(p, a, b) (p)->SetGammaRamp(a, b)
+#endif
+
+#endif
+
+
+
+#endif
+
+
+/*
+ * DDSURFACEDESC
+ */
+typedef struct _DDSURFACEDESC
+{
+ DWORD dwSize; // size of the DDSURFACEDESC structure
+ DWORD dwFlags; // determines what fields are valid
+ DWORD dwHeight; // height of surface to be created
+ DWORD dwWidth; // width of input surface
+ union
+ {
+ LONG lPitch; // distance to start of next line (return value only)
+ DWORD dwLinearSize; // Formless late-allocated optimized surface size
+ } DUMMYUNIONNAMEN(1);
+ DWORD dwBackBufferCount; // number of back buffers requested
+ union
+ {
+ DWORD dwMipMapCount; // number of mip-map levels requested
+ DWORD dwZBufferBitDepth; // depth of Z buffer requested
+ DWORD dwRefreshRate; // refresh rate (used when display mode is described)
+ } DUMMYUNIONNAMEN(2);
+ DWORD dwAlphaBitDepth; // depth of alpha buffer requested
+ DWORD dwReserved; // reserved
+ LPVOID lpSurface; // pointer to the associated surface memory
+ DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use
+ DDCOLORKEY ddckCKDestBlt; // color key for destination blt use
+ DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use
+ DDCOLORKEY ddckCKSrcBlt; // color key for source blt use
+ DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface
+ DDSCAPS ddsCaps; // direct draw surface capabilities
+} DDSURFACEDESC;
+
+/*
+ * DDSURFACEDESC2
+ */
+typedef struct _DDSURFACEDESC2
+{
+ DWORD dwSize; // size of the DDSURFACEDESC structure
+ DWORD dwFlags; // determines what fields are valid
+ DWORD dwHeight; // height of surface to be created
+ DWORD dwWidth; // width of input surface
+ union
+ {
+ LONG lPitch; // distance to start of next line (return value only)
+ DWORD dwLinearSize; // Formless late-allocated optimized surface size
+ } DUMMYUNIONNAMEN(1);
+ union
+ {
+ DWORD dwBackBufferCount; // number of back buffers requested
+ DWORD dwDepth; // the depth if this is a volume texture
+ } DUMMYUNIONNAMEN(5);
+ union
+ {
+ DWORD dwMipMapCount; // number of mip-map levels requestde
+ // dwZBufferBitDepth removed, use ddpfPixelFormat one instead
+ DWORD dwRefreshRate; // refresh rate (used when display mode is described)
+ DWORD dwSrcVBHandle; // The source used in VB::Optimize
+ } DUMMYUNIONNAMEN(2);
+ DWORD dwAlphaBitDepth; // depth of alpha buffer requested
+ DWORD dwReserved; // reserved
+ LPVOID lpSurface; // pointer to the associated surface memory
+ union
+ {
+ DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use
+ DWORD dwEmptyFaceColor; // Physical color for empty cubemap faces
+ } DUMMYUNIONNAMEN(3);
+ DDCOLORKEY ddckCKDestBlt; // color key for destination blt use
+ DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use
+ DDCOLORKEY ddckCKSrcBlt; // color key for source blt use
+ union
+ {
+ DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface
+ DWORD dwFVF; // vertex format description of vertex buffers
+ } DUMMYUNIONNAMEN(4);
+ DDSCAPS2 ddsCaps; // direct draw surface capabilities
+ DWORD dwTextureStage; // stage in multitexture cascade
+} DDSURFACEDESC2;
+
+/*
+ * ddsCaps field is valid.
+ */
+#define DDSD_CAPS 0x00000001l // default
+
+/*
+ * dwHeight field is valid.
+ */
+#define DDSD_HEIGHT 0x00000002l
+
+/*
+ * dwWidth field is valid.
+ */
+#define DDSD_WIDTH 0x00000004l
+
+/*
+ * lPitch is valid.
+ */
+#define DDSD_PITCH 0x00000008l
+
+/*
+ * dwBackBufferCount is valid.
+ */
+#define DDSD_BACKBUFFERCOUNT 0x00000020l
+
+/*
+ * dwZBufferBitDepth is valid. (shouldnt be used in DDSURFACEDESC2)
+ */
+#define DDSD_ZBUFFERBITDEPTH 0x00000040l
+
+/*
+ * dwAlphaBitDepth is valid.
+ */
+#define DDSD_ALPHABITDEPTH 0x00000080l
+
+
+/*
+ * lpSurface is valid.
+ */
+#define DDSD_LPSURFACE 0x00000800l
+
+/*
+ * ddpfPixelFormat is valid.
+ */
+#define DDSD_PIXELFORMAT 0x00001000l
+
+/*
+ * ddckCKDestOverlay is valid.
+ */
+#define DDSD_CKDESTOVERLAY 0x00002000l
+
+/*
+ * ddckCKDestBlt is valid.
+ */
+#define DDSD_CKDESTBLT 0x00004000l
+
+/*
+ * ddckCKSrcOverlay is valid.
+ */
+#define DDSD_CKSRCOVERLAY 0x00008000l
+
+/*
+ * ddckCKSrcBlt is valid.
+ */
+#define DDSD_CKSRCBLT 0x00010000l
+
+/*
+ * dwMipMapCount is valid.
+ */
+#define DDSD_MIPMAPCOUNT 0x00020000l
+
+ /*
+ * dwRefreshRate is valid
+ */
+#define DDSD_REFRESHRATE 0x00040000l
+
+/*
+ * dwLinearSize is valid
+ */
+#define DDSD_LINEARSIZE 0x00080000l
+
+/*
+ * dwTextureStage is valid
+ */
+#define DDSD_TEXTURESTAGE 0x00100000l
+/*
+ * dwFVF is valid
+ */
+#define DDSD_FVF 0x00200000l
+/*
+ * dwSrcVBHandle is valid
+ */
+#define DDSD_SRCVBHANDLE 0x00400000l
+
+/*
+ * dwDepth is valid
+ */
+#define DDSD_DEPTH 0x00800000l
+
+/*
+ * All input fields are valid.
+ */
+#define DDSD_ALL 0x00fff9eel
+
+/*
+ * DDOPTSURFACEDESC
+ */
+typedef struct _DDOPTSURFACEDESC
+{
+ DWORD dwSize; // size of the DDOPTSURFACEDESC structure
+ DWORD dwFlags; // determines what fields are valid
+ DDSCAPS2 ddSCaps; // Common caps like: Memory type
+ DDOSCAPS ddOSCaps; // Common caps like: Memory type
+ GUID guid; // Compression technique GUID
+ DWORD dwCompressionRatio; // Compression ratio
+} DDOPTSURFACEDESC;
+
+/*
+ * guid field is valid.
+ */
+#define DDOSD_GUID 0x00000001l
+
+/*
+ * dwCompressionRatio field is valid.
+ */
+#define DDOSD_COMPRESSION_RATIO 0x00000002l
+
+/*
+ * ddSCaps field is valid.
+ */
+#define DDOSD_SCAPS 0x00000004l
+
+/*
+ * ddOSCaps field is valid.
+ */
+#define DDOSD_OSCAPS 0x00000008l
+
+/*
+ * All input fields are valid.
+ */
+#define DDOSD_ALL 0x0000000fl
+
+/*
+ * The surface's optimized pixelformat is compressed
+ */
+#define DDOSDCAPS_OPTCOMPRESSED 0x00000001l
+
+/*
+ * The surface's optimized pixelformat is reordered
+ */
+#define DDOSDCAPS_OPTREORDERED 0x00000002l
+
+/*
+ * The opt surface is a monolithic mipmap
+ */
+#define DDOSDCAPS_MONOLITHICMIPMAP 0x00000004l
+
+/*
+ * The valid Surf caps:
+ * #define DDSCAPS_SYSTEMMEMORY 0x00000800l
+ * #define DDSCAPS_VIDEOMEMORY 0x00004000l
+ * #define DDSCAPS_LOCALVIDMEM 0x10000000l
+ * #define DDSCAPS_NONLOCALVIDMEM 0x20000000l
+ */
+#define DDOSDCAPS_VALIDSCAPS 0x30004800l
+
+/*
+ * The valid OptSurf caps
+ */
+#define DDOSDCAPS_VALIDOSCAPS 0x00000007l
+
+
+/*
+ * DDCOLORCONTROL
+ */
+typedef struct _DDCOLORCONTROL
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ LONG lBrightness;
+ LONG lContrast;
+ LONG lHue;
+ LONG lSaturation;
+ LONG lSharpness;
+ LONG lGamma;
+ LONG lColorEnable;
+ DWORD dwReserved1;
+} DDCOLORCONTROL;
+
+
+/*
+ * lBrightness field is valid.
+ */
+#define DDCOLOR_BRIGHTNESS 0x00000001l
+
+/*
+ * lContrast field is valid.
+ */
+#define DDCOLOR_CONTRAST 0x00000002l
+
+/*
+ * lHue field is valid.
+ */
+#define DDCOLOR_HUE 0x00000004l
+
+/*
+ * lSaturation field is valid.
+ */
+#define DDCOLOR_SATURATION 0x00000008l
+
+/*
+ * lSharpness field is valid.
+ */
+#define DDCOLOR_SHARPNESS 0x00000010l
+
+/*
+ * lGamma field is valid.
+ */
+#define DDCOLOR_GAMMA 0x00000020l
+
+/*
+ * lColorEnable field is valid.
+ */
+#define DDCOLOR_COLORENABLE 0x00000040l
+
+
+
+/*============================================================================
+ *
+ * Direct Draw Capability Flags
+ *
+ * These flags are used to describe the capabilities of a given Surface.
+ * All flags are bit flags.
+ *
+ *==========================================================================*/
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * This bit is reserved. It should not be specified.
+ */
+#define DDSCAPS_RESERVED1 0x00000001l
+
+/*
+ * Indicates that this surface contains alpha-only information.
+ * (To determine if a surface is RGBA/YUVA, the pixel format must be
+ * interrogated.)
+ */
+#define DDSCAPS_ALPHA 0x00000002l
+
+/*
+ * Indicates that this surface is a backbuffer. It is generally
+ * set by CreateSurface when the DDSCAPS_FLIP capability bit is set.
+ * It indicates that this surface is THE back buffer of a surface
+ * flipping structure. DirectDraw supports N surfaces in a
+ * surface flipping structure. Only the surface that immediately
+ * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set.
+ * The other surfaces are identified as back buffers by the presence
+ * of the DDSCAPS_FLIP capability, their attachment order, and the
+ * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER
+ * capabilities. The bit is sent to CreateSurface when a standalone
+ * back buffer is being created. This surface could be attached to
+ * a front buffer and/or back buffers to form a flipping surface
+ * structure after the CreateSurface call. See AddAttachments for
+ * a detailed description of the behaviors in this case.
+ */
+#define DDSCAPS_BACKBUFFER 0x00000004l
+
+/*
+ * Indicates a complex surface structure is being described. A
+ * complex surface structure results in the creation of more than
+ * one surface. The additional surfaces are attached to the root
+ * surface. The complex structure can only be destroyed by
+ * destroying the root.
+ */
+#define DDSCAPS_COMPLEX 0x00000008l
+
+/*
+ * Indicates that this surface is a part of a surface flipping structure.
+ * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and
+ * DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface
+ * on the resulting creations. The dwBackBufferCount field in the
+ * DDSURFACEDESC structure must be set to at least 1 in order for
+ * the CreateSurface call to succeed. The DDSCAPS_COMPLEX capability
+ * must always be set with creating multiple surfaces through CreateSurface.
+ */
+#define DDSCAPS_FLIP 0x00000010l
+
+/*
+ * Indicates that this surface is THE front buffer of a surface flipping
+ * structure. It is generally set by CreateSurface when the DDSCAPS_FLIP
+ * capability bit is set.
+ * If this capability is sent to CreateSurface then a standalonw front buffer
+ * is created. This surface will not have the DDSCAPS_FLIP capability.
+ * It can be attached to other back buffers to form a flipping structure.
+ * See AddAttachments for a detailed description of the behaviors in this
+ * case.
+ */
+#define DDSCAPS_FRONTBUFFER 0x00000020l
+
+/*
+ * Indicates that this surface is any offscreen surface that is not an overlay,
+ * texture, zbuffer, front buffer, back buffer, or alpha surface. It is used
+ * to identify plain vanilla surfaces.
+ */
+#define DDSCAPS_OFFSCREENPLAIN 0x00000040l
+
+/*
+ * Indicates that this surface is an overlay. It may or may not be directly visible
+ * depending on whether or not it is currently being overlayed onto the primary
+ * surface. DDSCAPS_VISIBLE can be used to determine whether or not it is being
+ * overlayed at the moment.
+ */
+#define DDSCAPS_OVERLAY 0x00000080l
+
+/*
+ * Indicates that unique DirectDrawPalette objects can be created and
+ * attached to this surface.
+ */
+#define DDSCAPS_PALETTE 0x00000100l
+
+/*
+ * Indicates that this surface is the primary surface. The primary
+ * surface represents what the user is seeing at the moment.
+ */
+#define DDSCAPS_PRIMARYSURFACE 0x00000200l
+
+
+/*
+ * This flag used to be DDSCAPS_PRIMARYSURFACELEFT, which is now
+ * obsolete.
+ */
+#define DDSCAPS_RESERVED3 0x00000400l
+#define DDSCAPS_PRIMARYSURFACELEFT 0x00000000l
+
+/*
+ * Indicates that this surface memory was allocated in system memory
+ */
+#define DDSCAPS_SYSTEMMEMORY 0x00000800l
+
+/*
+ * Indicates that this surface can be used as a 3D texture. It does not
+ * indicate whether or not the surface is being used for that purpose.
+ */
+#define DDSCAPS_TEXTURE 0x00001000l
+
+/*
+ * Indicates that a surface may be a destination for 3D rendering. This
+ * bit must be set in order to query for a Direct3D Device Interface
+ * from this surface.
+ */
+#define DDSCAPS_3DDEVICE 0x00002000l
+
+/*
+ * Indicates that this surface exists in video memory.
+ */
+#define DDSCAPS_VIDEOMEMORY 0x00004000l
+
+/*
+ * Indicates that changes made to this surface are immediately visible.
+ * It is always set for the primary surface and is set for overlays while
+ * they are being overlayed and texture maps while they are being textured.
+ */
+#define DDSCAPS_VISIBLE 0x00008000l
+
+/*
+ * Indicates that only writes are permitted to the surface. Read accesses
+ * from the surface may or may not generate a protection fault, but the
+ * results of a read from this surface will not be meaningful. READ ONLY.
+ */
+#define DDSCAPS_WRITEONLY 0x00010000l
+
+/*
+ * Indicates that this surface is a z buffer. A z buffer does not contain
+ * displayable information. Instead it contains bit depth information that is
+ * used to determine which pixels are visible and which are obscured.
+ */
+#define DDSCAPS_ZBUFFER 0x00020000l
+
+/*
+ * Indicates surface will have a DC associated long term
+ */
+#define DDSCAPS_OWNDC 0x00040000l
+
+/*
+ * Indicates surface should be able to receive live video
+ */
+#define DDSCAPS_LIVEVIDEO 0x00080000l
+
+/*
+ * Indicates surface should be able to have a stream decompressed
+ * to it by the hardware.
+ */
+#define DDSCAPS_HWCODEC 0x00100000l
+
+/*
+ * Surface is a ModeX surface.
+ *
+ */
+#define DDSCAPS_MODEX 0x00200000l
+
+/*
+ * Indicates surface is one level of a mip-map. This surface will
+ * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map.
+ * This can be done explicitly, by creating a number of surfaces and
+ * attaching them with AddAttachedSurface or by implicitly by CreateSurface.
+ * If this bit is set then DDSCAPS_TEXTURE must also be set.
+ */
+#define DDSCAPS_MIPMAP 0x00400000l
+
+/*
+ * This bit is reserved. It should not be specified.
+ */
+#define DDSCAPS_RESERVED2 0x00800000l
+
+
+/*
+ * Indicates that memory for the surface is not allocated until the surface
+ * is loaded (via the Direct3D texture Load() function).
+ */
+#define DDSCAPS_ALLOCONLOAD 0x04000000l
+
+/*
+ * Indicates that the surface will recieve data from a video port.
+ */
+#define DDSCAPS_VIDEOPORT 0x08000000l
+
+/*
+ * Indicates that a video memory surface is resident in true, local video
+ * memory rather than non-local video memory. If this flag is specified then
+ * so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
+ * DDSCAPS_NONLOCALVIDMEM.
+ */
+#define DDSCAPS_LOCALVIDMEM 0x10000000l
+
+/*
+ * Indicates that a video memory surface is resident in non-local video
+ * memory rather than true, local video memory. If this flag is specified
+ * then so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
+ * DDSCAPS_LOCALVIDMEM.
+ */
+#define DDSCAPS_NONLOCALVIDMEM 0x20000000l
+
+/*
+ * Indicates that this surface is a standard VGA mode surface, and not a
+ * ModeX surface. (This flag will never be set in combination with the
+ * DDSCAPS_MODEX flag).
+ */
+#define DDSCAPS_STANDARDVGAMODE 0x40000000l
+
+/*
+ * Indicates that this surface will be an optimized surface. This flag is
+ * currently only valid in conjunction with the DDSCAPS_TEXTURE flag. The surface
+ * will be created without any underlying video memory until loaded.
+ */
+#define DDSCAPS_OPTIMIZED 0x80000000l
+
+
+
+/*
+ * This bit is reserved
+ */
+#define DDSCAPS2_RESERVED4 0x00000002L
+#define DDSCAPS2_HARDWAREDEINTERLACE 0x00000000L
+
+/*
+ * Indicates to the driver that this surface will be locked very frequently
+ * (for procedural textures, dynamic lightmaps, etc). Surfaces with this cap
+ * set must also have DDSCAPS_TEXTURE. This cap cannot be used with
+ * DDSCAPS2_HINTSTATIC and DDSCAPS2_OPAQUE.
+ */
+#define DDSCAPS2_HINTDYNAMIC 0x00000004L
+
+/*
+ * Indicates to the driver that this surface can be re-ordered/retiled on
+ * load. This operation will not change the size of the texture. It is
+ * relatively fast and symmetrical, since the application may lock these
+ * bits (although it will take a performance hit when doing so). Surfaces
+ * with this cap set must also have DDSCAPS_TEXTURE. This cap cannot be
+ * used with DDSCAPS2_HINTDYNAMIC and DDSCAPS2_OPAQUE.
+ */
+#define DDSCAPS2_HINTSTATIC 0x00000008L
+
+/*
+ * Indicates that the client would like this texture surface to be managed by the
+ * DirectDraw/Direct3D runtime. Surfaces with this cap set must also have
+ * DDSCAPS_TEXTURE set.
+ */
+#define DDSCAPS2_TEXTUREMANAGE 0x00000010L
+
+/*
+ * These bits are reserved for internal use */
+#define DDSCAPS2_RESERVED1 0x00000020L
+#define DDSCAPS2_RESERVED2 0x00000040L
+
+/*
+ * Indicates to the driver that this surface will never be locked again.
+ * The driver is free to optimize this surface via retiling and actual compression.
+ * All calls to Lock() or Blts from this surface will fail. Surfaces with this
+ * cap set must also have DDSCAPS_TEXTURE. This cap cannot be used with
+ * DDSCAPS2_HINTDYNAMIC and DDSCAPS2_HINTSTATIC.
+ */
+#define DDSCAPS2_OPAQUE 0x00000080L
+
+/*
+ * Applications should set this bit at CreateSurface time to indicate that they
+ * intend to use antialiasing. Only valid if DDSCAPS_3DDEVICE is also set.
+ */
+#define DDSCAPS2_HINTANTIALIASING 0x00000100L
+
+
+/*
+ * This flag is used at CreateSurface time to indicate that this set of
+ * surfaces is a cubic environment map
+ */
+#define DDSCAPS2_CUBEMAP 0x00000200L
+
+/*
+ * These flags preform two functions:
+ * - At CreateSurface time, they define which of the six cube faces are
+ * required by the application.
+ * - After creation, each face in the cubemap will have exactly one of these
+ * bits set.
+ */
+#define DDSCAPS2_CUBEMAP_POSITIVEX 0x00000400L
+#define DDSCAPS2_CUBEMAP_NEGATIVEX 0x00000800L
+#define DDSCAPS2_CUBEMAP_POSITIVEY 0x00001000L
+#define DDSCAPS2_CUBEMAP_NEGATIVEY 0x00002000L
+#define DDSCAPS2_CUBEMAP_POSITIVEZ 0x00004000L
+#define DDSCAPS2_CUBEMAP_NEGATIVEZ 0x00008000L
+
+/*
+ * This macro may be used to specify all faces of a cube map at CreateSurface time
+ */
+#define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\
+ DDSCAPS2_CUBEMAP_NEGATIVEX |\
+ DDSCAPS2_CUBEMAP_POSITIVEY |\
+ DDSCAPS2_CUBEMAP_NEGATIVEY |\
+ DDSCAPS2_CUBEMAP_POSITIVEZ |\
+ DDSCAPS2_CUBEMAP_NEGATIVEZ )
+
+
+/*
+ * This flag is an additional flag which is present on mipmap sublevels from DX7 onwards
+ * It enables easier use of GetAttachedSurface rather than EnumAttachedSurfaces for surface
+ * constructs such as Cube Maps, wherein there are more than one mipmap surface attached
+ * to the root surface.
+ * This caps bit is ignored by CreateSurface
+ */
+#define DDSCAPS2_MIPMAPSUBLEVEL 0x00010000L
+
+/* This flag indicates that the texture should be managed by D3D only */
+#define DDSCAPS2_D3DTEXTUREMANAGE 0x00020000L
+
+/* This flag indicates that the managed surface can be safely lost */
+#define DDSCAPS2_DONOTPERSIST 0x00040000L
+
+/* indicates that this surface is part of a stereo flipping chain */
+#define DDSCAPS2_STEREOSURFACELEFT 0x00080000L
+
+
+/*
+ * Indicates that the surface is a volume.
+ * Can be combined with DDSCAPS_MIPMAP to indicate a multi-level volume
+ */
+#define DDSCAPS2_VOLUME 0x00200000L
+
+/*
+ * Indicates that the surface may be locked multiple times by the application.
+ * This cap cannot be used with DDSCAPS2_OPAQUE.
+ */
+#define DDSCAPS2_NOTUSERLOCKABLE 0x00400000L
+
+/*
+ * Indicates that the vertex buffer data can be used to render points and
+ * point sprites.
+ */
+#define DDSCAPS2_POINTS 0x00800000L
+
+/*
+ * Indicates that the vertex buffer data can be used to render rt pactches.
+ */
+#define DDSCAPS2_RTPATCHES 0x01000000L
+
+/*
+ * Indicates that the vertex buffer data can be used to render n patches.
+ */
+#define DDSCAPS2_NPATCHES 0x02000000L
+
+/*
+ * This bit is reserved for internal use
+ */
+#define DDSCAPS2_RESERVED3 0x04000000L
+
+
+/*
+ * Indicates that the contents of the backbuffer do not have to be preserved
+ * the contents of the backbuffer after they are presented.
+ */
+#define DDSCAPS2_DISCARDBACKBUFFER 0x10000000L
+
+/*
+ * Indicates that all surfaces in this creation chain should be given an alpha channel.
+ * This flag will be set on primary surface chains that may have no explicit pixel format
+ * (and thus take on the format of the current display mode).
+ * The driver should infer that all these surfaces have a format having an alpha channel.
+ * (e.g. assume D3DFMT_A8R8G8B8 if the display mode is x888.)
+ */
+#define DDSCAPS2_ENABLEALPHACHANNEL 0x20000000L
+
+/*
+ * Indicates that all surfaces in this creation chain is extended primary surface format.
+ * This flag will be set on extended primary surface chains that always have explicit pixel
+ * format and the pixel format is typically GDI (Graphics Device Interface) couldn't handle,
+ * thus only used with fullscreen application. (e.g. D3DFMT_A2R10G10B10 format)
+ */
+#define DDSCAPS2_EXTENDEDFORMATPRIMARY 0x40000000L
+
+/*
+ * Indicates that all surfaces in this creation chain is additional primary surface.
+ * This flag will be set on primary surface chains which must present on the adapter
+ * id provided on dwCaps4. Typically this will be used to create secondary primary surface
+ * on DualView display adapter.
+ */
+#define DDSCAPS2_ADDITIONALPRIMARY 0x80000000L
+
+/*
+ * This is a mask that indicates the set of bits that may be set
+ * at createsurface time to indicate number of samples per pixel
+ * when multisampling
+ */
+#define DDSCAPS3_MULTISAMPLE_MASK 0x0000001FL
+
+/*
+ * This is a mask that indicates the set of bits that may be set
+ * at createsurface time to indicate the quality level of rendering
+ * for the current number of samples per pixel
+ */
+#define DDSCAPS3_MULTISAMPLE_QUALITY_MASK 0x000000E0L
+#define DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT 5
+
+/*
+ * This bit is reserved for internal use
+ */
+#define DDSCAPS3_RESERVED1 0x00000100L
+
+/*
+ * This bit is reserved for internal use
+ */
+#define DDSCAPS3_RESERVED2 0x00000200L
+
+/*
+ * This indicates whether this surface has light-weight miplevels
+ */
+#define DDSCAPS3_LIGHTWEIGHTMIPMAP 0x00000400L
+
+/*
+ * This indicates that the mipsublevels for this surface are auto-generated
+ */
+#define DDSCAPS3_AUTOGENMIPMAP 0x00000800L
+
+/*
+ * This indicates that the mipsublevels for this surface are auto-generated
+ */
+#define DDSCAPS3_DMAP 0x00001000L
+
+/* D3D9Ex only -- */
+#if !defined(D3D_DISABLE_9EX)
+
+/*
+ * This indicates that this surface is to be shared by processes
+ */
+#define DDSCAPS3_CREATESHAREDRESOURCE 0x00002000L
+
+/*
+ * This indicates that this surface need to be initialized before being
+ * shared, this bit implies that this surface is read only after initialization
+ * absence of this bit implies that this surface allows both read and write
+ */
+#define DDSCAPS3_READONLYRESOURCE 0x00004000L
+
+/*
+ * This indicates that this surface is to share an existing video memory with
+ * another surface created with DDSCAPS3_CREATESHAREDRESOURCE, This bit is never
+ * used with DDSCAPS3_CREATESHAREDRESOURCE
+ */
+#define DDSCAPS3_OPENSHAREDRESOURCE 0x00008000L
+
+#endif // !D3D_DISABLE_9EX
+/* -- D3D9Ex only */
+
+
+ /****************************************************************************
+ *
+ * DIRECTDRAW DRIVER CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Display hardware has 3D acceleration.
+ */
+#define DDCAPS_3D 0x00000001l
+
+/*
+ * Indicates that DirectDraw will support only dest rectangles that are aligned
+ * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively.
+ * READ ONLY.
+ */
+#define DDCAPS_ALIGNBOUNDARYDEST 0x00000002l
+
+/*
+ * Indicates that DirectDraw will support only source rectangles whose sizes in
+ * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively. READ ONLY.
+ */
+#define DDCAPS_ALIGNSIZEDEST 0x00000004l
+/*
+ * Indicates that DirectDraw will support only source rectangles that are aligned
+ * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively.
+ * READ ONLY.
+ */
+#define DDCAPS_ALIGNBOUNDARYSRC 0x00000008l
+
+/*
+ * Indicates that DirectDraw will support only source rectangles whose sizes in
+ * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively. READ ONLY.
+ */
+#define DDCAPS_ALIGNSIZESRC 0x00000010l
+
+/*
+ * Indicates that DirectDraw will create video memory surfaces that have a stride
+ * alignment equal to DIRECTDRAWCAPS.dwAlignStride. READ ONLY.
+ */
+#define DDCAPS_ALIGNSTRIDE 0x00000020l
+
+/*
+ * Display hardware is capable of blt operations.
+ */
+#define DDCAPS_BLT 0x00000040l
+
+/*
+ * Display hardware is capable of asynchronous blt operations.
+ */
+#define DDCAPS_BLTQUEUE 0x00000080l
+
+/*
+ * Display hardware is capable of color space conversions during the blt operation.
+ */
+#define DDCAPS_BLTFOURCC 0x00000100l
+
+/*
+ * Display hardware is capable of stretching during blt operations.
+ */
+#define DDCAPS_BLTSTRETCH 0x00000200l
+
+/*
+ * Display hardware is shared with GDI.
+ */
+#define DDCAPS_GDI 0x00000400l
+
+/*
+ * Display hardware can overlay.
+ */
+#define DDCAPS_OVERLAY 0x00000800l
+
+/*
+ * Set if display hardware supports overlays but can not clip them.
+ */
+#define DDCAPS_OVERLAYCANTCLIP 0x00001000l
+
+/*
+ * Indicates that overlay hardware is capable of color space conversions during
+ * the overlay operation.
+ */
+#define DDCAPS_OVERLAYFOURCC 0x00002000l
+
+/*
+ * Indicates that stretching can be done by the overlay hardware.
+ */
+#define DDCAPS_OVERLAYSTRETCH 0x00004000l
+
+/*
+ * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces
+ * other than the primary surface.
+ */
+#define DDCAPS_PALETTE 0x00008000l
+
+/*
+ * Indicates that palette changes can be syncd with the veritcal refresh.
+ */
+#define DDCAPS_PALETTEVSYNC 0x00010000l
+
+/*
+ * Display hardware can return the current scan line.
+ */
+#define DDCAPS_READSCANLINE 0x00020000l
+
+
+/*
+ * This flag used to bo DDCAPS_STEREOVIEW, which is now obsolete
+ */
+#define DDCAPS_RESERVED1 0x00040000l
+
+/*
+ * Display hardware is capable of generating a vertical blank interrupt.
+ */
+#define DDCAPS_VBI 0x00080000l
+
+/*
+ * Supports the use of z buffers with blt operations.
+ */
+#define DDCAPS_ZBLTS 0x00100000l
+
+/*
+ * Supports Z Ordering of overlays.
+ */
+#define DDCAPS_ZOVERLAYS 0x00200000l
+
+/*
+ * Supports color key
+ */
+#define DDCAPS_COLORKEY 0x00400000l
+
+/*
+ * Supports alpha surfaces
+ */
+#define DDCAPS_ALPHA 0x00800000l
+
+/*
+ * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set)
+ */
+#define DDCAPS_COLORKEYHWASSIST 0x01000000l
+
+/*
+ * no hardware support at all
+ */
+#define DDCAPS_NOHARDWARE 0x02000000l
+
+/*
+ * Display hardware is capable of color fill with bltter
+ */
+#define DDCAPS_BLTCOLORFILL 0x04000000l
+
+/*
+ * Display hardware is bank switched, and potentially very slow at
+ * random access to VRAM.
+ */
+#define DDCAPS_BANKSWITCHED 0x08000000l
+
+/*
+ * Display hardware is capable of depth filling Z-buffers with bltter
+ */
+#define DDCAPS_BLTDEPTHFILL 0x10000000l
+
+/*
+ * Display hardware is capable of clipping while bltting.
+ */
+#define DDCAPS_CANCLIP 0x20000000l
+
+/*
+ * Display hardware is capable of clipping while stretch bltting.
+ */
+#define DDCAPS_CANCLIPSTRETCHED 0x40000000l
+
+/*
+ * Display hardware is capable of bltting to or from system memory
+ */
+#define DDCAPS_CANBLTSYSMEM 0x80000000l
+
+
+ /****************************************************************************
+ *
+ * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2)
+ *
+ ****************************************************************************/
+
+/*
+ * Display hardware is certified
+ */
+#define DDCAPS2_CERTIFIED 0x00000001l
+
+/*
+ * Driver cannot interleave 2D operations (lock and blt) to surfaces with
+ * Direct3D rendering operations between calls to BeginScene() and EndScene()
+ */
+#define DDCAPS2_NO2DDURING3DSCENE 0x00000002l
+
+/*
+ * Display hardware contains a video port
+ */
+#define DDCAPS2_VIDEOPORT 0x00000004l
+
+/*
+ * The overlay can be automatically flipped according to the video port
+ * VSYNCs, providing automatic doubled buffered display of video port
+ * data using an overlay
+ */
+#define DDCAPS2_AUTOFLIPOVERLAY 0x00000008l
+
+/*
+ * Overlay can display each field of interlaced data individually while
+ * it is interleaved in memory without causing jittery artifacts.
+ */
+#define DDCAPS2_CANBOBINTERLEAVED 0x00000010l
+
+/*
+ * Overlay can display each field of interlaced data individually while
+ * it is not interleaved in memory without causing jittery artifacts.
+ */
+#define DDCAPS2_CANBOBNONINTERLEAVED 0x00000020l
+
+/*
+ * The overlay surface contains color controls (brightness, sharpness, etc.)
+ */
+#define DDCAPS2_COLORCONTROLOVERLAY 0x00000040l
+
+/*
+ * The primary surface contains color controls (gamma, etc.)
+ */
+#define DDCAPS2_COLORCONTROLPRIMARY 0x00000080l
+
+/*
+ * RGBZ -> RGB supported for 16:16 RGB:Z
+ */
+#define DDCAPS2_CANDROPZ16BIT 0x00000100l
+
+/*
+ * Driver supports non-local video memory.
+ */
+#define DDCAPS2_NONLOCALVIDMEM 0x00000200l
+
+/*
+ * Dirver supports non-local video memory but has different capabilities for
+ * non-local video memory surfaces. If this bit is set then so must
+ * DDCAPS2_NONLOCALVIDMEM.
+ */
+#define DDCAPS2_NONLOCALVIDMEMCAPS 0x00000400l
+
+/*
+ * Driver neither requires nor prefers surfaces to be pagelocked when performing
+ * blts involving system memory surfaces
+ */
+#define DDCAPS2_NOPAGELOCKREQUIRED 0x00000800l
+
+/*
+ * Driver can create surfaces which are wider than the primary surface
+ */
+#define DDCAPS2_WIDESURFACES 0x00001000l
+
+/*
+ * Driver supports bob without using a video port by handling the
+ * DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip.
+ */
+#define DDCAPS2_CANFLIPODDEVEN 0x00002000l
+
+/*
+ * Driver supports bob using hardware
+ */
+#define DDCAPS2_CANBOBHARDWARE 0x00004000l
+
+/*
+ * Driver supports bltting any FOURCC surface to another surface of the same FOURCC
+ */
+#define DDCAPS2_COPYFOURCC 0x00008000l
+
+
+/*
+ * Driver supports loadable gamma ramps for the primary surface
+ */
+#define DDCAPS2_PRIMARYGAMMA 0x00020000l
+
+/*
+ * Driver can render in windowed mode.
+ */
+#define DDCAPS2_CANRENDERWINDOWED 0x00080000l
+
+/*
+ * A calibrator is available to adjust the gamma ramp according to the
+ * physical display properties so that the result will be identical on
+ * all calibrated systems.
+ */
+#define DDCAPS2_CANCALIBRATEGAMMA 0x00100000l
+
+/*
+ * Indicates that the driver will respond to DDFLIP_INTERVALn flags
+ */
+#define DDCAPS2_FLIPINTERVAL 0x00200000l
+
+/*
+ * Indicates that the driver will respond to DDFLIP_NOVSYNC
+ */
+#define DDCAPS2_FLIPNOVSYNC 0x00400000l
+
+/*
+ * Driver supports management of video memory, if this flag is ON,
+ * driver manages the texture if requested with DDSCAPS2_TEXTUREMANAGE on
+ * DirectX manages the texture if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on
+ */
+#define DDCAPS2_CANMANAGETEXTURE 0x00800000l
+
+/*
+ * The Direct3D texture manager uses this cap to decide whether to put managed
+ * surfaces in non-local video memory. If the cap is set, the texture manager will
+ * put managed surfaces in non-local vidmem. Drivers that cannot texture from
+ * local vidmem SHOULD NOT set this cap.
+ */
+#define DDCAPS2_TEXMANINNONLOCALVIDMEM 0x01000000l
+
+/*
+ * Indicates that the driver supports DX7 type of stereo in at least one mode (which may
+ * not necessarily be the current mode). Applications should use IDirectDraw7 (or higher)
+ * ::EnumDisplayModes and check the DDSURFACEDESC.ddsCaps.dwCaps2 field for the presence of
+ * DDSCAPS2_STEREOSURFACELEFT to check if a particular mode supports stereo. The application
+ * can also use IDirectDraw7(or higher)::GetDisplayMode to check the current mode.
+ */
+#define DDCAPS2_STEREO 0x02000000L
+
+/*
+ * This caps bit is intended for internal DirectDraw use.
+ * -It is only valid if DDCAPS2_NONLOCALVIDMEMCAPS is set.
+ * -If this bit is set, then DDCAPS_CANBLTSYSMEM MUST be set by the driver (and
+ * all the assoicated system memory blt caps must be correct).
+ * -It implies that the system->video blt caps in DDCAPS also apply to system to
+ * nonlocal blts. I.e. the dwSVBCaps, dwSVBCKeyCaps, dwSVBFXCaps and dwSVBRops
+ * members of DDCAPS (DDCORECAPS) are filled in correctly.
+ * -Any blt from system to nonlocal memory that matches these caps bits will
+ * be passed to the driver.
+ *
+ * NOTE: This is intended to enable the driver itself to do efficient reordering
+ * of textures. This is NOT meant to imply that hardware can write into AGP memory.
+ * This operation is not currently supported.
+ */
+#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL 0x04000000L
+
+/*
+ * was DDCAPS2_PUREHAL
+ */
+#define DDCAPS2_RESERVED1 0x08000000L
+
+/*
+ * Driver supports management of video memory, if this flag is ON,
+ * driver manages the resource if requested with DDSCAPS2_TEXTUREMANAGE on
+ * DirectX manages the resource if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on
+ */
+#define DDCAPS2_CANMANAGERESOURCE 0x10000000L
+
+/*
+ * Driver supports dynamic textures. This will allow the application to set
+ * D3DUSAGE_DYNAMIC (DDSCAPS2_HINTDYNAMIC for drivers) at texture create time.
+ * Video memory dynamic textures WILL be lockable by applications. It is
+ * expected that these locks will be very efficient (which implies that the
+ * driver should always maintain a linear copy, a pointer to which can be
+ * quickly handed out to the application).
+ */
+#define DDCAPS2_DYNAMICTEXTURES 0x20000000L
+
+/*
+ * Driver supports auto-generation of mipmaps.
+ */
+#define DDCAPS2_CANAUTOGENMIPMAP 0x40000000L
+
+/* D3D9Ex only -- */
+#if !defined(D3D_DISABLE_9EX)
+
+/*
+ * Driver supports sharing of cross process resouces
+ */
+#define DDCAPS2_CANSHARERESOURCE 0x80000000L
+
+#endif // !D3D_DISABLE_9EX
+/* -- D3D9Ex only */
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW FX ALPHA CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Supports alpha blending around the edge of a source color keyed surface.
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHAEDGEBLEND 0x00000001l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
+ * more opaque as the alpha value increases. (0 is transparent.)
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHAPIXELS 0x00000002l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value
+ * becomes more transparent as the alpha value increases. (0 is opaque.)
+ * This flag can only be set if DDCAPS_ALPHA is set.
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHAPIXELSNEG 0x00000004l
+
+/*
+ * Supports alpha only surfaces. The bit depth of an alpha only surface can be
+ * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases.
+ * (0 is transparent.)
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHASURFACES 0x00000008l
+
+/*
+ * The depth of the alpha channel data can range can be 1,2,4, or 8.
+ * The NEG suffix indicates that this alpha channel becomes more transparent
+ * as the alpha value increases. (0 is opaque.) This flag can only be set if
+ * DDCAPS_ALPHA is set.
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHASURFACESNEG 0x00000010l
+
+/*
+ * Supports alpha blending around the edge of a source color keyed surface.
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND 0x00000020l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
+ * more opaque as the alpha value increases. (0 is transparent.)
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHAPIXELS 0x00000040l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value
+ * becomes more transparent as the alpha value increases. (0 is opaque.)
+ * This flag can only be set if DDCAPS_ALPHA is set.
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG 0x00000080l
+
+/*
+ * Supports alpha only surfaces. The bit depth of an alpha only surface can be
+ * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases.
+ * (0 is transparent.)
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHASURFACES 0x00000100l
+
+/*
+ * The depth of the alpha channel data can range can be 1,2,4, or 8.
+ * The NEG suffix indicates that this alpha channel becomes more transparent
+ * as the alpha value increases. (0 is opaque.) This flag can only be set if
+ * DDCAPS_ALPHA is set.
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG 0x00000200l
+
+#if DIRECTDRAW_VERSION < 0x0600
+#endif //DIRECTDRAW_VERSION
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW FX CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Uses arithmetic operations to stretch and shrink surfaces during blt
+ * rather than pixel doubling techniques. Along the Y axis.
+ */
+#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020l
+
+/*
+ * Uses arithmetic operations to stretch during blt
+ * rather than pixel doubling techniques. Along the Y axis. Only
+ * works for x1, x2, etc.
+ */
+#define DDFXCAPS_BLTARITHSTRETCHYN 0x00000010l
+
+/*
+ * Supports mirroring left to right in blt.
+ */
+#define DDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040l
+
+/*
+ * Supports mirroring top to bottom in blt.
+ */
+#define DDFXCAPS_BLTMIRRORUPDOWN 0x00000080l
+
+/*
+ * Supports arbitrary rotation for blts.
+ */
+#define DDFXCAPS_BLTROTATION 0x00000100l
+
+/*
+ * Supports 90 degree rotations for blts.
+ */
+#define DDFXCAPS_BLTROTATION90 0x00000200l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKX 0x00000400l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKXN 0x00000800l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * y axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKY 0x00001000l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the y axis (vertical direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKYN 0x00002000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHX 0x00004000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHXN 0x00008000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * y axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHY 0x00010000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the y axis (vertical direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHYN 0x00020000l
+
+/*
+ * Uses arithmetic operations to stretch and shrink surfaces during
+ * overlay rather than pixel doubling techniques. Along the Y axis
+ * for overlays.
+ */
+#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000l
+
+/*
+ * Uses arithmetic operations to stretch surfaces during
+ * overlay rather than pixel doubling techniques. Along the Y axis
+ * for overlays. Only works for x1, x2, etc.
+ */
+#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKX 0x00080000l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKXN 0x00100000l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * y axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKY 0x00200000l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the y axis (vertical direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKYN 0x00400000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHX 0x00800000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHXN 0x01000000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * y axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHY 0x02000000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the y axis (vertical direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHYN 0x04000000l
+
+/*
+ * DirectDraw supports mirroring of overlays across the vertical axis
+ */
+#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l
+
+/*
+ * DirectDraw supports mirroring of overlays across the horizontal axis
+ */
+#define DDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000l
+
+/*
+ * DirectDraw supports deinterlacing of overlay surfaces
+ */
+#define DDFXCAPS_OVERLAYDEINTERLACE 0x20000000l
+
+/*
+ * Driver can do alpha blending for blits.
+ */
+#define DDFXCAPS_BLTALPHA 0x00000001l
+
+
+/*
+ * Driver can do surface-reconstruction filtering for warped blits.
+ */
+#define DDFXCAPS_BLTFILTER DDFXCAPS_BLTARITHSTRETCHY
+
+/*
+ * Driver can do alpha blending for overlays.
+ */
+#define DDFXCAPS_OVERLAYALPHA 0x00000004l
+
+
+/*
+ * Driver can do surface-reconstruction filtering for warped overlays.
+ */
+#define DDFXCAPS_OVERLAYFILTER DDFXCAPS_OVERLAYARITHSTRETCHY
+
+/****************************************************************************
+ *
+ * DIRECTDRAW STEREO VIEW CAPABILITIES
+ *
+ ****************************************************************************/
+
+/*
+ * This flag used to be DDSVCAPS_ENIGMA, which is now obsolete
+ */
+
+#define DDSVCAPS_RESERVED1 0x00000001l
+
+/*
+ * This flag used to be DDSVCAPS_FLICKER, which is now obsolete
+ */
+#define DDSVCAPS_RESERVED2 0x00000002l
+
+/*
+ * This flag used to be DDSVCAPS_REDBLUE, which is now obsolete
+ */
+#define DDSVCAPS_RESERVED3 0x00000004l
+
+/*
+ * This flag used to be DDSVCAPS_SPLIT, which is now obsolete
+ */
+#define DDSVCAPS_RESERVED4 0x00000008l
+
+/*
+ * The stereo view is accomplished with switching technology
+ */
+
+#define DDSVCAPS_STEREOSEQUENTIAL 0x00000010L
+
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWPALETTE CAPABILITIES
+ *
+ ****************************************************************************/
+
+/*
+ * Index is 4 bits. There are sixteen color entries in the palette table.
+ */
+#define DDPCAPS_4BIT 0x00000001l
+
+/*
+ * Index is onto a 8 bit color index. This field is only valid with the
+ * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target
+ * surface is in 8bpp. Each color entry is one byte long and is an index
+ * into destination surface's 8bpp palette.
+ */
+#define DDPCAPS_8BITENTRIES 0x00000002l
+
+/*
+ * Index is 8 bits. There are 256 color entries in the palette table.
+ */
+#define DDPCAPS_8BIT 0x00000004l
+
+/*
+ * Indicates that this DIRECTDRAWPALETTE should use the palette color array
+ * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE
+ * object.
+ * This flag is obsolete. DirectDraw always initializes the color array from
+ * the lpDDColorArray parameter. The definition remains for source-level
+ * compatibility.
+ */
+#define DDPCAPS_INITIALIZE 0x00000000l
+
+/*
+ * This palette is the one attached to the primary surface. Changing this
+ * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified
+ * and supported.
+ */
+#define DDPCAPS_PRIMARYSURFACE 0x00000010l
+
+/*
+ * This palette is the one attached to the primary surface left. Changing
+ * this table has immediate effect on the display for the left eye unless
+ * DDPSETPAL_VSYNC is specified and supported.
+ */
+#define DDPCAPS_PRIMARYSURFACELEFT 0x00000020l
+
+/*
+ * This palette can have all 256 entries defined
+ */
+#define DDPCAPS_ALLOW256 0x00000040l
+
+/*
+ * This palette can have modifications to it synced with the monitors
+ * refresh rate.
+ */
+#define DDPCAPS_VSYNC 0x00000080l
+
+/*
+ * Index is 1 bit. There are two color entries in the palette table.
+ */
+#define DDPCAPS_1BIT 0x00000100l
+
+/*
+ * Index is 2 bit. There are four color entries in the palette table.
+ */
+#define DDPCAPS_2BIT 0x00000200l
+
+/*
+ * The peFlags member of PALETTEENTRY denotes an 8 bit alpha value
+ */
+#define DDPCAPS_ALPHA 0x00000400l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWPALETTE SETENTRY CONSTANTS
+ *
+ ****************************************************************************/
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWPALETTE GETENTRY CONSTANTS
+ *
+ ****************************************************************************/
+
+/* 0 is the only legal value */
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE SETPRIVATEDATA CONSTANTS
+ *
+ ****************************************************************************/
+
+/*
+ * The passed pointer is an IUnknown ptr. The cbData argument to SetPrivateData
+ * must be set to sizeof(IUnknown*). DirectDraw will call AddRef through this
+ * pointer and Release when the private data is destroyed. This includes when
+ * the surface or palette is destroyed before such priovate data is destroyed.
+ */
+#define DDSPD_IUNKNOWNPOINTER 0x00000001L
+
+/*
+ * Private data is only valid for the current state of the object,
+ * as determined by the uniqueness value.
+ */
+#define DDSPD_VOLATILE 0x00000002L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE SETPALETTE CONSTANTS
+ *
+ ****************************************************************************/
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW BITDEPTH CONSTANTS
+ *
+ * NOTE: These are only used to indicate supported bit depths. These
+ * are flags only, they are not to be used as an actual bit depth. The
+ * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual
+ * bit depths in a surface or for changing the display mode.
+ *
+ ****************************************************************************/
+
+/*
+ * 1 bit per pixel.
+ */
+#define DDBD_1 0x00004000l
+
+/*
+ * 2 bits per pixel.
+ */
+#define DDBD_2 0x00002000l
+
+/*
+ * 4 bits per pixel.
+ */
+#define DDBD_4 0x00001000l
+
+/*
+ * 8 bits per pixel.
+ */
+#define DDBD_8 0x00000800l
+
+/*
+ * 16 bits per pixel.
+ */
+#define DDBD_16 0x00000400l
+
+/*
+ * 24 bits per pixel.
+ */
+#define DDBD_24 0X00000200l
+
+/*
+ * 32 bits per pixel.
+ */
+#define DDBD_32 0x00000100l
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Set if the structure contains a color space. Not set if the structure
+ * contains a single color key.
+ */
+#define DDCKEY_COLORSPACE 0x00000001l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a destination color key for blt operations.
+ */
+#define DDCKEY_DESTBLT 0x00000002l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a destination color key for overlay operations.
+ */
+#define DDCKEY_DESTOVERLAY 0x00000004l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a source color key for blt operations.
+ */
+#define DDCKEY_SRCBLT 0x00000008l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a source color key for overlay operations.
+ */
+#define DDCKEY_SRCOVERLAY 0x00000010l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW COLOR KEY CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Supports transparent blting using a color key to identify the replaceable
+ * bits of the destination surface for RGB colors.
+ */
+#define DDCKEYCAPS_DESTBLT 0x00000001l
+
+/*
+ * Supports transparent blting using a color space to identify the replaceable
+ * bits of the destination surface for RGB colors.
+ */
+#define DDCKEYCAPS_DESTBLTCLRSPACE 0x00000002l
+
+/*
+ * Supports transparent blting using a color space to identify the replaceable
+ * bits of the destination surface for YUV colors.
+ */
+#define DDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004l
+
+/*
+ * Supports transparent blting using a color key to identify the replaceable
+ * bits of the destination surface for YUV colors.
+ */
+#define DDCKEYCAPS_DESTBLTYUV 0x00000008l
+
+/*
+ * Supports overlaying using colorkeying of the replaceable bits of the surface
+ * being overlayed for RGB colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAY 0x00000010l
+
+/*
+ * Supports a color space as the color key for the destination for RGB colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020l
+
+/*
+ * Supports a color space as the color key for the destination for YUV colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040l
+
+/*
+ * Supports only one active destination color key value for visible overlay
+ * surfaces.
+ */
+#define DDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080l
+
+/*
+ * Supports overlaying using colorkeying of the replaceable bits of the
+ * surface being overlayed for YUV colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAYYUV 0x00000100l
+
+/*
+ * Supports transparent blting using the color key for the source with
+ * this surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCBLT 0x00000200l
+
+/*
+ * Supports transparent blting using a color space for the source with
+ * this surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCBLTCLRSPACE 0x00000400l
+
+/*
+ * Supports transparent blting using a color space for the source with
+ * this surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800l
+
+/*
+ * Supports transparent blting using the color key for the source with
+ * this surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCBLTYUV 0x00001000l
+
+/*
+ * Supports overlays using the color key for the source with this
+ * overlay surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAY 0x00002000l
+
+/*
+ * Supports overlays using a color space as the source color key for
+ * the overlay surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000l
+
+/*
+ * Supports overlays using a color space as the source color key for
+ * the overlay surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000l
+
+/*
+ * Supports only one active source color key value for visible
+ * overlay surfaces.
+ */
+#define DDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000l
+
+/*
+ * Supports overlays using the color key for the source with this
+ * overlay surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAYYUV 0x00020000l
+
+/*
+ * there are no bandwidth trade-offs for using colorkey with an overlay
+ */
+#define DDCKEYCAPS_NOCOSTOVERLAY 0x00040000l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW PIXELFORMAT FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * The surface has alpha channel information in the pixel format.
+ */
+#define DDPF_ALPHAPIXELS 0x00000001l
+
+/*
+ * The pixel format contains alpha only information
+ */
+#define DDPF_ALPHA 0x00000002l
+
+/*
+ * The FourCC code is valid.
+ */
+#define DDPF_FOURCC 0x00000004l
+
+/*
+ * The surface is 4-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED4 0x00000008l
+
+/*
+ * The surface is indexed into a palette which stores indices
+ * into the destination surface's 8-bit palette.
+ */
+#define DDPF_PALETTEINDEXEDTO8 0x00000010l
+
+/*
+ * The surface is 8-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED8 0x00000020l
+
+/*
+ * The RGB data in the pixel format structure is valid.
+ */
+#define DDPF_RGB 0x00000040l
+
+/*
+ * The surface will accept pixel data in the format specified
+ * and compress it during the write.
+ */
+#define DDPF_COMPRESSED 0x00000080l
+
+/*
+ * The surface will accept RGB data and translate it during
+ * the write to YUV data. The format of the data to be written
+ * will be contained in the pixel format structure. The DDPF_RGB
+ * flag will be set.
+ */
+#define DDPF_RGBTOYUV 0x00000100l
+
+/*
+ * pixel format is YUV - YUV data in pixel format struct is valid
+ */
+#define DDPF_YUV 0x00000200l
+
+/*
+ * pixel format is a z buffer only surface
+ */
+#define DDPF_ZBUFFER 0x00000400l
+
+/*
+ * The surface is 1-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED1 0x00000800l
+
+/*
+ * The surface is 2-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED2 0x00001000l
+
+/*
+ * The surface contains Z information in the pixels
+ */
+#define DDPF_ZPIXELS 0x00002000l
+
+/*
+ * The surface contains stencil information along with Z
+ */
+#define DDPF_STENCILBUFFER 0x00004000l
+
+/*
+ * Premultiplied alpha format -- the color components have been
+ * premultiplied by the alpha component.
+ */
+#define DDPF_ALPHAPREMULT 0x00008000l
+
+
+/*
+ * Luminance data in the pixel format is valid.
+ * Use this flag for luminance-only or luminance+alpha surfaces,
+ * the bit depth is then ddpf.dwLuminanceBitCount.
+ */
+#define DDPF_LUMINANCE 0x00020000l
+
+/*
+ * Luminance data in the pixel format is valid.
+ * Use this flag when hanging luminance off bumpmap surfaces,
+ * the bit mask for the luminance portion of the pixel is then
+ * ddpf.dwBumpLuminanceBitMask
+ */
+#define DDPF_BUMPLUMINANCE 0x00040000l
+
+/*
+ * Bump map dUdV data in the pixel format is valid.
+ */
+#define DDPF_BUMPDUDV 0x00080000l
+
+
+/*===========================================================================
+ *
+ *
+ * DIRECTDRAW CALLBACK FLAGS
+ *
+ *
+ *==========================================================================*/
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMSURFACES FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate all of the surfaces that meet the search criterion.
+ */
+#define DDENUMSURFACES_ALL 0x00000001l
+
+/*
+ * A search hit is a surface that matches the surface description.
+ */
+#define DDENUMSURFACES_MATCH 0x00000002l
+
+/*
+ * A search hit is a surface that does not match the surface description.
+ */
+#define DDENUMSURFACES_NOMATCH 0x00000004l
+
+/*
+ * Enumerate the first surface that can be created which meets the search criterion.
+ */
+#define DDENUMSURFACES_CANBECREATED 0x00000008l
+
+/*
+ * Enumerate the surfaces that already exist that meet the search criterion.
+ */
+#define DDENUMSURFACES_DOESEXIST 0x00000010l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW SETDISPLAYMODE FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * The desired mode is a standard VGA mode
+ */
+#define DDSDM_STANDARDVGAMODE 0x00000001l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMDISPLAYMODES FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate Modes with different refresh rates. EnumDisplayModes guarantees
+ * that a particular mode will be enumerated only once. This flag specifies whether
+ * the refresh rate is taken into account when determining if a mode is unique.
+ */
+#define DDEDM_REFRESHRATES 0x00000001l
+
+/*
+ * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA
+ * modes such as mode 0x13 in addition to the usual ModeX modes (which are always
+ * enumerated if the application has previously called SetCooperativeLevel with the
+ * DDSCL_ALLOWMODEX flag set).
+ */
+#define DDEDM_STANDARDVGAMODES 0x00000002L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Exclusive mode owner will be responsible for the entire primary surface.
+ * GDI can be ignored. used with DD
+ */
+#define DDSCL_FULLSCREEN 0x00000001l
+
+/*
+ * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode
+ */
+#define DDSCL_ALLOWREBOOT 0x00000002l
+
+/*
+ * prevents DDRAW from modifying the application window.
+ * prevents DDRAW from minimize/restore the application window on activation.
+ */
+#define DDSCL_NOWINDOWCHANGES 0x00000004l
+
+/*
+ * app wants to work as a regular Windows application
+ */
+#define DDSCL_NORMAL 0x00000008l
+
+/*
+ * app wants exclusive access
+ */
+#define DDSCL_EXCLUSIVE 0x00000010l
+
+
+/*
+ * app can deal with non-windows display modes
+ */
+#define DDSCL_ALLOWMODEX 0x00000040l
+
+/*
+ * this window will receive the focus messages
+ */
+#define DDSCL_SETFOCUSWINDOW 0x00000080l
+
+/*
+ * this window is associated with the DDRAW object and will
+ * cover the screen in fullscreen mode
+ */
+#define DDSCL_SETDEVICEWINDOW 0x00000100l
+
+/*
+ * app wants DDRAW to create a window to be associated with the
+ * DDRAW object
+ */
+#define DDSCL_CREATEDEVICEWINDOW 0x00000200l
+
+/*
+ * App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D
+ * take the global crtisec more frequently.
+ */
+#define DDSCL_MULTITHREADED 0x00000400l
+
+/*
+ * App specifies that it would like to keep the FPU set up for optimal Direct3D
+ * performance (single precision and exceptions disabled) so Direct3D
+ * does not need to explicitly set the FPU each time. This is assumed by
+ * default in DirectX 7. See also DDSCL_FPUPRESERVE
+ */
+#define DDSCL_FPUSETUP 0x00000800l
+
+/*
+ * App specifies that it needs either double precision FPU or FPU exceptions
+ * enabled. This makes Direct3D explicitly set the FPU state eah time it is
+ * called. Setting the flag will reduce Direct3D performance. The flag is
+ * assumed by default in DirectX 6 and earlier. See also DDSCL_FPUSETUP
+ */
+#define DDSCL_FPUPRESERVE 0x00001000l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW BLT FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the destination surface as the alpha channel for this blt.
+ */
+#define DDBLT_ALPHADEST 0x00000001l
+
+/*
+ * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel
+ * for the destination surface for this blt.
+ */
+#define DDBLT_ALPHADESTCONSTOVERRIDE 0x00000002l
+
+/*
+ * The NEG suffix indicates that the destination surface becomes more
+ * transparent as the alpha value increases. (0 is opaque)
+ */
+#define DDBLT_ALPHADESTNEG 0x00000004l
+
+/*
+ * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha
+ * channel for the destination for this blt.
+ */
+#define DDBLT_ALPHADESTSURFACEOVERRIDE 0x00000008l
+
+/*
+ * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel
+ * for the edges of the image that border the color key colors.
+ */
+#define DDBLT_ALPHAEDGEBLEND 0x00000010l
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the source surface as the alpha channel for this blt.
+ */
+#define DDBLT_ALPHASRC 0x00000020l
+
+/*
+ * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel
+ * for the source for this blt.
+ */
+#define DDBLT_ALPHASRCCONSTOVERRIDE 0x00000040l
+
+/*
+ * The NEG suffix indicates that the source surface becomes more transparent
+ * as the alpha value increases. (0 is opaque)
+ */
+#define DDBLT_ALPHASRCNEG 0x00000080l
+
+/*
+ * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel
+ * for the source for this blt.
+ */
+#define DDBLT_ALPHASRCSURFACEOVERRIDE 0x00000100l
+
+/*
+ * Do this blt asynchronously through the FIFO in the order received. If
+ * there is no room in the hardware FIFO fail the call.
+ */
+#define DDBLT_ASYNC 0x00000200l
+
+/*
+ * Uses the dwFillColor field in the DDBLTFX structure as the RGB color
+ * to fill the destination rectangle on the destination surface with.
+ */
+#define DDBLT_COLORFILL 0x00000400l
+
+/*
+ * Uses the dwDDFX field in the DDBLTFX structure to specify the effects
+ * to use for the blt.
+ */
+#define DDBLT_DDFX 0x00000800l
+
+/*
+ * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS
+ * that are not part of the Win32 API.
+ */
+#define DDBLT_DDROPS 0x00001000l
+
+/*
+ * Use the color key associated with the destination surface.
+ */
+#define DDBLT_KEYDEST 0x00002000l
+
+/*
+ * Use the dckDestColorkey field in the DDBLTFX structure as the color key
+ * for the destination surface.
+ */
+#define DDBLT_KEYDESTOVERRIDE 0x00004000l
+
+/*
+ * Use the color key associated with the source surface.
+ */
+#define DDBLT_KEYSRC 0x00008000l
+
+/*
+ * Use the dckSrcColorkey field in the DDBLTFX structure as the color key
+ * for the source surface.
+ */
+#define DDBLT_KEYSRCOVERRIDE 0x00010000l
+
+/*
+ * Use the dwROP field in the DDBLTFX structure for the raster operation
+ * for this blt. These ROPs are the same as the ones defined in the Win32 API.
+ */
+#define DDBLT_ROP 0x00020000l
+
+/*
+ * Use the dwRotationAngle field in the DDBLTFX structure as the angle
+ * (specified in 1/100th of a degree) to rotate the surface.
+ */
+#define DDBLT_ROTATIONANGLE 0x00040000l
+
+/*
+ * Z-buffered blt using the z-buffers attached to the source and destination
+ * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the
+ * z-buffer opcode.
+ */
+#define DDBLT_ZBUFFER 0x00080000l
+
+/*
+ * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field
+ * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
+ * for the destination.
+ */
+#define DDBLT_ZBUFFERDESTCONSTOVERRIDE 0x00100000l
+
+/*
+ * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode
+ * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
+ * respectively for the destination.
+ */
+#define DDBLT_ZBUFFERDESTOVERRIDE 0x00200000l
+
+/*
+ * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field
+ * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
+ * for the source.
+ */
+#define DDBLT_ZBUFFERSRCCONSTOVERRIDE 0x00400000l
+
+/*
+ * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode
+ * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
+ * respectively for the source.
+ */
+#define DDBLT_ZBUFFERSRCOVERRIDE 0x00800000l
+
+/*
+ * wait until the device is ready to handle the blt
+ * this will cause blt to not return DDERR_WASSTILLDRAWING
+ */
+#define DDBLT_WAIT 0x01000000l
+
+/*
+ * Uses the dwFillDepth field in the DDBLTFX structure as the depth value
+ * to fill the destination rectangle on the destination Z-buffer surface
+ * with.
+ */
+#define DDBLT_DEPTHFILL 0x02000000l
+
+
+/*
+ * Return immediately (with DDERR_WASSTILLDRAWING) if the device is not
+ * ready to schedule the blt at the time Blt() is called.
+ */
+#define DDBLT_DONOTWAIT 0x08000000l
+
+/*
+ * These flags indicate a presentation blt (i.e. a blt
+ * that moves surface contents from an offscreen back buffer to the primary
+ * surface). The driver is not allowed to "queue" more than three such blts.
+ * The "end" of the presentation blt is indicated, since the
+ * blt may be clipped, in which case the runtime will call the driver with
+ * several blts. All blts (even if not clipped) are tagged with DDBLT_PRESENTATION
+ * and the last (even if not clipped) additionally with DDBLT_LAST_PRESENTATION.
+ * Thus the true rule is that the driver must not schedule a DDBLT_PRESENTATION
+ * blt if there are 3 or more DDBLT_PRESENTLAST blts in the hardware pipe.
+ * If there are such blts in the pipe, the driver should return DDERR_WASSTILLDRAWING
+ * until the oldest queued DDBLT_LAST_PRESENTATION blts has been retired (i.e. the
+ * pixels have been actually written to the primary surface). Once the oldest blt
+ * has been retired, the driver is free to schedule the current blt.
+ * The goal is to provide a mechanism whereby the device's hardware queue never
+ * gets more than 3 frames ahead of the frames being generated by the application.
+ * When excessive queueing occurs, applications become unusable because the application
+ * visibly lags user input, and such problems make windowed interactive applications impossible.
+ * Some drivers may not have sufficient knowledge of their hardware's FIFO to know
+ * when a certain blt has been retired. Such drivers should code cautiously, and
+ * simply not allow any frames to be queued at all. DDBLT_LAST_PRESENTATION should cause
+ * such drivers to return DDERR_WASSTILLDRAWING until the accelerator is completely
+ * finished- exactly as if the application had called Lock on the source surface
+ * before calling Blt.
+ * In other words, the driver is allowed and encouraged to
+ * generate as much latency as it can, but never more than 3 frames worth.
+ * Implementation detail: Drivers should count blts against the SOURCE surface, not
+ * against the primary surface. This enables multiple parallel windowed application
+ * to function more optimally.
+ * This flag is passed only to DX8 or higher drivers.
+ *
+ * APPLICATIONS DO NOT SET THESE FLAGS. THEY ARE SET BY THE DIRECTDRAW RUNTIME.
+ *
+ */
+#define DDBLT_PRESENTATION 0x10000000l
+#define DDBLT_LAST_PRESENTATION 0x20000000l
+
+/*
+ * If DDBLT_EXTENDED_FLAGS is set, then the driver should re-interpret
+ * other flags according to the definitions that follow.
+ * For example, bit 0 (0x00000001L) means DDBLT_ALPHADEST, unless
+ * DDBLT_EXTENDED_FLAGS is also set, in which case bit 0 means
+ * DDBLT_EXTENDED_LINEAR_CONTENT.
+ * Only DirectX9 and higher drivers will be given extended blt flags.
+ * Only flags explicitly mentioned here should be re-interpreted.
+ * All other flags retain their original meanings.
+ *
+ * List of re-interpreted flags:
+ *
+ * Bit Hex value New meaning old meaning
+ * ---------------------------------------------------------------
+ * 2 0x00000004 DDBLT_EXTENDED_LINEAR_CONTENT DDBLT_ALPHADESTNEG
+ * 4 0x00000010 DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR DDBLT_ALPHAEDGEBLEND
+ *
+ *
+ * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED
+ * FOR USE BY THE DIRECT3D RUNTIME.
+ */
+#define DDBLT_EXTENDED_FLAGS 0x40000000l
+
+/*
+ * EXTENDED FLAG. SEE DEFINITION OF DDBLT_EXTENDED_FLAGS.
+ * This flag indidcates that the source surface contains content in a
+ * linear color space. The driver may perform gamma correction to the
+ * desktop color space (i.e. sRGB, gamma 2.2) as part of this blt.
+ * If the device can perform such a conversion as part of the copy,
+ * the driver should also set D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION
+ *
+ * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED
+ * FOR USE BY THE DIRECT3D RUNTIME. Use IDirect3DSwapChain9::Present
+ * and specify D3DPRESENT_LINEAR_CONTENT in order to use this functionality.
+ */
+#define DDBLT_EXTENDED_LINEAR_CONTENT 0x00000004l
+
+
+/****************************************************************************
+ *
+ * BLTFAST FLAGS
+ *
+ ****************************************************************************/
+
+#define DDBLTFAST_NOCOLORKEY 0x00000000
+#define DDBLTFAST_SRCCOLORKEY 0x00000001
+#define DDBLTFAST_DESTCOLORKEY 0x00000002
+#define DDBLTFAST_WAIT 0x00000010
+#define DDBLTFAST_DONOTWAIT 0x00000020
+
+/****************************************************************************
+ *
+ * FLIP FLAGS
+ *
+ ****************************************************************************/
+
+#define DDFLIP_WAIT 0x00000001L
+
+/*
+ * Indicates that the target surface contains the even field of video data.
+ * This flag is only valid with an overlay surface.
+ */
+#define DDFLIP_EVEN 0x00000002L
+
+/*
+ * Indicates that the target surface contains the odd field of video data.
+ * This flag is only valid with an overlay surface.
+ */
+#define DDFLIP_ODD 0x00000004L
+
+/*
+ * Causes DirectDraw to perform the physical flip immediately and return
+ * to the application. Typically, what was the front buffer but is now the back
+ * buffer will still be visible (depending on timing) until the next vertical
+ * retrace. Subsequent operations involving the two flipped surfaces will
+ * not check to see if the physical flip has finished (i.e. will not return
+ * DDERR_WASSTILLDRAWING for that reason (but may for other reasons)).
+ * This allows an application to perform Flips at a higher frequency than the
+ * monitor refresh rate, but may introduce visible artifacts.
+ * Only effective if DDCAPS2_FLIPNOVSYNC is set. If that bit is not set,
+ * DDFLIP_NOVSYNC has no effect.
+ */
+#define DDFLIP_NOVSYNC 0x00000008L
+
+
+/*
+ * Flip Interval Flags. These flags indicate how many vertical retraces to wait between
+ * each flip. The default is one. DirectDraw will return DDERR_WASSTILLDRAWING for each
+ * surface involved in the flip until the specified number of vertical retraces has
+ * ocurred. Only effective if DDCAPS2_FLIPINTERVAL is set. If that bit is not set,
+ * DDFLIP_INTERVALn has no effect.
+ */
+
+/*
+ * DirectDraw will flip on every other vertical sync
+ */
+#define DDFLIP_INTERVAL2 0x02000000L
+
+
+/*
+ * DirectDraw will flip on every third vertical sync
+ */
+#define DDFLIP_INTERVAL3 0x03000000L
+
+
+/*
+ * DirectDraw will flip on every fourth vertical sync
+ */
+#define DDFLIP_INTERVAL4 0x04000000L
+
+/*
+ * DirectDraw will flip and display a main stereo surface
+ */
+#define DDFLIP_STEREO 0x00000010L
+
+/*
+ * On IDirectDrawSurface7 and higher interfaces, the default is DDFLIP_WAIT. If you wish
+ * to override the default and use time when the accelerator is busy (as denoted by
+ * the DDERR_WASSTILLDRAWING return code) then use DDFLIP_DONOTWAIT.
+ */
+#define DDFLIP_DONOTWAIT 0x00000020L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW SURFACE OVERLAY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the destination surface as the alpha channel for the
+ * destination overlay.
+ */
+#define DDOVER_ALPHADEST 0x00000001l
+
+/*
+ * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the
+ * destination alpha channel for this overlay.
+ */
+#define DDOVER_ALPHADESTCONSTOVERRIDE 0x00000002l
+
+/*
+ * The NEG suffix indicates that the destination surface becomes more
+ * transparent as the alpha value increases.
+ */
+#define DDOVER_ALPHADESTNEG 0x00000004l
+
+/*
+ * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha
+ * channel destination for this overlay.
+ */
+#define DDOVER_ALPHADESTSURFACEOVERRIDE 0x00000008l
+
+/*
+ * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha
+ * channel for the edges of the image that border the color key colors.
+ */
+#define DDOVER_ALPHAEDGEBLEND 0x00000010l
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the source surface as the source alpha channel for this overlay.
+ */
+#define DDOVER_ALPHASRC 0x00000020l
+
+/*
+ * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source
+ * alpha channel for this overlay.
+ */
+#define DDOVER_ALPHASRCCONSTOVERRIDE 0x00000040l
+
+/*
+ * The NEG suffix indicates that the source surface becomes more transparent
+ * as the alpha value increases.
+ */
+#define DDOVER_ALPHASRCNEG 0x00000080l
+
+/*
+ * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel
+ * source for this overlay.
+ */
+#define DDOVER_ALPHASRCSURFACEOVERRIDE 0x00000100l
+
+/*
+ * Turn this overlay off.
+ */
+#define DDOVER_HIDE 0x00000200l
+
+/*
+ * Use the color key associated with the destination surface.
+ */
+#define DDOVER_KEYDEST 0x00000400l
+
+/*
+ * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key
+ * for the destination surface
+ */
+#define DDOVER_KEYDESTOVERRIDE 0x00000800l
+
+/*
+ * Use the color key associated with the source surface.
+ */
+#define DDOVER_KEYSRC 0x00001000l
+
+/*
+ * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key
+ * for the source surface.
+ */
+#define DDOVER_KEYSRCOVERRIDE 0x00002000l
+
+/*
+ * Turn this overlay on.
+ */
+#define DDOVER_SHOW 0x00004000l
+
+/*
+ * Add a dirty rect to an emulated overlayed surface.
+ */
+#define DDOVER_ADDDIRTYRECT 0x00008000l
+
+/*
+ * Redraw all dirty rects on an emulated overlayed surface.
+ */
+#define DDOVER_REFRESHDIRTYRECTS 0x00010000l
+
+/*
+ * Redraw the entire surface on an emulated overlayed surface.
+ */
+#define DDOVER_REFRESHALL 0x00020000l
+
+
+/*
+ * Use the overlay FX flags to define special overlay FX
+ */
+#define DDOVER_DDFX 0x00080000l
+
+/*
+ * Autoflip the overlay when ever the video port autoflips
+ */
+#define DDOVER_AUTOFLIP 0x00100000l
+
+/*
+ * Display each field of video port data individually without
+ * causing any jittery artifacts
+ */
+#define DDOVER_BOB 0x00200000l
+
+/*
+ * Indicates that bob/weave decisions should not be overridden by other
+ * interfaces.
+ */
+#define DDOVER_OVERRIDEBOBWEAVE 0x00400000l
+
+/*
+ * Indicates that the surface memory is composed of interleaved fields.
+ */
+#define DDOVER_INTERLEAVED 0x00800000l
+
+/*
+ * Indicates that bob will be performed using hardware rather than
+ * software or emulated.
+ */
+#define DDOVER_BOBHARDWARE 0x01000000l
+
+/*
+ * Indicates that overlay FX structure contains valid ARGB scaling factors.
+ */
+#define DDOVER_ARGBSCALEFACTORS 0x02000000l
+
+/*
+ * Indicates that ARGB scaling factors can be degraded to fit driver capabilities.
+ */
+#define DDOVER_DEGRADEARGBSCALING 0x04000000l
+
+
+#ifdef COMBOX_SANDBOX
+#define DX_LONGHORN_PRESERVEDC
+#endif
+
+#ifdef DX_LONGHORN_PRESERVEDC
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE SETSURFACEDESC FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * The default. The GDI DC will be tore down.
+ */
+#define DDSETSURFACEDESC_RECREATEDC 0x00000000L // default
+
+/*
+ * The default. The GDI DC will be kept.
+ */
+#define DDSETSURFACEDESC_PRESERVEDC 0x00000001L
+
+
+#endif // DX_LONGHORN_PRESERVEDC
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE LOCK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * The default. Set to indicate that Lock should return a valid memory pointer
+ * to the top of the specified rectangle. If no rectangle is specified then a
+ * pointer to the top of the surface is returned.
+ */
+#define DDLOCK_SURFACEMEMORYPTR 0x00000000L // default
+
+/*
+ * Set to indicate that Lock should wait until it can obtain a valid memory
+ * pointer before returning. If this bit is set, Lock will never return
+ * DDERR_WASSTILLDRAWING.
+ */
+#define DDLOCK_WAIT 0x00000001L
+
+/*
+ * Set if an event handle is being passed to Lock. Lock will trigger the event
+ * when it can return the surface memory pointer requested.
+ */
+#define DDLOCK_EVENT 0x00000002L
+
+/*
+ * Indicates that the surface being locked will only be read from.
+ */
+#define DDLOCK_READONLY 0x00000010L
+
+/*
+ * Indicates that the surface being locked will only be written to
+ */
+#define DDLOCK_WRITEONLY 0x00000020L
+
+
+/*
+ * Indicates that a system wide lock should not be taken when this surface
+ * is locked. This has several advantages (cursor responsiveness, ability
+ * to call more Windows functions, easier debugging) when locking video
+ * memory surfaces. However, an application specifying this flag must
+ * comply with a number of conditions documented in the help file.
+ * Furthermore, this flag cannot be specified when locking the primary.
+ */
+#define DDLOCK_NOSYSLOCK 0x00000800L
+
+/*
+ * Used only with Direct3D Vertex Buffer Locks. Indicates that no vertices
+ * that were referred to in Draw*PrimtiveVB calls since the start of the
+ * frame (or the last lock without this flag) will be modified during the
+ * lock. This can be useful when one is only appending data to the vertex
+ * buffer
+ */
+#define DDLOCK_NOOVERWRITE 0x00001000L
+
+/*
+ * Indicates that no assumptions will be made about the contents of the
+ * surface or vertex buffer during this lock.
+ * This enables two things:
+ * - Direct3D or the driver may provide an alternative memory
+ * area as the vertex buffer. This is useful when one plans to clear the
+ * contents of the vertex buffer and fill in new data.
+ * - Drivers sometimes store surface data in a re-ordered format.
+ * When the application locks the surface, the driver is forced to un-re-order
+ * the surface data before allowing the application to see the surface contents.
+ * This flag is a hint to the driver that it can skip the un-re-ordering process
+ * since the application plans to overwrite every single pixel in the surface
+ * or locked rectangle (and so erase any un-re-ordered pixels anyway).
+ * Applications should always set this flag when they intend to overwrite the entire
+ * surface or locked rectangle.
+ */
+#define DDLOCK_DISCARDCONTENTS 0x00002000L
+ /*
+ * DDLOCK_OKTOSWAP is an older, less informative name for DDLOCK_DISCARDCONTENTS
+ */
+#define DDLOCK_OKTOSWAP 0x00002000L
+
+/*
+ * On IDirectDrawSurface7 and higher interfaces, the default is DDLOCK_WAIT. If you wish
+ * to override the default and use time when the accelerator is busy (as denoted by
+ * the DDERR_WASSTILLDRAWING return code) then use DDLOCK_DONOTWAIT.
+ */
+#define DDLOCK_DONOTWAIT 0x00004000L
+
+/*
+ * This indicates volume texture lock with front and back specified.
+ */
+#define DDLOCK_HASVOLUMETEXTUREBOXRECT 0x00008000L
+
+/*
+ * This indicates that the driver should not update dirty rect information for this lock.
+ */
+#define DDLOCK_NODIRTYUPDATE 0x00010000L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE PAGELOCK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * No flags defined at present
+ */
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * No flags defined at present
+ */
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE BLT FX FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * If stretching, use arithmetic stretching along the Y axis for this blt.
+ */
+#define DDBLTFX_ARITHSTRETCHY 0x00000001l
+
+/*
+ * Do this blt mirroring the surface left to right. Spin the
+ * surface around its y-axis.
+ */
+#define DDBLTFX_MIRRORLEFTRIGHT 0x00000002l
+
+/*
+ * Do this blt mirroring the surface up and down. Spin the surface
+ * around its x-axis.
+ */
+#define DDBLTFX_MIRRORUPDOWN 0x00000004l
+
+/*
+ * Schedule this blt to avoid tearing.
+ */
+#define DDBLTFX_NOTEARING 0x00000008l
+
+/*
+ * Do this blt rotating the surface one hundred and eighty degrees.
+ */
+#define DDBLTFX_ROTATE180 0x00000010l
+
+/*
+ * Do this blt rotating the surface two hundred and seventy degrees.
+ */
+#define DDBLTFX_ROTATE270 0x00000020l
+
+/*
+ * Do this blt rotating the surface ninety degrees.
+ */
+#define DDBLTFX_ROTATE90 0x00000040l
+
+/*
+ * Do this z blt using dwZBufferLow and dwZBufferHigh as range values
+ * specified to limit the bits copied from the source surface.
+ */
+#define DDBLTFX_ZBUFFERRANGE 0x00000080l
+
+/*
+ * Do this z blt adding the dwZBufferBaseDest to each of the sources z values
+ * before comparing it with the desting z values.
+ */
+#define DDBLTFX_ZBUFFERBASEDEST 0x00000100l
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE OVERLAY FX FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * If stretching, use arithmetic stretching along the Y axis for this overlay.
+ */
+#define DDOVERFX_ARITHSTRETCHY 0x00000001l
+
+/*
+ * Mirror the overlay across the vertical axis
+ */
+#define DDOVERFX_MIRRORLEFTRIGHT 0x00000002l
+
+/*
+ * Mirror the overlay across the horizontal axis
+ */
+#define DDOVERFX_MIRRORUPDOWN 0x00000004l
+
+/*
+ * Deinterlace the overlay, if possible
+ */
+#define DDOVERFX_DEINTERLACE 0x00000008l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW WAITFORVERTICALBLANK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * return when the vertical blank interval begins
+ */
+#define DDWAITVB_BLOCKBEGIN 0x00000001l
+
+/*
+ * set up an event to trigger when the vertical blank begins
+ */
+#define DDWAITVB_BLOCKBEGINEVENT 0x00000002l
+
+/*
+ * return when the vertical blank interval ends and display begins
+ */
+#define DDWAITVB_BLOCKEND 0x00000004l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW GETFLIPSTATUS FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * is it OK to flip now?
+ */
+#define DDGFS_CANFLIP 0x00000001l
+
+/*
+ * is the last flip finished?
+ */
+#define DDGFS_ISFLIPDONE 0x00000002l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW GETBLTSTATUS FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * is it OK to blt now?
+ */
+#define DDGBS_CANBLT 0x00000001l
+
+/*
+ * is the blt to the surface finished?
+ */
+#define DDGBS_ISBLTDONE 0x00000002l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMOVERLAYZORDER FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate overlays back to front.
+ */
+#define DDENUMOVERLAYZ_BACKTOFRONT 0x00000000l
+
+/*
+ * Enumerate overlays front to back
+ */
+#define DDENUMOVERLAYZ_FRONTTOBACK 0x00000001l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Send overlay to front
+ */
+#define DDOVERZ_SENDTOFRONT 0x00000000l
+
+/*
+ * Send overlay to back
+ */
+#define DDOVERZ_SENDTOBACK 0x00000001l
+
+/*
+ * Move Overlay forward
+ */
+#define DDOVERZ_MOVEFORWARD 0x00000002l
+
+/*
+ * Move Overlay backward
+ */
+#define DDOVERZ_MOVEBACKWARD 0x00000003l
+
+/*
+ * Move Overlay in front of relative surface
+ */
+#define DDOVERZ_INSERTINFRONTOF 0x00000004l
+
+/*
+ * Move Overlay in back of relative surface
+ */
+#define DDOVERZ_INSERTINBACKOF 0x00000005l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW SETGAMMARAMP FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Request calibrator to adjust the gamma ramp according to the physical
+ * properties of the display so that the result should appear identical
+ * on all systems.
+ */
+#define DDSGR_CALIBRATE 0x00000001L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW STARTMODETEST FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Indicates that the mode being tested has passed
+ */
+#define DDSMT_ISTESTREQUIRED 0x00000001L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW EVALUATEMODE FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Indicates that the mode being tested has passed
+ */
+#define DDEM_MODEPASSED 0x00000001L
+
+/*
+ * Indicates that the mode being tested has failed
+ */
+#define DDEM_MODEFAILED 0x00000002L
+
+
+/*===========================================================================
+ *
+ *
+ * DIRECTDRAW RETURN CODES
+ *
+ * The return values from DirectDraw Commands and Surface that return an HRESULT
+ * are codes from DirectDraw concerning the results of the action
+ * requested by DirectDraw.
+ *
+ *==========================================================================*/
+
+/*
+ * Status is OK
+ *
+ * Issued by: DirectDraw Commands and all callbacks
+ */
+#define DD_OK S_OK
+#define DD_FALSE S_FALSE
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMCALLBACK RETURN VALUES
+ *
+ * EnumCallback returns are used to control the flow of the DIRECTDRAW and
+ * DIRECTDRAWSURFACE object enumerations. They can only be returned by
+ * enumeration callback routines.
+ *
+ ****************************************************************************/
+
+/*
+ * stop the enumeration
+ */
+#define DDENUMRET_CANCEL 0
+
+/*
+ * continue the enumeration
+ */
+#define DDENUMRET_OK 1
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ERRORS
+ *
+ * Errors are represented by negative values and cannot be combined.
+ *
+ ****************************************************************************/
+
+/*
+ * This object is already initialized
+ */
+#define DDERR_ALREADYINITIALIZED MAKE_DDHRESULT( 5 )
+
+/*
+ * This surface can not be attached to the requested surface.
+ */
+#define DDERR_CANNOTATTACHSURFACE MAKE_DDHRESULT( 10 )
+
+/*
+ * This surface can not be detached from the requested surface.
+ */
+#define DDERR_CANNOTDETACHSURFACE MAKE_DDHRESULT( 20 )
+
+/*
+ * Support is currently not available.
+ */
+#define DDERR_CURRENTLYNOTAVAIL MAKE_DDHRESULT( 40 )
+
+/*
+ * An exception was encountered while performing the requested operation
+ */
+#define DDERR_EXCEPTION MAKE_DDHRESULT( 55 )
+
+/*
+ * Generic failure.
+ */
+#define DDERR_GENERIC E_FAIL
+
+/*
+ * Height of rectangle provided is not a multiple of reqd alignment
+ */
+#define DDERR_HEIGHTALIGN MAKE_DDHRESULT( 90 )
+
+/*
+ * Unable to match primary surface creation request with existing
+ * primary surface.
+ */
+#define DDERR_INCOMPATIBLEPRIMARY MAKE_DDHRESULT( 95 )
+
+/*
+ * One or more of the caps bits passed to the callback are incorrect.
+ */
+#define DDERR_INVALIDCAPS MAKE_DDHRESULT( 100 )
+
+/*
+ * DirectDraw does not support provided Cliplist.
+ */
+#define DDERR_INVALIDCLIPLIST MAKE_DDHRESULT( 110 )
+
+/*
+ * DirectDraw does not support the requested mode
+ */
+#define DDERR_INVALIDMODE MAKE_DDHRESULT( 120 )
+
+/*
+ * DirectDraw received a pointer that was an invalid DIRECTDRAW object.
+ */
+#define DDERR_INVALIDOBJECT MAKE_DDHRESULT( 130 )
+
+/*
+ * One or more of the parameters passed to the callback function are
+ * incorrect.
+ */
+#define DDERR_INVALIDPARAMS E_INVALIDARG
+
+/*
+ * pixel format was invalid as specified
+ */
+#define DDERR_INVALIDPIXELFORMAT MAKE_DDHRESULT( 145 )
+
+/*
+ * Rectangle provided was invalid.
+ */
+#define DDERR_INVALIDRECT MAKE_DDHRESULT( 150 )
+
+/*
+ * Operation could not be carried out because one or more surfaces are locked
+ */
+#define DDERR_LOCKEDSURFACES MAKE_DDHRESULT( 160 )
+
+/*
+ * There is no 3D present.
+ */
+#define DDERR_NO3D MAKE_DDHRESULT( 170 )
+
+/*
+ * Operation could not be carried out because there is no alpha accleration
+ * hardware present or available.
+ */
+#define DDERR_NOALPHAHW MAKE_DDHRESULT( 180 )
+
+/*
+ * Operation could not be carried out because there is no stereo
+ * hardware present or available.
+ */
+#define DDERR_NOSTEREOHARDWARE MAKE_DDHRESULT( 181 )
+
+/*
+ * Operation could not be carried out because there is no hardware
+ * present which supports stereo surfaces
+ */
+#define DDERR_NOSURFACELEFT MAKE_DDHRESULT( 182 )
+
+
+
+/*
+ * no clip list available
+ */
+#define DDERR_NOCLIPLIST MAKE_DDHRESULT( 205 )
+
+/*
+ * Operation could not be carried out because there is no color conversion
+ * hardware present or available.
+ */
+#define DDERR_NOCOLORCONVHW MAKE_DDHRESULT( 210 )
+
+/*
+ * Create function called without DirectDraw object method SetCooperativeLevel
+ * being called.
+ */
+#define DDERR_NOCOOPERATIVELEVELSET MAKE_DDHRESULT( 212 )
+
+/*
+ * Surface doesn't currently have a color key
+ */
+#define DDERR_NOCOLORKEY MAKE_DDHRESULT( 215 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * of the dest color key.
+ */
+#define DDERR_NOCOLORKEYHW MAKE_DDHRESULT( 220 )
+
+/*
+ * No DirectDraw support possible with current display driver
+ */
+#define DDERR_NODIRECTDRAWSUPPORT MAKE_DDHRESULT( 222 )
+
+/*
+ * Operation requires the application to have exclusive mode but the
+ * application does not have exclusive mode.
+ */
+#define DDERR_NOEXCLUSIVEMODE MAKE_DDHRESULT( 225 )
+
+/*
+ * Flipping visible surfaces is not supported.
+ */
+#define DDERR_NOFLIPHW MAKE_DDHRESULT( 230 )
+
+/*
+ * There is no GDI present.
+ */
+#define DDERR_NOGDI MAKE_DDHRESULT( 240 )
+
+/*
+ * Operation could not be carried out because there is no hardware present
+ * or available.
+ */
+#define DDERR_NOMIRRORHW MAKE_DDHRESULT( 250 )
+
+/*
+ * Requested item was not found
+ */
+#define DDERR_NOTFOUND MAKE_DDHRESULT( 255 )
+
+/*
+ * Operation could not be carried out because there is no overlay hardware
+ * present or available.
+ */
+#define DDERR_NOOVERLAYHW MAKE_DDHRESULT( 260 )
+
+/*
+ * Operation could not be carried out because the source and destination
+ * rectangles are on the same surface and overlap each other.
+ */
+#define DDERR_OVERLAPPINGRECTS MAKE_DDHRESULT( 270 )
+
+/*
+ * Operation could not be carried out because there is no appropriate raster
+ * op hardware present or available.
+ */
+#define DDERR_NORASTEROPHW MAKE_DDHRESULT( 280 )
+
+/*
+ * Operation could not be carried out because there is no rotation hardware
+ * present or available.
+ */
+#define DDERR_NOROTATIONHW MAKE_DDHRESULT( 290 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * for stretching
+ */
+#define DDERR_NOSTRETCHHW MAKE_DDHRESULT( 310 )
+
+/*
+ * DirectDrawSurface is not in 4 bit color palette and the requested operation
+ * requires 4 bit color palette.
+ */
+#define DDERR_NOT4BITCOLOR MAKE_DDHRESULT( 316 )
+
+/*
+ * DirectDrawSurface is not in 4 bit color index palette and the requested
+ * operation requires 4 bit color index palette.
+ */
+#define DDERR_NOT4BITCOLORINDEX MAKE_DDHRESULT( 317 )
+
+/*
+ * DirectDraw Surface is not in 8 bit color mode and the requested operation
+ * requires 8 bit color.
+ */
+#define DDERR_NOT8BITCOLOR MAKE_DDHRESULT( 320 )
+
+/*
+ * Operation could not be carried out because there is no texture mapping
+ * hardware present or available.
+ */
+#define DDERR_NOTEXTUREHW MAKE_DDHRESULT( 330 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * for vertical blank synchronized operations.
+ */
+#define DDERR_NOVSYNCHW MAKE_DDHRESULT( 335 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * for zbuffer blting.
+ */
+#define DDERR_NOZBUFFERHW MAKE_DDHRESULT( 340 )
+
+/*
+ * Overlay surfaces could not be z layered based on their BltOrder because
+ * the hardware does not support z layering of overlays.
+ */
+#define DDERR_NOZOVERLAYHW MAKE_DDHRESULT( 350 )
+
+/*
+ * The hardware needed for the requested operation has already been
+ * allocated.
+ */
+#define DDERR_OUTOFCAPS MAKE_DDHRESULT( 360 )
+
+/*
+ * DirectDraw does not have enough memory to perform the operation.
+ */
+#define DDERR_OUTOFMEMORY E_OUTOFMEMORY
+
+/*
+ * DirectDraw does not have enough memory to perform the operation.
+ */
+#define DDERR_OUTOFVIDEOMEMORY MAKE_DDHRESULT( 380 )
+
+/*
+ * hardware does not support clipped overlays
+ */
+#define DDERR_OVERLAYCANTCLIP MAKE_DDHRESULT( 382 )
+
+/*
+ * Can only have ony color key active at one time for overlays
+ */
+#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE MAKE_DDHRESULT( 384 )
+
+/*
+ * Access to this palette is being refused because the palette is already
+ * locked by another thread.
+ */
+#define DDERR_PALETTEBUSY MAKE_DDHRESULT( 387 )
+
+/*
+ * No src color key specified for this operation.
+ */
+#define DDERR_COLORKEYNOTSET MAKE_DDHRESULT( 400 )
+
+/*
+ * This surface is already attached to the surface it is being attached to.
+ */
+#define DDERR_SURFACEALREADYATTACHED MAKE_DDHRESULT( 410 )
+
+/*
+ * This surface is already a dependency of the surface it is being made a
+ * dependency of.
+ */
+#define DDERR_SURFACEALREADYDEPENDENT MAKE_DDHRESULT( 420 )
+
+/*
+ * Access to this surface is being refused because the surface is already
+ * locked by another thread.
+ */
+#define DDERR_SURFACEBUSY MAKE_DDHRESULT( 430 )
+
+/*
+ * Access to this surface is being refused because no driver exists
+ * which can supply a pointer to the surface.
+ * This is most likely to happen when attempting to lock the primary
+ * surface when no DCI provider is present.
+ * Will also happen on attempts to lock an optimized surface.
+ */
+#define DDERR_CANTLOCKSURFACE MAKE_DDHRESULT( 435 )
+
+/*
+ * Access to Surface refused because Surface is obscured.
+ */
+#define DDERR_SURFACEISOBSCURED MAKE_DDHRESULT( 440 )
+
+/*
+ * Access to this surface is being refused because the surface is gone.
+ * The DIRECTDRAWSURFACE object representing this surface should
+ * have Restore called on it.
+ */
+#define DDERR_SURFACELOST MAKE_DDHRESULT( 450 )
+
+/*
+ * The requested surface is not attached.
+ */
+#define DDERR_SURFACENOTATTACHED MAKE_DDHRESULT( 460 )
+
+/*
+ * Height requested by DirectDraw is too large.
+ */
+#define DDERR_TOOBIGHEIGHT MAKE_DDHRESULT( 470 )
+
+/*
+ * Size requested by DirectDraw is too large -- The individual height and
+ * width are OK.
+ */
+#define DDERR_TOOBIGSIZE MAKE_DDHRESULT( 480 )
+
+/*
+ * Width requested by DirectDraw is too large.
+ */
+#define DDERR_TOOBIGWIDTH MAKE_DDHRESULT( 490 )
+
+/*
+ * Action not supported.
+ */
+#define DDERR_UNSUPPORTED E_NOTIMPL
+
+/*
+ * Pixel format requested is unsupported by DirectDraw
+ */
+#define DDERR_UNSUPPORTEDFORMAT MAKE_DDHRESULT( 510 )
+
+/*
+ * Bitmask in the pixel format requested is unsupported by DirectDraw
+ */
+#define DDERR_UNSUPPORTEDMASK MAKE_DDHRESULT( 520 )
+
+/*
+ * The specified stream contains invalid data
+ */
+#define DDERR_INVALIDSTREAM MAKE_DDHRESULT( 521 )
+
+/*
+ * vertical blank is in progress
+ */
+#define DDERR_VERTICALBLANKINPROGRESS MAKE_DDHRESULT( 537 )
+
+/*
+ * Informs DirectDraw that the previous Blt which is transfering information
+ * to or from this Surface is incomplete.
+ */
+#define DDERR_WASSTILLDRAWING MAKE_DDHRESULT( 540 )
+
+
+/*
+ * The specified surface type requires specification of the COMPLEX flag
+ */
+#define DDERR_DDSCAPSCOMPLEXREQUIRED MAKE_DDHRESULT( 542 )
+
+
+/*
+ * Rectangle provided was not horizontally aligned on reqd. boundary
+ */
+#define DDERR_XALIGN MAKE_DDHRESULT( 560 )
+
+/*
+ * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver
+ * identifier.
+ */
+#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 )
+
+/*
+ * A DirectDraw object representing this driver has already been created
+ * for this process.
+ */
+#define DDERR_DIRECTDRAWALREADYCREATED MAKE_DDHRESULT( 562 )
+
+/*
+ * A hardware only DirectDraw object creation was attempted but the driver
+ * did not support any hardware.
+ */
+#define DDERR_NODIRECTDRAWHW MAKE_DDHRESULT( 563 )
+
+/*
+ * this process already has created a primary surface
+ */
+#define DDERR_PRIMARYSURFACEALREADYEXISTS MAKE_DDHRESULT( 564 )
+
+/*
+ * software emulation not available.
+ */
+#define DDERR_NOEMULATION MAKE_DDHRESULT( 565 )
+
+/*
+ * region passed to Clipper::GetClipList is too small.
+ */
+#define DDERR_REGIONTOOSMALL MAKE_DDHRESULT( 566 )
+
+/*
+ * an attempt was made to set a clip list for a clipper objec that
+ * is already monitoring an hwnd.
+ */
+#define DDERR_CLIPPERISUSINGHWND MAKE_DDHRESULT( 567 )
+
+/*
+ * No clipper object attached to surface object
+ */
+#define DDERR_NOCLIPPERATTACHED MAKE_DDHRESULT( 568 )
+
+/*
+ * Clipper notification requires an HWND or
+ * no HWND has previously been set as the CooperativeLevel HWND.
+ */
+#define DDERR_NOHWND MAKE_DDHRESULT( 569 )
+
+/*
+ * HWND used by DirectDraw CooperativeLevel has been subclassed,
+ * this prevents DirectDraw from restoring state.
+ */
+#define DDERR_HWNDSUBCLASSED MAKE_DDHRESULT( 570 )
+
+/*
+ * The CooperativeLevel HWND has already been set.
+ * It can not be reset while the process has surfaces or palettes created.
+ */
+#define DDERR_HWNDALREADYSET MAKE_DDHRESULT( 571 )
+
+/*
+ * No palette object attached to this surface.
+ */
+#define DDERR_NOPALETTEATTACHED MAKE_DDHRESULT( 572 )
+
+/*
+ * No hardware support for 16 or 256 color palettes.
+ */
+#define DDERR_NOPALETTEHW MAKE_DDHRESULT( 573 )
+
+/*
+ * If a clipper object is attached to the source surface passed into a
+ * BltFast call.
+ */
+#define DDERR_BLTFASTCANTCLIP MAKE_DDHRESULT( 574 )
+
+/*
+ * No blter.
+ */
+#define DDERR_NOBLTHW MAKE_DDHRESULT( 575 )
+
+/*
+ * No DirectDraw ROP hardware.
+ */
+#define DDERR_NODDROPSHW MAKE_DDHRESULT( 576 )
+
+/*
+ * returned when GetOverlayPosition is called on a hidden overlay
+ */
+#define DDERR_OVERLAYNOTVISIBLE MAKE_DDHRESULT( 577 )
+
+/*
+ * returned when GetOverlayPosition is called on a overlay that UpdateOverlay
+ * has never been called on to establish a destionation.
+ */
+#define DDERR_NOOVERLAYDEST MAKE_DDHRESULT( 578 )
+
+/*
+ * returned when the position of the overlay on the destionation is no longer
+ * legal for that destionation.
+ */
+#define DDERR_INVALIDPOSITION MAKE_DDHRESULT( 579 )
+
+/*
+ * returned when an overlay member is called for a non-overlay surface
+ */
+#define DDERR_NOTAOVERLAYSURFACE MAKE_DDHRESULT( 580 )
+
+/*
+ * An attempt was made to set the cooperative level when it was already
+ * set to exclusive.
+ */
+#define DDERR_EXCLUSIVEMODEALREADYSET MAKE_DDHRESULT( 581 )
+
+/*
+ * An attempt has been made to flip a surface that is not flippable.
+ */
+#define DDERR_NOTFLIPPABLE MAKE_DDHRESULT( 582 )
+
+/*
+ * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly
+ * created.
+ */
+#define DDERR_CANTDUPLICATE MAKE_DDHRESULT( 583 )
+
+/*
+ * Surface was not locked. An attempt to unlock a surface that was not
+ * locked at all, or by this process, has been attempted.
+ */
+#define DDERR_NOTLOCKED MAKE_DDHRESULT( 584 )
+
+/*
+ * Windows can not create any more DCs, or a DC was requested for a paltte-indexed
+ * surface when the surface had no palette AND the display mode was not palette-indexed
+ * (in this case DirectDraw cannot select a proper palette into the DC)
+ */
+#define DDERR_CANTCREATEDC MAKE_DDHRESULT( 585 )
+
+/*
+ * No DC was ever created for this surface.
+ */
+#define DDERR_NODC MAKE_DDHRESULT( 586 )
+
+/*
+ * This surface can not be restored because it was created in a different
+ * mode.
+ */
+#define DDERR_WRONGMODE MAKE_DDHRESULT( 587 )
+
+/*
+ * This surface can not be restored because it is an implicitly created
+ * surface.
+ */
+#define DDERR_IMPLICITLYCREATED MAKE_DDHRESULT( 588 )
+
+/*
+ * The surface being used is not a palette-based surface
+ */
+#define DDERR_NOTPALETTIZED MAKE_DDHRESULT( 589 )
+
+
+/*
+ * The display is currently in an unsupported mode
+ */
+#define DDERR_UNSUPPORTEDMODE MAKE_DDHRESULT( 590 )
+
+/*
+ * Operation could not be carried out because there is no mip-map
+ * texture mapping hardware present or available.
+ */
+#define DDERR_NOMIPMAPHW MAKE_DDHRESULT( 591 )
+
+/*
+ * The requested action could not be performed because the surface was of
+ * the wrong type.
+ */
+#define DDERR_INVALIDSURFACETYPE MAKE_DDHRESULT( 592 )
+
+
+/*
+ * Device does not support optimized surfaces, therefore no video memory optimized surfaces
+ */
+#define DDERR_NOOPTIMIZEHW MAKE_DDHRESULT( 600 )
+
+/*
+ * Surface is an optimized surface, but has not yet been allocated any memory
+ */
+#define DDERR_NOTLOADED MAKE_DDHRESULT( 601 )
+
+/*
+ * Attempt was made to create or set a device window without first setting
+ * the focus window
+ */
+#define DDERR_NOFOCUSWINDOW MAKE_DDHRESULT( 602 )
+
+/*
+ * Attempt was made to set a palette on a mipmap sublevel
+ */
+#define DDERR_NOTONMIPMAPSUBLEVEL MAKE_DDHRESULT( 603 )
+
+/*
+ * A DC has already been returned for this surface. Only one DC can be
+ * retrieved per surface.
+ */
+#define DDERR_DCALREADYCREATED MAKE_DDHRESULT( 620 )
+
+/*
+ * An attempt was made to allocate non-local video memory from a device
+ * that does not support non-local video memory.
+ */
+#define DDERR_NONONLOCALVIDMEM MAKE_DDHRESULT( 630 )
+
+/*
+ * The attempt to page lock a surface failed.
+ */
+#define DDERR_CANTPAGELOCK MAKE_DDHRESULT( 640 )
+
+
+/*
+ * The attempt to page unlock a surface failed.
+ */
+#define DDERR_CANTPAGEUNLOCK MAKE_DDHRESULT( 660 )
+
+/*
+ * An attempt was made to page unlock a surface with no outstanding page locks.
+ */
+#define DDERR_NOTPAGELOCKED MAKE_DDHRESULT( 680 )
+
+/*
+ * There is more data available than the specified buffer size could hold
+ */
+#define DDERR_MOREDATA MAKE_DDHRESULT( 690 )
+
+/*
+ * The data has expired and is therefore no longer valid.
+ */
+#define DDERR_EXPIRED MAKE_DDHRESULT( 691 )
+
+/*
+ * The mode test has finished executing.
+ */
+#define DDERR_TESTFINISHED MAKE_DDHRESULT( 692 )
+
+/*
+ * The mode test has switched to a new mode.
+ */
+#define DDERR_NEWMODE MAKE_DDHRESULT( 693 )
+
+/*
+ * D3D has not yet been initialized.
+ */
+#define DDERR_D3DNOTINITIALIZED MAKE_DDHRESULT( 694 )
+
+/*
+ * The video port is not active
+ */
+#define DDERR_VIDEONOTACTIVE MAKE_DDHRESULT( 695 )
+
+/*
+ * The monitor does not have EDID data.
+ */
+#define DDERR_NOMONITORINFORMATION MAKE_DDHRESULT( 696 )
+
+/*
+ * The driver does not enumerate display mode refresh rates.
+ */
+#define DDERR_NODRIVERSUPPORT MAKE_DDHRESULT( 697 )
+
+/*
+ * Surfaces created by one direct draw device cannot be used directly by
+ * another direct draw device.
+ */
+#define DDERR_DEVICEDOESNTOWNSURFACE MAKE_DDHRESULT( 699 )
+
+
+
+/*
+ * An attempt was made to invoke an interface member of a DirectDraw object
+ * created by CoCreateInstance() before it was initialized.
+ */
+#define DDERR_NOTINITIALIZED CO_E_NOTINITIALIZED
+
+
+/* Alpha bit depth constants */
+
+
+#ifdef __cplusplus
+};
+#endif
+
+#ifdef ENABLE_NAMELESS_UNION_PRAGMA
+#pragma warning(default:4201)
+#endif
+
+#endif //__DDRAW_INCLUDED__
+
+
diff --git a/dependencies/DXSDK_Aug2007/include/dplay.h b/dependencies/DXSDK_Aug2007/include/dplay.h
new file mode 100644
index 0000000..d91c0a5
--- /dev/null
+++ b/dependencies/DXSDK_Aug2007/include/dplay.h
@@ -0,0 +1,2154 @@
+/*==========================================================================;
+ *
+ * Copyright (C) 1994-1997 Microsoft Corporation. All Rights Reserved.
+ *
+ * File: dplay.h
+ * Content: DirectPlay include file
+ *
+ ***************************************************************************/
+
+#ifndef __DPLAY_INCLUDED__
+#define __DPLAY_INCLUDED__
+
+#include // for DECLARE_INTERFACE and HRESULT
+
+/* avoid warnings in MSVC at Level4 */
+#if _MSC_VER >= 1200
+#pragma warning(push)
+#endif
+#pragma warning(disable:4201)
+
+
+/*
+ * Some types
+ */
+
+#ifndef _WIN64
+#define DWORD_PTR DWORD
+#endif
+
+typedef LPVOID (*LPRGLPVOID)[];
+typedef LPRGLPVOID PRGPVOID, LPRGPVOID, PRGLPVOID, PAPVOID, LPAPVOID, PALPVOID, LPALPVOID;
+
+#define VOL volatile
+typedef VOID *VOL LPVOIDV;
+
+
+#define _FACDP 0x877
+#define MAKE_DPHRESULT( code ) MAKE_HRESULT( 1, _FACDP, code )
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * GUIDS used by DirectPlay objects
+ */
+DEFINE_GUID(IID_IDirectPlay2, 0x2b74f7c0, 0x9154, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
+DEFINE_GUID(IID_IDirectPlay2A,0x9d460580, 0xa822, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
+
+DEFINE_GUID(IID_IDirectPlay3, 0x133efe40, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
+DEFINE_GUID(IID_IDirectPlay3A,0x133efe41, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
+
+DEFINE_GUID(IID_IDirectPlay4, 0xab1c530, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
+DEFINE_GUID(IID_IDirectPlay4A,0xab1c531, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
+
+// {D1EB6D20-8923-11d0-9D97-00A0C90A43CB}
+DEFINE_GUID(CLSID_DirectPlay,0xd1eb6d20, 0x8923, 0x11d0, 0x9d, 0x97, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
+
+/*
+ * GUIDS used by Service Providers shipped with DirectPlay
+ * Use these to identify Service Provider returned by EnumConnections
+ */
+
+// GUID for IPX service provider
+// {685BC400-9D2C-11cf-A9CD-00AA006886E3}
+DEFINE_GUID(DPSPGUID_IPX,
+0x685bc400, 0x9d2c, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
+
+// GUID for TCP/IP service provider
+// 36E95EE0-8577-11cf-960C-0080C7534E82
+DEFINE_GUID(DPSPGUID_TCPIP,
+0x36E95EE0, 0x8577, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
+
+// GUID for Serial service provider
+// {0F1D6860-88D9-11cf-9C4E-00A0C905425E}
+DEFINE_GUID(DPSPGUID_SERIAL,
+0xf1d6860, 0x88d9, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+
+// GUID for Modem service provider
+// {44EAA760-CB68-11cf-9C4E-00A0C905425E}
+DEFINE_GUID(DPSPGUID_MODEM,
+0x44eaa760, 0xcb68, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
+
+/****************************************************************************
+ *
+ * DirectPlay Structures
+ *
+ * Various structures used to invoke DirectPlay.
+ *
+ ****************************************************************************/
+
+#ifndef IDIRECTPLAY2_OR_GREATER
+typedef struct IDirectPlay FAR *LPDIRECTPLAY;
+#else
+typedef struct IUnknown FAR *LPDIRECTPLAY;
+#endif
+
+typedef struct IDirectPlay2 FAR *LPDIRECTPLAY2;
+typedef struct IDirectPlay2 FAR *LPDIRECTPLAY2A;
+typedef struct IDirectPlay2 IDirectPlay2A;
+
+typedef struct IDirectPlay3 FAR *LPDIRECTPLAY3;
+typedef struct IDirectPlay3 FAR *LPDIRECTPLAY3A;
+typedef struct IDirectPlay3 IDirectPlay3A;
+
+typedef struct IDirectPlay4 FAR *LPDIRECTPLAY4;
+typedef struct IDirectPlay4 FAR *LPDIRECTPLAY4A;
+typedef struct IDirectPlay4 IDirectPlay4A;
+
+/*
+ * DPID
+ * DirectPlay player and group ID
+ */
+typedef DWORD DPID, FAR *LPDPID;
+
+/*
+ * DPID that system messages come from
+ */
+#define DPID_SYSMSG 0
+
+/*
+ * DPID representing all players in the session
+ */
+#define DPID_ALLPLAYERS 0
+
+/*
+ * DPID representing the server player
+ */
+#define DPID_SERVERPLAYER 1
+
+
+/*
+ * DPID representing the maxiumum ID in the range of DPID's reserved for
+ * use by DirectPlay.
+ */
+#define DPID_RESERVEDRANGE 100
+
+/*
+ * The player ID is unknown (used with e.g. DPSESSION_NOMESSAGEID)
+ */
+#define DPID_UNKNOWN 0xFFFFFFFF
+
+/*
+ * DPCAPS
+ * Used to obtain the capabilities of a DirectPlay object
+ */
+typedef struct
+{
+ DWORD dwSize; // Size of structure, in bytes
+ DWORD dwFlags; // DPCAPS_xxx flags
+ DWORD dwMaxBufferSize; // Maximum message size, in bytes, for this service provider
+ DWORD dwMaxQueueSize; // Obsolete.
+ DWORD dwMaxPlayers; // Maximum players/groups (local + remote)
+ DWORD dwHundredBaud; // Bandwidth in 100 bits per second units;
+ // i.e. 24 is 2400, 96 is 9600, etc.
+ DWORD dwLatency; // Estimated latency; 0 = unknown
+ DWORD dwMaxLocalPlayers; // Maximum # of locally created players allowed
+ DWORD dwHeaderLength; // Maximum header length, in bytes, on messages
+ // added by the service provider
+ DWORD dwTimeout; // Service provider's suggested timeout value
+ // This is how long DirectPlay will wait for
+ // responses to system messages
+} DPCAPS, FAR *LPDPCAPS;
+
+/*
+ * This DirectPlay object is the session host. If the host exits the
+ * session, another application will become the host and receive a
+ * DPSYS_HOST system message.
+ */
+#define DPCAPS_ISHOST 0x00000002
+
+/*
+ * The service provider bound to this DirectPlay object can optimize
+ * group messaging.
+ */
+#define DPCAPS_GROUPOPTIMIZED 0x00000008
+
+/*
+ * The service provider bound to this DirectPlay object can optimize
+ * keep alives (see DPSESSION_KEEPALIVE)
+ */
+#define DPCAPS_KEEPALIVEOPTIMIZED 0x00000010
+
+/*
+ * The service provider bound to this DirectPlay object can optimize
+ * guaranteed message delivery.
+ */
+#define DPCAPS_GUARANTEEDOPTIMIZED 0x00000020
+
+/*
+ * This DirectPlay object supports guaranteed message delivery.
+ */
+#define DPCAPS_GUARANTEEDSUPPORTED 0x00000040
+
+/*
+ * This DirectPlay object supports digital signing of messages.
+ */
+#define DPCAPS_SIGNINGSUPPORTED 0x00000080
+
+/*
+ * This DirectPlay object supports encryption of messages.
+ */
+#define DPCAPS_ENCRYPTIONSUPPORTED 0x00000100
+
+/*
+ * This DirectPlay player was created on this machine
+ */
+#define DPPLAYERCAPS_LOCAL 0x00000800
+
+/*
+ * Current Open settings supports all forms of Cancel
+ */
+#define DPCAPS_ASYNCCANCELSUPPORTED 0x00001000
+
+/*
+ * Current Open settings supports CancelAll, but not Cancel
+ */
+#define DPCAPS_ASYNCCANCELALLSUPPORTED 0x00002000
+
+/*
+ * Current Open settings supports Send Timeouts for sends
+ */
+#define DPCAPS_SENDTIMEOUTSUPPORTED 0x00004000
+
+/*
+ * Current Open settings supports send priority
+ */
+#define DPCAPS_SENDPRIORITYSUPPORTED 0x00008000
+
+/*
+ * Current Open settings supports DPSEND_ASYNC flag
+ */
+#define DPCAPS_ASYNCSUPPORTED 0x00010000
+
+
+/*
+ * DPSESSIONDESC2
+ * Used to describe the properties of a DirectPlay
+ * session instance
+ */
+typedef struct
+{
+ DWORD dwSize; // Size of structure
+ DWORD dwFlags; // DPSESSION_xxx flags
+ GUID guidInstance; // ID for the session instance
+ GUID guidApplication; // GUID of the DirectPlay application.
+ // GUID_NULL for all applications.
+ DWORD dwMaxPlayers; // Maximum # players allowed in session
+ DWORD dwCurrentPlayers; // Current # players in session (read only)
+ union
+ { // Name of the session
+ LPWSTR lpszSessionName; // Unicode
+ LPSTR lpszSessionNameA; // ANSI
+ };
+ union
+ { // Password of the session (optional)
+ LPWSTR lpszPassword; // Unicode
+ LPSTR lpszPasswordA; // ANSI
+ };
+ DWORD_PTR dwReserved1; // Reserved for future MS use.
+ DWORD_PTR dwReserved2;
+ DWORD_PTR dwUser1; // For use by the application
+ DWORD_PTR dwUser2;
+ DWORD_PTR dwUser3;
+ DWORD_PTR dwUser4;
+} DPSESSIONDESC2, FAR *LPDPSESSIONDESC2;
+
+typedef DPSESSIONDESC2 * VOL LPDPSESSIONDESC2_V;
+
+/*
+ * LPCDPSESSIONDESC2
+ * A constant pointer to DPSESSIONDESC2
+ */
+typedef const DPSESSIONDESC2 FAR *LPCDPSESSIONDESC2;
+
+/*
+ * Applications cannot create new players in this session.
+ */
+#define DPSESSION_NEWPLAYERSDISABLED 0x00000001
+
+/*
+ * If the DirectPlay object that created the session, the host,
+ * quits, then the host will attempt to migrate to another
+ * DirectPlay object so that new players can continue to be created
+ * and new applications can join the session.
+ */
+#define DPSESSION_MIGRATEHOST 0x00000004
+
+/*
+ * This flag tells DirectPlay not to set the idPlayerTo and idPlayerFrom
+ * fields in player messages. This cuts two DWORD's off the message
+ * overhead.
+ */
+#define DPSESSION_NOMESSAGEID 0x00000008
+
+
+/*
+ * This flag tells DirectPlay to not allow any new applications to
+ * join the session. Applications already in the session can still
+ * create new players.
+ */
+#define DPSESSION_JOINDISABLED 0x00000020
+
+/*
+ * This flag tells DirectPlay to detect when remote players
+ * exit abnormally (e.g. their computer or modem gets unplugged)
+ */
+#define DPSESSION_KEEPALIVE 0x00000040
+
+/*
+ * This flag tells DirectPlay not to send a message to all players
+ * when a players remote data changes
+ */
+#define DPSESSION_NODATAMESSAGES 0x00000080
+
+/*
+ * This flag indicates that the session belongs to a secure server
+ * and needs user authentication
+ */
+#define DPSESSION_SECURESERVER 0x00000100
+
+/*
+ * This flag indicates that the session is private and requirs a password
+ * for EnumSessions as well as Open.
+ */
+#define DPSESSION_PRIVATE 0x00000200
+
+/*
+ * This flag indicates that the session requires a password for joining.
+ */
+#define DPSESSION_PASSWORDREQUIRED 0x00000400
+
+/*
+ * This flag tells DirectPlay to route all messages through the server
+ */
+#define DPSESSION_MULTICASTSERVER 0x00000800
+
+/*
+ * This flag tells DirectPlay to only download information about the
+ * DPPLAYER_SERVERPLAYER.
+ */
+#define DPSESSION_CLIENTSERVER 0x00001000
+
+/*
+ * This flag tells DirectPlay to use the protocol built into dplay
+ * for reliability and statistics all the time. When this bit is
+ * set, only other sessions with this bit set can join or be joined.
+ */
+#define DPSESSION_DIRECTPLAYPROTOCOL 0x00002000
+
+/*
+ * This flag tells DirectPlay that preserving order of received
+ * packets is not important, when using reliable delivery. This
+ * will allow messages to be indicated out of order if preceding
+ * messages have not yet arrived. Otherwise DPLAY will wait for
+ * earlier messages before delivering later reliable messages.
+ */
+#define DPSESSION_NOPRESERVEORDER 0x00004000
+
+
+/*
+ * This flag tells DirectPlay to optimize communication for latency
+ */
+#define DPSESSION_OPTIMIZELATENCY 0x00008000
+
+/*
+ * This flag allows lobby launched games that aren't voice enabled
+ * to get voice capabilities.
+ */
+#define DPSESSION_ALLOWVOICERETRO 0x00010000
+
+/*
+ * This flag supresses transmission of session desc changes.
+ * DPSESSION_NODATAMESSAGES was supposed to do that, but SetSessionDesc
+ * was ignoring the flag and some apps depended on the broken behavior, this
+ * flag allows applications to get the right behaviour without breaking apps depending
+ * on old broken behavior.
+ */
+#define DPSESSION_NOSESSIONDESCMESSAGES 0x00020000
+
+/*
+ * DPNAME
+ * Used to hold the name of a DirectPlay entity
+ * like a player or a group
+ */
+typedef struct
+{
+ DWORD dwSize; // Size of structure
+ DWORD dwFlags; // Not used. Must be zero.
+ union
+ { // The short or friendly name
+ LPWSTR lpszShortName; // Unicode
+ LPSTR lpszShortNameA; // ANSI
+ };
+ union
+ { // The long or formal name
+ LPWSTR lpszLongName; // Unicode
+ LPSTR lpszLongNameA; // ANSI
+ };
+
+} DPNAME, FAR *LPDPNAME;
+
+/*
+ * LPCDPNAME
+ * A constant pointer to DPNAME
+ */
+typedef const DPNAME FAR *LPCDPNAME;
+
+/*
+ * DPCREDENTIALS
+ * Used to hold the user name and password of a DirectPlay user
+ */
+typedef struct
+{
+ DWORD dwSize; // Size of structure
+ DWORD dwFlags; // Not used. Must be zero.
+ union
+ { // User name of the account
+ LPWSTR lpszUsername; // Unicode
+ LPSTR lpszUsernameA; // ANSI
+ };
+ union
+ { // Password of the account
+ LPWSTR lpszPassword; // Unicode
+ LPSTR lpszPasswordA; // ANSI
+ };
+ union
+ { // Domain name of the account
+ LPWSTR lpszDomain; // Unicode
+ LPSTR lpszDomainA; // ANSI
+ };
+} DPCREDENTIALS, FAR *LPDPCREDENTIALS;
+
+typedef const DPCREDENTIALS FAR *LPCDPCREDENTIALS;
+
+/*
+ * DPSECURITYDESC
+ * Used to describe the security properties of a DirectPlay
+ * session instance
+ */
+typedef struct
+{
+ DWORD dwSize; // Size of structure
+ DWORD dwFlags; // Not used. Must be zero.
+ union
+ { // SSPI provider name
+ LPWSTR lpszSSPIProvider; // Unicode
+ LPSTR lpszSSPIProviderA; // ANSI
+ };
+ union
+ { // CAPI provider name
+ LPWSTR lpszCAPIProvider; // Unicode
+ LPSTR lpszCAPIProviderA; // ANSI
+ };
+ DWORD dwCAPIProviderType; // Crypto Service Provider type
+ DWORD dwEncryptionAlgorithm; // Encryption Algorithm type
+} DPSECURITYDESC, FAR *LPDPSECURITYDESC;
+
+typedef const DPSECURITYDESC FAR *LPCDPSECURITYDESC;
+
+/*
+ * DPACCOUNTDESC
+ * Used to describe a user membership account
+ */
+typedef struct
+{
+ DWORD dwSize; // Size of structure
+ DWORD dwFlags; // Not used. Must be zero.
+ union
+ { // Account identifier
+ LPWSTR lpszAccountID; // Unicode
+ LPSTR lpszAccountIDA; // ANSI
+ };
+} DPACCOUNTDESC, FAR *LPDPACCOUNTDESC;
+
+typedef const DPACCOUNTDESC FAR *LPCDPACCOUNTDESC;
+
+/*
+ * LPCGUID
+ * A constant pointer to a guid
+ */
+typedef const GUID FAR *LPCGUID;
+
+/*
+ * DPLCONNECTION
+ * Used to hold all in the informaion needed to connect
+ * an application to a session or create a session
+ */
+typedef struct
+{
+ DWORD dwSize; // Size of this structure
+ DWORD dwFlags; // Flags specific to this structure
+ LPDPSESSIONDESC2 lpSessionDesc; // Pointer to session desc to use on connect
+ LPDPNAME lpPlayerName; // Pointer to Player name structure
+ GUID guidSP; // GUID of the DPlay SP to use
+ LPVOID lpAddress; // Address for service provider
+ DWORD dwAddressSize; // Size of address data
+} DPLCONNECTION, FAR *LPDPLCONNECTION;
+
+/*
+ * LPCDPLCONNECTION
+ * A constant pointer to DPLCONNECTION
+ */
+typedef const DPLCONNECTION FAR *LPCDPLCONNECTION;
+
+/*
+ * DPCHAT
+ * Used to hold the a DirectPlay chat message
+ */
+typedef struct
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ union
+ { // Message string
+ LPWSTR lpszMessage; // Unicode
+ LPSTR lpszMessageA; // ANSI
+ };
+} DPCHAT, FAR * LPDPCHAT;
+
+/*
+ * SGBUFFER
+ * Scatter Gather Buffer used for SendEx
+ */
+typedef struct
+{
+ UINT len; // length of buffer data
+ PUCHAR pData; // pointer to buffer data
+} SGBUFFER, *PSGBUFFER, FAR *LPSGBUFFER;
+
+
+/****************************************************************************
+ *
+ * Prototypes for DirectPlay callback functions
+ *
+ ****************************************************************************/
+
+/*
+ * Callback for IDirectPlay2::EnumSessions
+ */
+typedef BOOL (FAR PASCAL * LPDPENUMSESSIONSCALLBACK2)(
+ LPCDPSESSIONDESC2 lpThisSD,
+ LPDWORD lpdwTimeOut,
+ DWORD dwFlags,
+ LPVOID lpContext );
+
+/*
+ * This flag is set on the EnumSessions callback dwFlags parameter when
+ * the time out has occurred. There will be no session data for this
+ * callback. If *lpdwTimeOut is set to a non-zero value and the
+ * EnumSessionsCallback function returns TRUE then EnumSessions will
+ * continue waiting until the next timeout occurs. Timeouts are in
+ * milliseconds.
+ */
+#define DPESC_TIMEDOUT 0x00000001
+
+
+/*
+ * Callback for IDirectPlay2::EnumPlayers
+ * IDirectPlay2::EnumGroups
+ * IDirectPlay2::EnumGroupPlayers
+ */
+typedef BOOL (FAR PASCAL *LPDPENUMPLAYERSCALLBACK2)(
+ DPID dpId,
+ DWORD dwPlayerType,
+ LPCDPNAME lpName,
+ DWORD dwFlags,
+ LPVOID lpContext );
+
+
+/*
+ * Unicode callback for DirectPlayEnumerate
+ * This callback prototype will be used if compiling
+ * for Unicode strings
+ */
+typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACK)(
+ LPGUID lpguidSP,
+ LPWSTR lpSPName,
+ DWORD dwMajorVersion,
+ DWORD dwMinorVersion,
+ LPVOID lpContext);
+
+/*
+ * ANSI callback for DirectPlayEnumerate
+ * This callback prototype will be used if compiling
+ * for ANSI strings
+ */
+typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACKA)(
+ LPGUID lpguidSP,
+ LPSTR lpSPName,
+ DWORD dwMajorVersion,
+ DWORD dwMinorVersion,
+ LPVOID lpContext);
+
+/*
+ * Callback for IDirectPlay3(A)::EnumConnections
+ */
+typedef BOOL (FAR PASCAL * LPDPENUMCONNECTIONSCALLBACK)(
+ LPCGUID lpguidSP,
+ LPVOID lpConnection,
+ DWORD dwConnectionSize,
+ LPCDPNAME lpName,
+ DWORD dwFlags,
+ LPVOID lpContext);
+
+
+/*
+ * API's
+ */
+
+#ifdef UNICODE
+#define DirectPlayEnumerate DirectPlayEnumerateW
+#else
+#define DirectPlayEnumerate DirectPlayEnumerateA
+#endif // UNICODE
+
+extern HRESULT WINAPI DirectPlayEnumerateA( LPDPENUMDPCALLBACKA, LPVOID );
+extern HRESULT WINAPI DirectPlayEnumerateW( LPDPENUMDPCALLBACK, LPVOID );
+extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY *lplpDP, IUnknown *pUnk);
+
+/****************************************************************************
+ *
+ * IDirectPlay2 (and IDirectPlay2A) Interface
+ *
+ ****************************************************************************/
+
+#undef INTERFACE
+#define INTERFACE IDirectPlay2
+DECLARE_INTERFACE_( IDirectPlay2, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectPlay2 methods ***/
+ STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
+ STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
+ STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
+ STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE;
+ STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
+ STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
+ STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE;
+ STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
+ STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE;
+ STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
+ STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
+ STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
+ STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
+ STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
+ STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
+ STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
+};
+
+/****************************************************************************
+ *
+ * IDirectPlay2 interface macros
+ *
+ ****************************************************************************/
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+
+#define IDirectPlay2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectPlay2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectPlay2_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlay2_Close(p) (p)->lpVtbl->Close(p)
+#define IDirectPlay2_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
+#define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
+#define IDirectPlay2_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlay2_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlay2_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
+#define IDirectPlay2_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlay2_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlay2_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlay2_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectPlay2_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlay2_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d)
+#define IDirectPlay2_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c)
+#define IDirectPlay2_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
+#define IDirectPlay2_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
+#define IDirectPlay2_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
+#define IDirectPlay2_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c)
+#define IDirectPlay2_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b)
+#define IDirectPlay2_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlay2_Open(p,a,b) (p)->lpVtbl->Open(p,a,b)
+#define IDirectPlay2_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlay2_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlay2_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d)
+#define IDirectPlay2_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c)
+#define IDirectPlay2_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
+#define IDirectPlay2_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
+#define IDirectPlay2_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b)
+
+#else /* C++ */
+
+#define IDirectPlay2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectPlay2_AddRef(p) (p)->AddRef()
+#define IDirectPlay2_Release(p) (p)->Release()
+#define IDirectPlay2_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b)
+#define IDirectPlay2_Close(p) (p)->Close()
+#define IDirectPlay2_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e)
+#define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f)
+#define IDirectPlay2_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b)
+#define IDirectPlay2_DestroyGroup(p,a) (p)->DestroyGroup(a)
+#define IDirectPlay2_DestroyPlayer(p,a) (p)->DestroyPlayer(a)
+#define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
+#define IDirectPlay2_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d)
+#define IDirectPlay2_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d)
+#define IDirectPlay2_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e)
+#define IDirectPlay2_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirectPlay2_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b)
+#define IDirectPlay2_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d)
+#define IDirectPlay2_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c)
+#define IDirectPlay2_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c)
+#define IDirectPlay2_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c)
+#define IDirectPlay2_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d)
+#define IDirectPlay2_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c)
+#define IDirectPlay2_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b)
+#define IDirectPlay2_Initialize(p,a) (p)->Initialize(a)
+#define IDirectPlay2_Open(p,a,b) (p)->Open(a,b)
+#define IDirectPlay2_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e)
+#define IDirectPlay2_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e)
+#define IDirectPlay2_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d)
+#define IDirectPlay2_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c)
+#define IDirectPlay2_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d)
+#define IDirectPlay2_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c)
+#define IDirectPlay2_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b)
+
+#endif
+
+/****************************************************************************
+ *
+ * IDirectPlay3 (and IDirectPlay3A) Interface
+ *
+ ****************************************************************************/
+
+#undef INTERFACE
+#define INTERFACE IDirectPlay3
+DECLARE_INTERFACE_( IDirectPlay3, IDirectPlay2 )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectPlay2 methods ***/
+ STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
+ STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
+ STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
+ STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE;
+ STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
+ STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
+ STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE;
+ STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
+ STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE;
+ STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
+ STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
+ STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
+ STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
+ STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
+ STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
+ STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
+ /*** IDirectPlay3 methods ***/
+ STDMETHOD(AddGroupToGroup) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(CreateGroupInGroup) (THIS_ DPID,LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DeleteGroupFromGroup) (THIS_ DPID,DPID) PURE;
+ STDMETHOD(EnumConnections) (THIS_ LPCGUID,LPDPENUMCONNECTIONSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumGroupsInGroup) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD, DPID, LPVOID, LPDWORD) PURE;
+ STDMETHOD(InitializeConnection) (THIS_ LPVOID,DWORD) PURE;
+ STDMETHOD(SecureOpen) (THIS_ LPCDPSESSIONDESC2,DWORD,LPCDPSECURITYDESC,LPCDPCREDENTIALS) PURE;
+ STDMETHOD(SendChatMessage) (THIS_ DPID,DPID,DWORD,LPDPCHAT) PURE;
+ STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD,DPID,LPDPLCONNECTION) PURE;
+ STDMETHOD(StartSession) (THIS_ DWORD,DPID) PURE;
+ STDMETHOD(GetGroupFlags) (THIS_ DPID,LPDWORD) PURE;
+ STDMETHOD(GetGroupParent) (THIS_ DPID,LPDPID) PURE;
+ STDMETHOD(GetPlayerAccount) (THIS_ DPID, DWORD, LPVOID, LPDWORD) PURE;
+ STDMETHOD(GetPlayerFlags) (THIS_ DPID,LPDWORD) PURE;
+};
+
+/****************************************************************************
+ *
+ * IDirectPlay3 interface macros
+ *
+ ****************************************************************************/
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+
+#define IDirectPlay3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay3_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectPlay3_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectPlay3_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlay3_Close(p) (p)->lpVtbl->Close(p)
+#define IDirectPlay3_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
+#define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
+#define IDirectPlay3_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlay3_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlay3_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
+#define IDirectPlay3_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlay3_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlay3_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlay3_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectPlay3_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlay3_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d)
+#define IDirectPlay3_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c)
+#define IDirectPlay3_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
+#define IDirectPlay3_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
+#define IDirectPlay3_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
+#define IDirectPlay3_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c)
+#define IDirectPlay3_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b)
+#define IDirectPlay3_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlay3_Open(p,a,b) (p)->lpVtbl->Open(p,a,b)
+#define IDirectPlay3_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlay3_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlay3_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d)
+#define IDirectPlay3_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c)
+#define IDirectPlay3_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
+#define IDirectPlay3_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
+#define IDirectPlay3_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b)
+#define IDirectPlay3_AddGroupToGroup(p,a,b) (p)->lpVtbl->AddGroupToGroup(p,a,b)
+#define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f)
+#define IDirectPlay3_DeleteGroupFromGroup(p,a,b) (p)->lpVtbl->DeleteGroupFromGroup(p,a,b)
+#define IDirectPlay3_EnumConnections(p,a,b,c,d) (p)->lpVtbl->EnumConnections(p,a,b,c,d)
+#define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e)
+#define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d)
+#define IDirectPlay3_InitializeConnection(p,a,b) (p)->lpVtbl->InitializeConnection(p,a,b)
+#define IDirectPlay3_SecureOpen(p,a,b,c,d) (p)->lpVtbl->SecureOpen(p,a,b,c,d)
+#define IDirectPlay3_SendChatMessage(p,a,b,c,d) (p)->lpVtbl->SendChatMessage(p,a,b,c,d)
+#define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c) (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c)
+#define IDirectPlay3_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b)
+#define IDirectPlay3_GetGroupFlags(p,a,b) (p)->lpVtbl->GetGroupFlags(p,a,b)
+#define IDirectPlay3_GetGroupParent(p,a,b) (p)->lpVtbl->GetGroupParent(p,a,b)
+#define IDirectPlay3_GetPlayerAccount(p,a,b,c,d) (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d)
+#define IDirectPlay3_GetPlayerFlags(p,a,b) (p)->lpVtbl->GetPlayerFlags(p,a,b)
+
+#else /* C++ */
+
+#define IDirectPlay3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectPlay3_AddRef(p) (p)->AddRef()
+#define IDirectPlay3_Release(p) (p)->Release()
+#define IDirectPlay3_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b)
+#define IDirectPlay3_Close(p) (p)->Close()
+#define IDirectPlay3_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e)
+#define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f)
+#define IDirectPlay3_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b)
+#define IDirectPlay3_DestroyGroup(p,a) (p)->DestroyGroup(a)
+#define IDirectPlay3_DestroyPlayer(p,a) (p)->DestroyPlayer(a)
+#define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
+#define IDirectPlay3_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d)
+#define IDirectPlay3_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d)
+#define IDirectPlay3_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e)
+#define IDirectPlay3_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirectPlay3_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b)
+#define IDirectPlay3_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d)
+#define IDirectPlay3_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c)
+#define IDirectPlay3_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c)
+#define IDirectPlay3_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c)
+#define IDirectPlay3_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d)
+#define IDirectPlay3_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c)
+#define IDirectPlay3_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b)
+#define IDirectPlay3_Initialize(p,a) (p)->Initialize(a)
+#define IDirectPlay3_Open(p,a,b) (p)->Open(a,b)
+#define IDirectPlay3_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e)
+#define IDirectPlay3_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e)
+#define IDirectPlay3_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d)
+#define IDirectPlay3_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c)
+#define IDirectPlay3_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d)
+#define IDirectPlay3_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c)
+#define IDirectPlay3_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b)
+#define IDirectPlay3_AddGroupToGroup(p,a,b) (p)->AddGroupToGroup(a,b)
+#define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->CreateGroupInGroup(a,b,c,d,e,f)
+#define IDirectPlay3_DeleteGroupFromGroup(p,a,b) (p)->DeleteGroupFromGroup(a,b)
+#define IDirectPlay3_EnumConnections(p,a,b,c,d) (p)->EnumConnections(a,b,c,d)
+#define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e) (p)->EnumGroupsInGroup(a,b,c,d,e)
+#define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d)
+#define IDirectPlay3_InitializeConnection(p,a,b) (p)->InitializeConnection(a,b)
+#define IDirectPlay3_SecureOpen(p,a,b,c,d) (p)->SecureOpen(a,b,c,d)
+#define IDirectPlay3_SendChatMessage(p,a,b,c,d) (p)->SendChatMessage(a,b,c,d)
+#define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c) (p)->SetGroupConnectionSettings(a,b,c)
+#define IDirectPlay3_StartSession(p,a,b) (p)->StartSession(a,b)
+#define IDirectPlay3_GetGroupFlags(p,a,b) (p)->GetGroupFlags(a,b)
+#define IDirectPlay3_GetGroupParent(p,a,b) (p)->GetGroupParent(a,b)
+#define IDirectPlay3_GetPlayerAccount(p,a,b,c,d) (p)->GetPlayerAccount(a,b,c,d)
+#define IDirectPlay3_GetPlayerFlags(p,a,b) (p)->GetPlayerFlags(a,b)
+
+#endif
+
+/****************************************************************************
+ *
+ * IDirectPlay4 (and IDirectPlay4A) Interface
+ *
+ ****************************************************************************/
+
+#undef INTERFACE
+#define INTERFACE IDirectPlay4
+DECLARE_INTERFACE_( IDirectPlay4, IDirectPlay3 )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectPlay2 methods ***/
+ STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
+ STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
+ STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
+ STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE;
+ STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
+ STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
+ STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE;
+ STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
+ STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE;
+ STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
+ STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
+ STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
+ STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
+ STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
+ STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
+ STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
+ /*** IDirectPlay3 methods ***/
+ STDMETHOD(AddGroupToGroup) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(CreateGroupInGroup) (THIS_ DPID,LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DeleteGroupFromGroup) (THIS_ DPID,DPID) PURE;
+ STDMETHOD(EnumConnections) (THIS_ LPCGUID,LPDPENUMCONNECTIONSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumGroupsInGroup) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(GetGroupConnectionSettings)(THIS_ DWORD, DPID, LPVOID, LPDWORD) PURE;
+ STDMETHOD(InitializeConnection) (THIS_ LPVOID,DWORD) PURE;
+ STDMETHOD(SecureOpen) (THIS_ LPCDPSESSIONDESC2,DWORD,LPCDPSECURITYDESC,LPCDPCREDENTIALS) PURE;
+ STDMETHOD(SendChatMessage) (THIS_ DPID,DPID,DWORD,LPDPCHAT) PURE;
+ STDMETHOD(SetGroupConnectionSettings)(THIS_ DWORD,DPID,LPDPLCONNECTION) PURE;
+ STDMETHOD(StartSession) (THIS_ DWORD,DPID) PURE;
+ STDMETHOD(GetGroupFlags) (THIS_ DPID,LPDWORD) PURE;
+ STDMETHOD(GetGroupParent) (THIS_ DPID,LPDPID) PURE;
+ STDMETHOD(GetPlayerAccount) (THIS_ DPID, DWORD, LPVOID, LPDWORD) PURE;
+ STDMETHOD(GetPlayerFlags) (THIS_ DPID,LPDWORD) PURE;
+ /*** IDirectPlay4 methods ***/
+ STDMETHOD(GetGroupOwner) (THIS_ DPID, LPDPID) PURE;
+ STDMETHOD(SetGroupOwner) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(SendEx) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD, DWORD, DWORD, LPVOID, DWORD_PTR *) PURE;
+ STDMETHOD(GetMessageQueue) (THIS_ DPID, DPID, DWORD, LPDWORD, LPDWORD) PURE;
+ STDMETHOD(CancelMessage) (THIS_ DWORD, DWORD) PURE;
+ STDMETHOD(CancelPriority) (THIS_ DWORD, DWORD, DWORD) PURE;
+};
+
+/****************************************************************************
+ *
+ * IDirectPlayX interface macros (for IDirectPlay4 and beyond)
+ *
+ ****************************************************************************/
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+
+#define IDirectPlayX_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlayX_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectPlayX_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectPlayX_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlayX_CancelMessage(p,a,b) (p)->lpVtbl->CancelMessage(p,a,b)
+#define IDirectPlayX_CancelPriority(p,a,b,c) (p)->lpVtbl->CancelPriority(p,a,b,c)
+#define IDirectPlayX_Close(p) (p)->lpVtbl->Close(p)
+#define IDirectPlayX_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
+#define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
+#define IDirectPlayX_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlayX_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlayX_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
+#define IDirectPlayX_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlayX_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlayX_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlayX_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectPlayX_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e) (p)->lpVtbl->GetMessageQueue(p,a,b,c,d,e)
+#define IDirectPlayX_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d)
+#define IDirectPlayX_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c)
+#define IDirectPlayX_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
+#define IDirectPlayX_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
+#define IDirectPlayX_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
+#define IDirectPlayX_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c)
+#define IDirectPlayX_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b)
+#define IDirectPlayX_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlayX_Open(p,a,b) (p)->lpVtbl->Open(p,a,b)
+#define IDirectPlayX_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlayX_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->SendEx(p,a,b,c,d,e,f,g,h,i)
+#define IDirectPlayX_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d)
+#define IDirectPlayX_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c)
+#define IDirectPlayX_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
+#define IDirectPlayX_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
+#define IDirectPlayX_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b)
+#define IDirectPlayX_AddGroupToGroup(p,a,b) (p)->lpVtbl->AddGroupToGroup(p,a,b)
+#define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f)
+#define IDirectPlayX_DeleteGroupFromGroup(p,a,b) (p)->lpVtbl->DeleteGroupFromGroup(p,a,b)
+#define IDirectPlayX_EnumConnections(p,a,b,c,d) (p)->lpVtbl->EnumConnections(p,a,b,c,d)
+#define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e)
+#define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d)
+#define IDirectPlayX_InitializeConnection(p,a,b) (p)->lpVtbl->InitializeConnection(p,a,b)
+#define IDirectPlayX_SecureOpen(p,a,b,c,d) (p)->lpVtbl->SecureOpen(p,a,b,c,d)
+#define IDirectPlayX_SendChatMessage(p,a,b,c,d) (p)->lpVtbl->SendChatMessage(p,a,b,c,d)
+#define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c) (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c)
+#define IDirectPlayX_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b)
+#define IDirectPlayX_GetGroupFlags(p,a,b) (p)->lpVtbl->GetGroupFlags(p,a,b)
+#define IDirectPlayX_GetGroupParent(p,a,b) (p)->lpVtbl->GetGroupParent(p,a,b)
+#define IDirectPlayX_GetPlayerAccount(p,a,b,c,d) (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d)
+#define IDirectPlayX_GetPlayerFlags(p,a,b) (p)->lpVtbl->GetPlayerFlags(p,a,b)
+#define IDirectPlayX_GetGroupOwner(p,a,b) (p)->lpVtbl->GetGroupOwner(p,a,b)
+#define IDirectPlayX_SetGroupOwner(p,a,b) (p)->lpVtbl->SetGroupOwner(p,a,b)
+
+#else /* C++ */
+
+#define IDirectPlayX_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectPlayX_AddRef(p) (p)->AddRef()
+#define IDirectPlayX_Release(p) (p)->Release()
+#define IDirectPlayX_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b)
+#define IDirectPlayX_CancelMessage(p,a,b) (p)->CancelMessage(a,b)
+#define IDirectPlayX_CancelPriority(p,a,b,c) (p)->CancelPriority(a,b,c)
+#define IDirectPlayX_Close(p) (p)->Close()
+#define IDirectPlayX_CreateGroup(p,a,b,c,d,e) (p)->CreateGroup(a,b,c,d,e)
+#define IDirectPlayX_CreatePlayer(p,a,b,c,d,e,f) (p)->CreatePlayer(a,b,c,d,e,f)
+#define IDirectPlayX_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b)
+#define IDirectPlayX_DestroyGroup(p,a) (p)->DestroyGroup(a)
+#define IDirectPlayX_DestroyPlayer(p,a) (p)->DestroyPlayer(a)
+#define IDirectPlayX_EnumGroupPlayers(p,a,b,c,d,e) (p)->EnumGroupPlayers(a,b,c,d,e)
+#define IDirectPlayX_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d)
+#define IDirectPlayX_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d)
+#define IDirectPlayX_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e)
+#define IDirectPlayX_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirectPlayX_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b)
+#define IDirectPlayX_GetMessageQueue(p,a,b,c,d,e) (p)->GetMessageQueue(a,b,c,d,e)
+#define IDirectPlayX_GetGroupData(p,a,b,c,d) (p)->GetGroupData(a,b,c,d)
+#define IDirectPlayX_GetGroupName(p,a,b,c) (p)->GetGroupName(a,b,c)
+#define IDirectPlayX_GetPlayerAddress(p,a,b,c) (p)->GetPlayerAddress(a,b,c)
+#define IDirectPlayX_GetPlayerCaps(p,a,b,c) (p)->GetPlayerCaps(a,b,c)
+#define IDirectPlayX_GetPlayerData(p,a,b,c,d) (p)->GetPlayerData(a,b,c,d)
+#define IDirectPlayX_GetPlayerName(p,a,b,c) (p)->GetPlayerName(a,b,c)
+#define IDirectPlayX_GetSessionDesc(p,a,b) (p)->GetSessionDesc(a,b)
+#define IDirectPlayX_Initialize(p,a) (p)->Initialize(a)
+#define IDirectPlayX_Open(p,a,b) (p)->Open(a,b)
+#define IDirectPlayX_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e)
+#define IDirectPlayX_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e)
+#define IDirectPlayX_SendEx(p,a,b,c,d,e,f,g,h,i) (p)->SendEx(a,b,c,d,e,f,g,h,i)
+#define IDirectPlayX_SetGroupData(p,a,b,c,d) (p)->SetGroupData(a,b,c,d)
+#define IDirectPlayX_SetGroupName(p,a,b,c) (p)->SetGroupName(a,b,c)
+#define IDirectPlayX_SetPlayerData(p,a,b,c,d) (p)->SetPlayerData(a,b,c,d)
+#define IDirectPlayX_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c)
+#define IDirectPlayX_SetSessionDesc(p,a,b) (p)->SetSessionDesc(a,b)
+#define IDirectPlayX_AddGroupToGroup(p,a,b) (p)->AddGroupToGroup(a,b)
+#define IDirectPlayX_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->CreateGroupInGroup(a,b,c,d,e,f)
+#define IDirectPlayX_DeleteGroupFromGroup(p,a,b) (p)->DeleteGroupFromGroup(a,b)
+#define IDirectPlayX_EnumConnections(p,a,b,c,d) (p)->EnumConnections(a,b,c,d)
+#define IDirectPlayX_EnumGroupsInGroup(p,a,b,c,d,e) (p)->EnumGroupsInGroup(a,b,c,d,e)
+#define IDirectPlayX_GetGroupConnectionSettings(p,a,b,c,d) (p)->GetGroupConnectionSettings(a,b,c,d)
+#define IDirectPlayX_InitializeConnection(p,a,b) (p)->InitializeConnection(a,b)
+#define IDirectPlayX_SecureOpen(p,a,b,c,d) (p)->SecureOpen(a,b,c,d)
+#define IDirectPlayX_SendChatMessage(p,a,b,c,d) (p)->SendChatMessage(a,b,c,d)
+#define IDirectPlayX_SetGroupConnectionSettings(p,a,b,c) (p)->SetGroupConnectionSettings(a,b,c)
+#define IDirectPlayX_StartSession(p,a,b) (p)->StartSession(a,b)
+#define IDirectPlayX_GetGroupFlags(p,a,b) (p)->GetGroupFlags(a,b)
+#define IDirectPlayX_GetGroupParent(p,a,b) (p)->GetGroupParent(a,b)
+#define IDirectPlayX_GetPlayerAccount(p,a,b,c,d) (p)->GetPlayerAccount(a,b,c,d)
+#define IDirectPlayX_GetPlayerFlags(p,a,b) (p)->GetPlayerFlags(a,b)
+#define IDirectPlayX_GetGroupOwner(p,a,b) (p)->GetGroupOwner(a,b)
+#define IDirectPlayX_SetGroupOwner(p,a,b) (p)->SetGroupOwner(a,b)
+
+#endif
+
+/****************************************************************************
+ *
+ * EnumConnections API flags
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate Service Providers
+ */
+#define DPCONNECTION_DIRECTPLAY 0x00000001
+
+/*
+ * Enumerate Lobby Providers
+ */
+#define DPCONNECTION_DIRECTPLAYLOBBY 0x00000002
+
+
+/****************************************************************************
+ *
+ * EnumPlayers API flags
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate all players in the current session
+ */
+#define DPENUMPLAYERS_ALL 0x00000000
+#define DPENUMGROUPS_ALL DPENUMPLAYERS_ALL
+
+
+/*
+ * Enumerate only local (created by this application) players
+ * or groups
+ */
+#define DPENUMPLAYERS_LOCAL 0x00000008
+#define DPENUMGROUPS_LOCAL DPENUMPLAYERS_LOCAL
+
+/*
+ * Enumerate only remote (non-local) players
+ * or groups
+ */
+#define DPENUMPLAYERS_REMOTE 0x00000010
+#define DPENUMGROUPS_REMOTE DPENUMPLAYERS_REMOTE
+
+/*
+ * Enumerate groups along with the players
+ */
+#define DPENUMPLAYERS_GROUP 0x00000020
+
+/*
+ * Enumerate players or groups in another session
+ * (must supply lpguidInstance)
+ */
+#define DPENUMPLAYERS_SESSION 0x00000080
+#define DPENUMGROUPS_SESSION DPENUMPLAYERS_SESSION
+
+/*
+ * Enumerate server players
+ */
+#define DPENUMPLAYERS_SERVERPLAYER 0x00000100
+
+/*
+ * Enumerate spectator players
+ */
+#define DPENUMPLAYERS_SPECTATOR 0x00000200
+
+/*
+ * Enumerate shortcut groups
+ */
+#define DPENUMGROUPS_SHORTCUT 0x00000400
+
+/*
+ * Enumerate staging area groups
+ */
+#define DPENUMGROUPS_STAGINGAREA 0x00000800
+
+/*
+ * Enumerate hidden groups
+ */
+#define DPENUMGROUPS_HIDDEN 0x00001000
+
+/*
+ * Enumerate the group's owner
+ */
+#define DPENUMPLAYERS_OWNER 0x00002000
+
+
+/****************************************************************************
+ *
+ * CreatePlayer API flags
+ *
+ ****************************************************************************/
+
+/*
+ * This flag indicates that this player should be designated
+ * the server player. The app should specify this at CreatePlayer.
+ */
+#define DPPLAYER_SERVERPLAYER DPENUMPLAYERS_SERVERPLAYER
+
+/*
+ * This flag indicates that this player should be designated
+ * a spectator. The app should specify this at CreatePlayer.
+ */
+#define DPPLAYER_SPECTATOR DPENUMPLAYERS_SPECTATOR
+
+/*
+ * This flag indicates that this player was created locally.
+ * (returned from GetPlayerFlags)
+ */
+#define DPPLAYER_LOCAL DPENUMPLAYERS_LOCAL
+
+/*
+ * This flag indicates that this player is the group's owner
+ * (Only returned in EnumGroupPlayers)
+ */
+#define DPPLAYER_OWNER DPENUMPLAYERS_OWNER
+
+/****************************************************************************
+ *
+ * CreateGroup API flags
+ *
+ ****************************************************************************/
+
+
+/*
+ * This flag indicates that the StartSession can be called on the group.
+ * The app should specify this at CreateGroup, or CreateGroupInGroup.
+ */
+#define DPGROUP_STAGINGAREA DPENUMGROUPS_STAGINGAREA
+
+/*
+ * This flag indicates that this group was created locally.
+ * (returned from GetGroupFlags)
+ */
+#define DPGROUP_LOCAL DPENUMGROUPS_LOCAL
+
+/*
+ * This flag indicates that this group was created hidden.
+ */
+#define DPGROUP_HIDDEN DPENUMGROUPS_HIDDEN
+
+
+/****************************************************************************
+ *
+ * EnumSessions API flags
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate sessions which can be joined
+ */
+#define DPENUMSESSIONS_AVAILABLE 0x00000001
+
+/*
+ * Enumerate all sessions even if they can't be joined.
+ */
+#define DPENUMSESSIONS_ALL 0x00000002
+
+
+/*
+ * Start an asynchronous enum sessions
+ */
+ #define DPENUMSESSIONS_ASYNC 0x00000010
+
+/*
+ * Stop an asynchronous enum sessions
+ */
+ #define DPENUMSESSIONS_STOPASYNC 0x00000020
+
+/*
+ * Enumerate sessions even if they require a password
+ */
+ #define DPENUMSESSIONS_PASSWORDREQUIRED 0x00000040
+
+/*
+ * Return status about progress of enumeration instead of
+ * showing any status dialogs.
+ */
+ #define DPENUMSESSIONS_RETURNSTATUS 0x00000080
+
+/****************************************************************************
+ *
+ * GetCaps and GetPlayerCaps API flags
+ *
+ ****************************************************************************/
+
+/*
+ * The latency returned should be for guaranteed message sending.
+ * Default is non-guaranteed messaging.
+ */
+#define DPGETCAPS_GUARANTEED 0x00000001
+
+
+/****************************************************************************
+ *
+ * GetGroupData, GetPlayerData API flags
+ * Remote and local Group/Player data is maintained separately.
+ * Default is DPGET_REMOTE.
+ *
+ ****************************************************************************/
+
+/*
+ * Get the remote data (set by any DirectPlay object in
+ * the session using DPSET_REMOTE)
+ */
+#define DPGET_REMOTE 0x00000000
+
+/*
+ * Get the local data (set by this DirectPlay object
+ * using DPSET_LOCAL)
+ */
+#define DPGET_LOCAL 0x00000001
+
+
+/****************************************************************************
+ *
+ * Open API flags
+ *
+ ****************************************************************************/
+
+/*
+ * Join the session that is described by the DPSESSIONDESC2 structure
+ */
+#define DPOPEN_JOIN 0x00000001
+
+/*
+ * Create a new session as described by the DPSESSIONDESC2 structure
+ */
+#define DPOPEN_CREATE 0x00000002
+
+/*
+ * Return status about progress of open instead of showing
+ * any status dialogs.
+ */
+ #define DPOPEN_RETURNSTATUS DPENUMSESSIONS_RETURNSTATUS
+
+
+/****************************************************************************
+ *
+ * DPLCONNECTION flags
+ *
+ ****************************************************************************/
+
+/*
+ * This application should create a new session as
+ * described by the DPSESIONDESC structure
+ */
+#define DPLCONNECTION_CREATESESSION DPOPEN_CREATE
+
+/*
+ * This application should join the session described by
+ * the DPSESIONDESC structure with the lpAddress data
+ */
+#define DPLCONNECTION_JOINSESSION DPOPEN_JOIN
+
+/****************************************************************************
+ *
+ * Receive API flags
+ * Default is DPRECEIVE_ALL
+ *
+ ****************************************************************************/
+
+/*
+ * Get the first message in the queue
+ */
+#define DPRECEIVE_ALL 0x00000001
+
+/*
+ * Get the first message in the queue directed to a specific player
+ */
+#define DPRECEIVE_TOPLAYER 0x00000002
+
+/*
+ * Get the first message in the queue from a specific player
+ */
+#define DPRECEIVE_FROMPLAYER 0x00000004
+
+/*
+ * Get the message but don't remove it from the queue
+ */
+#define DPRECEIVE_PEEK 0x00000008
+
+
+/****************************************************************************
+ *
+ * Send API flags
+ *
+ ****************************************************************************/
+
+/*
+ * Send the message using a guaranteed send method.
+ * Default is non-guaranteed.
+ */
+#define DPSEND_GUARANTEED 0x00000001
+
+
+/*
+ * This flag is obsolete. It is ignored by DirectPlay
+ */
+#define DPSEND_HIGHPRIORITY 0x00000002
+
+/*
+ * This flag is obsolete. It is ignored by DirectPlay
+ */
+#define DPSEND_OPENSTREAM 0x00000008
+
+/*
+ * This flag is obsolete. It is ignored by DirectPlay
+ */
+#define DPSEND_CLOSESTREAM 0x00000010
+
+/*
+ * Send the message digitally signed to ensure authenticity.
+ */
+#define DPSEND_SIGNED 0x00000020
+
+/*
+ * Send the message with encryption to ensure privacy.
+ */
+#define DPSEND_ENCRYPTED 0x00000040
+
+/*
+ * The message is a lobby system message
+ */
+#define DPSEND_LOBBYSYSTEMMESSAGE 0x00000080
+
+
+/*
+ * Send message asynchronously, must check caps
+ * before using this flag. It is always provided
+ * if the protocol flag is set.
+ */
+#define DPSEND_ASYNC 0x00000200
+
+/*
+ * When an message is completed, don't tell me.
+ * by default the application is notified with a system message.
+ */
+#define DPSEND_NOSENDCOMPLETEMSG 0x00000400
+
+
+/*
+ * Maximum priority for sends available to applications
+ */
+#define DPSEND_MAX_PRI 0x0000FFFF
+#define DPSEND_MAX_PRIORITY DPSEND_MAX_PRI
+
+
+/****************************************************************************
+ *
+ * SetGroupData, SetGroupName, SetPlayerData, SetPlayerName,
+ * SetSessionDesc API flags.
+ * Default is DPSET_REMOTE.
+ *
+ ****************************************************************************/
+
+/*
+ * Propagate the data to all players in the session
+ */
+#define DPSET_REMOTE 0x00000000
+
+/*
+ * Do not propagate the data to other players
+ */
+#define DPSET_LOCAL 0x00000001
+
+/*
+ * Used with DPSET_REMOTE, use guaranteed message send to
+ * propagate the data
+ */
+#define DPSET_GUARANTEED 0x00000002
+
+/****************************************************************************
+ *
+ * GetMessageQueue API flags.
+ * Default is DPMESSAGEQUEUE_SEND
+ *
+ ****************************************************************************/
+
+/*
+ * Get Send Queue - requires Service Provider Support
+ */
+#define DPMESSAGEQUEUE_SEND 0x00000001
+
+/*
+ * Get Receive Queue
+ */
+#define DPMESSAGEQUEUE_RECEIVE 0x00000002
+
+
+/****************************************************************************
+ *
+ * Connect API flags
+ *
+ ****************************************************************************/
+
+
+/*
+ * Start an asynchronous connect which returns status codes
+ */
+#define DPCONNECT_RETURNSTATUS (DPENUMSESSIONS_RETURNSTATUS)
+
+
+/****************************************************************************
+ *
+ * DirectPlay system messages and message data structures
+ *
+ * All system message come 'From' player DPID_SYSMSG. To determine what type
+ * of message it is, cast the lpData from Receive to DPMSG_GENERIC and check
+ * the dwType member against one of the following DPSYS_xxx constants. Once
+ * a match is found, cast the lpData to the corresponding of the DPMSG_xxx
+ * structures to access the data of the message.
+ *
+ ****************************************************************************/
+
+/*
+ * A new player or group has been created in the session
+ * Use DPMSG_CREATEPLAYERORGROUP. Check dwPlayerType to see if it
+ * is a player or a group.
+ */
+#define DPSYS_CREATEPLAYERORGROUP 0x0003
+
+/*
+ * A player has been deleted from the session
+ * Use DPMSG_DESTROYPLAYERORGROUP
+ */
+#define DPSYS_DESTROYPLAYERORGROUP 0x0005
+
+/*
+ * A player has been added to a group
+ * Use DPMSG_ADDPLAYERTOGROUP
+ */
+#define DPSYS_ADDPLAYERTOGROUP 0x0007
+
+/*
+ * A player has been removed from a group
+ * Use DPMSG_DELETEPLAYERFROMGROUP
+ */
+#define DPSYS_DELETEPLAYERFROMGROUP 0x0021
+
+/*
+ * This DirectPlay object lost its connection with all the
+ * other players in the session.
+ * Use DPMSG_SESSIONLOST.
+ */
+#define DPSYS_SESSIONLOST 0x0031
+
+/*
+ * The current host has left the session.
+ * This DirectPlay object is now the host.
+ * Use DPMSG_HOST.
+ */
+#define DPSYS_HOST 0x0101
+
+/*
+ * The remote data associated with a player or
+ * group has changed. Check dwPlayerType to see
+ * if it is a player or a group
+ * Use DPMSG_SETPLAYERORGROUPDATA
+ */
+#define DPSYS_SETPLAYERORGROUPDATA 0x0102
+
+/*
+ * The name of a player or group has changed.
+ * Check dwPlayerType to see if it is a player
+ * or a group.
+ * Use DPMSG_SETPLAYERORGROUPNAME
+ */
+#define DPSYS_SETPLAYERORGROUPNAME 0x0103
+
+/*
+ * The session description has changed.
+ * Use DPMSG_SETSESSIONDESC
+ */
+#define DPSYS_SETSESSIONDESC 0x0104
+
+/*
+ * A group has been added to a group
+ * Use DPMSG_ADDGROUPTOGROUP
+ */
+#define DPSYS_ADDGROUPTOGROUP 0x0105
+
+/*
+ * A group has been removed from a group
+ * Use DPMSG_DELETEGROUPFROMGROUP
+ */
+#define DPSYS_DELETEGROUPFROMGROUP 0x0106
+
+/*
+ * A secure player-player message has arrived.
+ * Use DPMSG_SECUREMESSAGE
+ */
+#define DPSYS_SECUREMESSAGE 0x0107
+
+/*
+ * Start a new session.
+ * Use DPMSG_STARTSESSION
+ */
+#define DPSYS_STARTSESSION 0x0108
+
+/*
+ * A chat message has arrived
+ * Use DPMSG_CHAT
+ */
+#define DPSYS_CHAT 0x0109
+
+/*
+ * The owner of a group has changed
+ * Use DPMSG_SETGROUPOWNER
+ */
+#define DPSYS_SETGROUPOWNER 0x010A
+
+/*
+ * An async send has finished, failed or been cancelled
+ * Use DPMSG_SENDCOMPLETE
+ */
+#define DPSYS_SENDCOMPLETE 0x010d
+
+
+/*
+ * Used in the dwPlayerType field to indicate if it applies to a group
+ * or a player
+ */
+#define DPPLAYERTYPE_GROUP 0x00000000
+#define DPPLAYERTYPE_PLAYER 0x00000001
+
+
+/*
+ * DPMSG_GENERIC
+ * Generic message structure used to identify the message type.
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+} DPMSG_GENERIC, FAR *LPDPMSG_GENERIC;
+
+/*
+ * DPMSG_CREATEPLAYERORGROUP
+ * System message generated when a new player or group
+ * created in the session with information about it.
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+ DWORD dwPlayerType; // Is it a player or group
+ DPID dpId; // ID of the player or group
+ DWORD dwCurrentPlayers; // current # players & groups in session
+ LPVOID lpData; // pointer to remote data
+ DWORD dwDataSize; // size of remote data
+ DPNAME dpnName; // structure with name info
+ // the following fields are only available when using
+ // the IDirectPlay3 interface or greater
+ DPID dpIdParent; // id of parent group
+ DWORD dwFlags; // player or group flags
+} DPMSG_CREATEPLAYERORGROUP, FAR *LPDPMSG_CREATEPLAYERORGROUP;
+
+/*
+ * DPMSG_DESTROYPLAYERORGROUP
+ * System message generated when a player or group is being
+ * destroyed in the session with information about it.
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+ DWORD dwPlayerType; // Is it a player or group
+ DPID dpId; // player ID being deleted
+ LPVOID lpLocalData; // copy of players local data
+ DWORD dwLocalDataSize; // sizeof local data
+ LPVOID lpRemoteData; // copy of players remote data
+ DWORD dwRemoteDataSize; // sizeof remote data
+ // the following fields are only available when using
+ // the IDirectPlay3 interface or greater
+ DPNAME dpnName; // structure with name info
+ DPID dpIdParent; // id of parent group
+ DWORD dwFlags; // player or group flags
+} DPMSG_DESTROYPLAYERORGROUP, FAR *LPDPMSG_DESTROYPLAYERORGROUP;
+
+/*
+ * DPMSG_ADDPLAYERTOGROUP
+ * System message generated when a player is being added
+ * to a group.
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+ DPID dpIdGroup; // group ID being added to
+ DPID dpIdPlayer; // player ID being added
+} DPMSG_ADDPLAYERTOGROUP, FAR *LPDPMSG_ADDPLAYERTOGROUP;
+
+/*
+ * DPMSG_DELETEPLAYERFROMGROUP
+ * System message generated when a player is being
+ * removed from a group
+ */
+typedef DPMSG_ADDPLAYERTOGROUP DPMSG_DELETEPLAYERFROMGROUP;
+typedef DPMSG_DELETEPLAYERFROMGROUP FAR *LPDPMSG_DELETEPLAYERFROMGROUP;
+
+/*
+ * DPMSG_ADDGROUPTOGROUP
+ * System message generated when a group is being added
+ * to a group.
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+ DPID dpIdParentGroup; // group ID being added to
+ DPID dpIdGroup; // group ID being added
+} DPMSG_ADDGROUPTOGROUP, FAR *LPDPMSG_ADDGROUPTOGROUP;
+
+/*
+ * DPMSG_DELETEGROUPFROMGROUP
+ * System message generated when a GROUP is being
+ * removed from a group
+ */
+typedef DPMSG_ADDGROUPTOGROUP DPMSG_DELETEGROUPFROMGROUP;
+typedef DPMSG_DELETEGROUPFROMGROUP FAR *LPDPMSG_DELETEGROUPFROMGROUP;
+
+/*
+ * DPMSG_SETPLAYERORGROUPDATA
+ * System message generated when remote data for a player or
+ * group has changed.
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+ DWORD dwPlayerType; // Is it a player or group
+ DPID dpId; // ID of player or group
+ LPVOID lpData; // pointer to remote data
+ DWORD dwDataSize; // size of remote data
+} DPMSG_SETPLAYERORGROUPDATA, FAR *LPDPMSG_SETPLAYERORGROUPDATA;
+
+/*
+ * DPMSG_SETPLAYERORGROUPNAME
+ * System message generated when the name of a player or
+ * group has changed.
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+ DWORD dwPlayerType; // Is it a player or group
+ DPID dpId; // ID of player or group
+ DPNAME dpnName; // structure with new name info
+} DPMSG_SETPLAYERORGROUPNAME, FAR *LPDPMSG_SETPLAYERORGROUPNAME;
+
+/*
+ * DPMSG_SETSESSIONDESC
+ * System message generated when session desc has changed
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+ DPSESSIONDESC2 dpDesc; // Session desc
+} DPMSG_SETSESSIONDESC, FAR *LPDPMSG_SETSESSIONDESC;
+
+/*
+ * DPMSG_HOST
+ * System message generated when the host has migrated to this
+ * DirectPlay object.
+ *
+ */
+typedef DPMSG_GENERIC DPMSG_HOST;
+typedef DPMSG_HOST FAR *LPDPMSG_HOST;
+
+/*
+ * DPMSG_SESSIONLOST
+ * System message generated when the connection to the session is lost.
+ *
+ */
+typedef DPMSG_GENERIC DPMSG_SESSIONLOST;
+typedef DPMSG_SESSIONLOST FAR *LPDPMSG_SESSIONLOST;
+
+/*
+ * DPMSG_SECUREMESSAGE
+ * System message generated when a player requests a secure send
+ */
+typedef struct
+{
+ DWORD dwType; // Message Type
+ DWORD dwFlags; // Signed/Encrypted
+ DPID dpIdFrom; // ID of Sending Player
+ LPVOID lpData; // Player message
+ DWORD dwDataSize; // Size of player message
+} DPMSG_SECUREMESSAGE, FAR *LPDPMSG_SECUREMESSAGE;
+
+/*
+ * DPMSG_STARTSESSION
+ * System message containing all information required to
+ * start a new session
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+ LPDPLCONNECTION lpConn; // DPLCONNECTION structure
+} DPMSG_STARTSESSION, FAR *LPDPMSG_STARTSESSION;
+
+/*
+ * DPMSG_CHAT
+ * System message containing a chat message
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+ DWORD dwFlags; // Message flags
+ DPID idFromPlayer; // ID of the Sending Player
+ DPID idToPlayer; // ID of the To Player
+ DPID idToGroup; // ID of the To Group
+ LPDPCHAT lpChat; // Pointer to a structure containing the chat message
+} DPMSG_CHAT, FAR *LPDPMSG_CHAT;
+
+/*
+ * DPMSG_SETGROUPOWNER
+ * System message generated when the owner of a group has changed
+ */
+typedef struct
+{
+ DWORD dwType; // Message type
+ DPID idGroup; // ID of the group
+ DPID idNewOwner; // ID of the player that is the new owner
+ DPID idOldOwner; // ID of the player that used to be the owner
+} DPMSG_SETGROUPOWNER, FAR *LPDPMSG_SETGROUPOWNER;
+
+/*
+ * DPMSG_SENDCOMPLETE
+ * System message generated when finished with an Async Send message
+ *
+ * NOTE SENDPARMS has an overlay for DPMSG_SENDCOMPLETE, don't
+ * change this message w/o changing SENDPARMS.
+ */
+typedef struct
+{
+ DWORD dwType;
+ DPID idFrom;
+ DPID idTo;
+ DWORD dwFlags;
+ DWORD dwPriority;
+ DWORD dwTimeout;
+ LPVOID lpvContext;
+ DWORD dwMsgID;
+ HRESULT hr;
+ DWORD dwSendTime;
+} DPMSG_SENDCOMPLETE, *LPDPMSG_SENDCOMPLETE;
+
+/****************************************************************************
+ *
+ * DIRECTPLAY ERRORS
+ *
+ * Errors are represented by negative values and cannot be combined.
+ *
+ ****************************************************************************/
+#define DP_OK S_OK
+#define DPERR_ALREADYINITIALIZED MAKE_DPHRESULT( 5 )
+#define DPERR_ACCESSDENIED MAKE_DPHRESULT( 10 )
+#define DPERR_ACTIVEPLAYERS MAKE_DPHRESULT( 20 )
+#define DPERR_BUFFERTOOSMALL MAKE_DPHRESULT( 30 )
+#define DPERR_CANTADDPLAYER MAKE_DPHRESULT( 40 )
+#define DPERR_CANTCREATEGROUP MAKE_DPHRESULT( 50 )
+#define DPERR_CANTCREATEPLAYER MAKE_DPHRESULT( 60 )
+#define DPERR_CANTCREATESESSION MAKE_DPHRESULT( 70 )
+#define DPERR_CAPSNOTAVAILABLEYET MAKE_DPHRESULT( 80 )
+#define DPERR_EXCEPTION MAKE_DPHRESULT( 90 )
+#define DPERR_GENERIC E_FAIL
+#define DPERR_INVALIDFLAGS MAKE_DPHRESULT( 120 )
+#define DPERR_INVALIDOBJECT MAKE_DPHRESULT( 130 )
+#define DPERR_INVALIDPARAM E_INVALIDARG
+#define DPERR_INVALIDPARAMS DPERR_INVALIDPARAM
+#define DPERR_INVALIDPLAYER MAKE_DPHRESULT( 150 )
+#define DPERR_INVALIDGROUP MAKE_DPHRESULT( 155 )
+#define DPERR_NOCAPS MAKE_DPHRESULT( 160 )
+#define DPERR_NOCONNECTION MAKE_DPHRESULT( 170 )
+#define DPERR_NOMEMORY E_OUTOFMEMORY
+#define DPERR_OUTOFMEMORY DPERR_NOMEMORY
+#define DPERR_NOMESSAGES MAKE_DPHRESULT( 190 )
+#define DPERR_NONAMESERVERFOUND MAKE_DPHRESULT( 200 )
+#define DPERR_NOPLAYERS MAKE_DPHRESULT( 210 )
+#define DPERR_NOSESSIONS MAKE_DPHRESULT( 220 )
+#define DPERR_PENDING E_PENDING
+#define DPERR_SENDTOOBIG MAKE_DPHRESULT( 230 )
+#define DPERR_TIMEOUT MAKE_DPHRESULT( 240 )
+#define DPERR_UNAVAILABLE MAKE_DPHRESULT( 250 )
+#define DPERR_UNSUPPORTED E_NOTIMPL
+#define DPERR_BUSY MAKE_DPHRESULT( 270 )
+#define DPERR_USERCANCEL MAKE_DPHRESULT( 280 )
+#define DPERR_NOINTERFACE E_NOINTERFACE
+#define DPERR_CANNOTCREATESERVER MAKE_DPHRESULT( 290 )
+#define DPERR_PLAYERLOST MAKE_DPHRESULT( 300 )
+#define DPERR_SESSIONLOST MAKE_DPHRESULT( 310 )
+#define DPERR_UNINITIALIZED MAKE_DPHRESULT( 320 )
+#define DPERR_NONEWPLAYERS MAKE_DPHRESULT( 330 )
+#define DPERR_INVALIDPASSWORD MAKE_DPHRESULT( 340 )
+#define DPERR_CONNECTING MAKE_DPHRESULT( 350 )
+#define DPERR_CONNECTIONLOST MAKE_DPHRESULT( 360 )
+#define DPERR_UNKNOWNMESSAGE MAKE_DPHRESULT( 370 )
+#define DPERR_CANCELFAILED MAKE_DPHRESULT( 380 )
+#define DPERR_INVALIDPRIORITY MAKE_DPHRESULT( 390 )
+#define DPERR_NOTHANDLED MAKE_DPHRESULT( 400 )
+#define DPERR_CANCELLED MAKE_DPHRESULT( 410 )
+#define DPERR_ABORTED MAKE_DPHRESULT( 420 )
+
+
+#define DPERR_BUFFERTOOLARGE MAKE_DPHRESULT( 1000 )
+#define DPERR_CANTCREATEPROCESS MAKE_DPHRESULT( 1010 )
+#define DPERR_APPNOTSTARTED MAKE_DPHRESULT( 1020 )
+#define DPERR_INVALIDINTERFACE MAKE_DPHRESULT( 1030 )
+#define DPERR_NOSERVICEPROVIDER MAKE_DPHRESULT( 1040 )
+#define DPERR_UNKNOWNAPPLICATION MAKE_DPHRESULT( 1050 )
+#define DPERR_NOTLOBBIED MAKE_DPHRESULT( 1070 )
+#define DPERR_SERVICEPROVIDERLOADED MAKE_DPHRESULT( 1080 )
+#define DPERR_ALREADYREGISTERED MAKE_DPHRESULT( 1090 )
+#define DPERR_NOTREGISTERED MAKE_DPHRESULT( 1100 )
+
+//
+// Security related errors
+//
+#define DPERR_AUTHENTICATIONFAILED MAKE_DPHRESULT( 2000 )
+#define DPERR_CANTLOADSSPI MAKE_DPHRESULT( 2010 )
+#define DPERR_ENCRYPTIONFAILED MAKE_DPHRESULT( 2020 )
+#define DPERR_SIGNFAILED MAKE_DPHRESULT( 2030 )
+#define DPERR_CANTLOADSECURITYPACKAGE MAKE_DPHRESULT( 2040 )
+#define DPERR_ENCRYPTIONNOTSUPPORTED MAKE_DPHRESULT( 2050 )
+#define DPERR_CANTLOADCAPI MAKE_DPHRESULT( 2060 )
+#define DPERR_NOTLOGGEDIN MAKE_DPHRESULT( 2070 )
+#define DPERR_LOGONDENIED MAKE_DPHRESULT( 2080 )
+
+
+/****************************************************************************
+ *
+ * dplay 1.0 obsolete structures + interfaces
+ * Included for compatibility only. New apps should
+ * use IDirectPlay2
+ *
+ ****************************************************************************/
+
+// define this to ignore obsolete interfaces and constants
+#ifndef IDIRECTPLAY2_OR_GREATER
+
+#define DPOPEN_OPENSESSION DPOPEN_JOIN
+#define DPOPEN_CREATESESSION DPOPEN_CREATE
+
+#define DPENUMSESSIONS_PREVIOUS 0x00000004
+
+#define DPENUMPLAYERS_PREVIOUS 0x00000004
+
+#define DPSEND_GUARANTEE DPSEND_GUARANTEED
+#define DPSEND_TRYONCE 0x00000004
+
+#define DPCAPS_NAMESERVICE 0x00000001
+#define DPCAPS_NAMESERVER DPCAPS_ISHOST
+#define DPCAPS_GUARANTEED 0x00000004
+
+#define DPLONGNAMELEN 52
+#define DPSHORTNAMELEN 20
+#define DPSESSIONNAMELEN 32
+#define DPPASSWORDLEN 16
+#define DPUSERRESERVED 16
+
+#define DPSYS_ADDPLAYER 0x0003
+#define DPSYS_DELETEPLAYER 0x0005
+
+#define DPSYS_DELETEGROUP 0x0020
+#define DPSYS_DELETEPLAYERFROMGRP 0x0021
+#define DPSYS_CONNECT 0x484b
+
+typedef struct
+{
+ DWORD dwType;
+ DWORD dwPlayerType;
+ DPID dpId;
+ char szLongName[DPLONGNAMELEN];
+ char szShortName[DPSHORTNAMELEN];
+ DWORD dwCurrentPlayers;
+} DPMSG_ADDPLAYER;
+
+typedef DPMSG_ADDPLAYER DPMSG_ADDGROUP;
+
+typedef struct
+{
+ DWORD dwType;
+ DPID dpIdGroup;
+ DPID dpIdPlayer;
+} DPMSG_GROUPADD;
+
+typedef DPMSG_GROUPADD DPMSG_GROUPDELETE;
+typedef struct
+{
+ DWORD dwType;
+ DPID dpId;
+} DPMSG_DELETEPLAYER;
+
+typedef BOOL (PASCAL *LPDPENUMPLAYERSCALLBACK)(
+ DPID dpId,
+ LPSTR lpFriendlyName,
+ LPSTR lpFormalName,
+ DWORD dwFlags,
+ LPVOID lpContext );
+
+typedef struct
+{
+ DWORD dwSize;
+ GUID guidSession;
+ DWORD_PTR dwSession;
+ DWORD dwMaxPlayers;
+ DWORD dwCurrentPlayers;
+ DWORD dwFlags;
+ char szSessionName[DPSESSIONNAMELEN];
+ char szUserField[DPUSERRESERVED];
+ DWORD_PTR dwReserved1;
+ char szPassword[DPPASSWORDLEN];
+ DWORD_PTR dwReserved2;
+ DWORD_PTR dwUser1;
+ DWORD_PTR dwUser2;
+ DWORD_PTR dwUser3;
+ DWORD_PTR dwUser4;
+} DPSESSIONDESC,*LPDPSESSIONDESC;
+
+typedef BOOL (PASCAL * LPDPENUMSESSIONSCALLBACK)(
+ LPDPSESSIONDESC lpDPSessionDesc,
+ LPVOID lpContext,
+ LPDWORD lpdwTimeOut,
+ DWORD dwFlags);
+
+/*
+ * IDirectPlay
+ */
+#undef INTERFACE
+#define INTERFACE IDirectPlay
+DECLARE_INTERFACE_( IDirectPlay, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectPlay methods ***/
+ STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPSTR,LPSTR,LPHANDLE) PURE;
+ STDMETHOD(CreateGroup) (THIS_ LPDPID,LPSTR,LPSTR) PURE;
+ STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
+ STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
+ STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
+ STDMETHOD(EnableNewPlayers) (THIS_ BOOL) PURE;
+ STDMETHOD(EnumGroupPlayers) (THIS_ DPID, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumGroups) (THIS_ DWORD_PTR, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumPlayers) (THIS_ DWORD_PTR, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC,DWORD,LPDPENUMSESSIONSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(GetCaps) (THIS_ LPDPCAPS) PURE;
+ STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
+ STDMETHOD(GetPlayerCaps) (THIS_ DPID, LPDPCAPS) PURE;
+ STDMETHOD(GetPlayerName) (THIS_ DPID,LPSTR,LPDWORD,LPSTR,LPDWORD) PURE;
+ STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
+ STDMETHOD(Open) (THIS_ LPDPSESSIONDESC) PURE;
+ STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
+ STDMETHOD(SaveSession) (THIS_ LPSTR) PURE;
+ STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
+ STDMETHOD(SetPlayerName) (THIS_ DPID,LPSTR,LPSTR) PURE;
+};
+
+/****************************************************************************
+ *
+ * IDirectPlay interface macros
+ *
+ ****************************************************************************/
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+
+#define IDirectPlay_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlay_Close(p) (p)->lpVtbl->Close(p)
+#define IDirectPlay_CreateGroup(p,a,b,c) (p)->lpVtbl->CreateGroup(p,a,b,c)
+#define IDirectPlay_CreatePlayer(p,a,b,c,d) (p)->lpVtbl->CreatePlayer(p,a,b,c,d)
+#define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlay_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlay_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlay_EnableNewPlayers(p,a) (p)->lpVtbl->EnableNewPlayers(p,a)
+#define IDirectPlay_EnumGroupPlayers(p,a,b,c,d) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d)
+#define IDirectPlay_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlay_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlay_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlay_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectPlay_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlay_GetPlayerCaps(p,a,b) (p)->lpVtbl->GetPlayerCaps(p,a,b)
+#define IDirectPlay_GetPlayerName(p,a,b,c,d,e) (p)->lpVtbl->GetPlayerName(p,a,b,c,d,e)
+#define IDirectPlay_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlay_Open(p,a) (p)->lpVtbl->Open(p,a)
+#define IDirectPlay_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlay_SaveSession(p,a) (p)->lpVtbl->SaveSession(p,a)
+#define IDirectPlay_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlay_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
+
+#else /* C++ */
+
+#define IDirectPlay_AddPlayerToGroup(p,a,b) (p)->AddPlayerToGroup(a,b)
+#define IDirectPlay_Close(p) (p)->Close()
+#define IDirectPlay_CreateGroup(p,a,b,c) (p)->CreateGroup(a,b,c)
+#define IDirectPlay_CreatePlayer(p,a,b,c,d) (p)->CreatePlayer(a,b,c,d)
+#define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->DeletePlayerFromGroup(a,b)
+#define IDirectPlay_DestroyGroup(p,a) (p)->DestroyGroup(a)
+#define IDirectPlay_DestroyPlayer(p,a) (p)->DestroyPlayer(a)
+#define IDirectPlay_EnableNewPlayers(p,a) (p)->EnableNewPlayers(a)
+#define IDirectPlay_EnumGroupPlayers(p,a,b,c,d) (p)->EnumGroupPlayers(a,b,c,d)
+#define IDirectPlay_EnumGroups(p,a,b,c,d) (p)->EnumGroups(a,b,c,d)
+#define IDirectPlay_EnumPlayers(p,a,b,c,d) (p)->EnumPlayers(a,b,c,d)
+#define IDirectPlay_EnumSessions(p,a,b,c,d,e) (p)->EnumSessions(a,b,c,d,e)
+#define IDirectPlay_GetCaps(p,a) (p)->GetCaps(a)
+#define IDirectPlay_GetMessageCount(p,a,b) (p)->GetMessageCount(a,b)
+#define IDirectPlay_GetPlayerCaps(p,a,b) (p)->GetPlayerCaps(a,b)
+#define IDirectPlay_GetPlayerName(p,a,b,c,d,e) (p)->GetPlayerName(a,b,c,d,e)
+#define IDirectPlay_Initialize(p,a) (p)->Initialize(a)
+#define IDirectPlay_Open(p,a) (p)->Open(a)
+#define IDirectPlay_Receive(p,a,b,c,d,e) (p)->Receive(a,b,c,d,e)
+#define IDirectPlay_SaveSession(p,a) (p)->SaveSession(a)
+#define IDirectPlay_Send(p,a,b,c,d,e) (p)->Send(a,b,c,d,e)
+#define IDirectPlay_SetPlayerName(p,a,b,c) (p)->SetPlayerName(a,b,c)
+
+#endif
+
+DEFINE_GUID(IID_IDirectPlay, 0x5454e9a0, 0xdb65, 0x11ce, 0x92, 0x1c, 0x00, 0xaa, 0x00, 0x6c, 0x49, 0x72);
+
+#endif // IDIRECTPLAY2_OR_GREATER
+
+/****************************************************************************
+ *
+ * IDirectPlay macros (included regardless of IDIRECTPLAY2_OR_GREATER flag)
+ *
+ ****************************************************************************/
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+
+#define IDirectPlay_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectPlay_Release(p) (p)->lpVtbl->Release(p)
+
+#else
+
+#define IDirectPlay_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectPlay_AddRef(p) (p)->AddRef()
+#define IDirectPlay_Release(p) (p)->Release()
+
+#endif // IDirectPlay interface macros
+
+#ifdef __cplusplus
+};
+#endif
+
+/* restore warning settings */
+#if _MSC_VER >= 1200
+#pragma warning(pop)
+#else
+#pragma warning(default:4201)
+#endif
+
+#endif
+
diff --git a/dependencies/DXSDK_Aug2007/lib/ddraw.lib b/dependencies/DXSDK_Aug2007/lib/ddraw.lib
new file mode 100644
index 0000000..57f83d6
Binary files /dev/null and b/dependencies/DXSDK_Aug2007/lib/ddraw.lib differ
diff --git a/dependencies/DXSDK_Aug2007/lib/dplayx.lib b/dependencies/DXSDK_Aug2007/lib/dplayx.lib
new file mode 100644
index 0000000..a8ada84
Binary files /dev/null and b/dependencies/DXSDK_Aug2007/lib/dplayx.lib differ
diff --git a/dependencies/DXSDK_Aug2007/libjpg-readme.txt b/dependencies/DXSDK_Aug2007/libjpg-readme.txt
new file mode 100644
index 0000000..914ef0c
--- /dev/null
+++ b/dependencies/DXSDK_Aug2007/libjpg-readme.txt
@@ -0,0 +1,398 @@
+======================================
+MICROSOFT CORPORATION EXPLANATORY NOTE
+======================================
+
+Because Microsoft has included the object code of the Independent
+JPEG Group's JPEG software in this product, Microsoft has
+included the README file that accompanied such
+software, which README file contains information regarding a
+separate ansi2knr.c program. Microsoft has chosen not to
+distribute the additional ansi2knr.c program so the provisions
+in the README file below regarding the inclusion of such program
+are not pertinent to this product.
+
+The Independent JPEG Group's JPEG software
+==========================================
+
+README for release 6b of 27-Mar-1998
+====================================
+
+This distribution contains the sixth public release of the Independent JPEG
+Group's free JPEG software. You are welcome to redistribute this software and
+to use it for any purpose, subject to the conditions under LEGAL ISSUES, below.
+
+Serious users of this software (particularly those incorporating it into
+larger programs) should contact IJG at jpeg-info@uunet.uu.net to be added to
+our electronic mailing list. Mailing list members are notified of updates
+and have a chance to participate in technical discussions, etc.
+
+This software is the work of Tom Lane, Philip Gladstone, Jim Boucher,
+Lee Crocker, Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi,
+Guido Vollbeding, Ge' Weijers, and other members of the Independent JPEG
+Group.
+
+IJG is not affiliated with the official ISO JPEG standards committee.
+
+
+DOCUMENTATION ROADMAP
+=====================
+
+This file contains the following sections:
+
+OVERVIEW General description of JPEG and the IJG software.
+LEGAL ISSUES Copyright, lack of warranty, terms of distribution.
+REFERENCES Where to learn more about JPEG.
+ARCHIVE LOCATIONS Where to find newer versions of this software.
+RELATED SOFTWARE Other stuff you should get.
+FILE FORMAT WARS Software *not* to get.
+TO DO Plans for future IJG releases.
+
+Other documentation files in the distribution are:
+
+User documentation:
+ install.doc How to configure and install the IJG software.
+ usage.doc Usage instructions for cjpeg, djpeg, jpegtran,
+ rdjpgcom, and wrjpgcom.
+ *.1 Unix-style man pages for programs (same info as usage.doc).
+ wizard.doc Advanced usage instructions for JPEG wizards only.
+ change.log Version-to-version change highlights.
+Programmer and internal documentation:
+ libjpeg.doc How to use the JPEG library in your own programs.
+ example.c Sample code for calling the JPEG library.
+ structure.doc Overview of the JPEG library's internal structure.
+ filelist.doc Road map of IJG files.
+ coderules.doc Coding style rules --- please read if you contribute code.
+
+Please read at least the files install.doc and usage.doc. Useful information
+can also be found in the JPEG FAQ (Frequently Asked Questions) article. See
+ARCHIVE LOCATIONS below to find out where to obtain the FAQ article.
+
+If you want to understand how the JPEG code works, we suggest reading one or
+more of the REFERENCES, then looking at the documentation files (in roughly
+the order listed) before diving into the code.
+
+
+OVERVIEW
+========
+
+This package contains C software to implement JPEG image compression and
+decompression. JPEG (pronounced "jay-peg") is a standardized compression
+method for full-color and gray-scale images. JPEG is intended for compressing
+"real-world" scenes; line drawings, cartoons and other non-realistic images
+are not its strong suit. JPEG is lossy, meaning that the output image is not
+exactly identical to the input image. Hence you must not use JPEG if you
+have to have identical output bits. However, on typical photographic images,
+very good compression levels can be obtained with no visible change, and
+remarkably high compression levels are possible if you can tolerate a
+low-quality image. For more details, see the references, or just experiment
+with various compression settings.
+
+This software implements JPEG baseline, extended-sequential, and progressive
+compression processes. Provision is made for supporting all variants of these
+processes, although some uncommon parameter settings aren't implemented yet.
+For legal reasons, we are not distributing code for the arithmetic-coding
+variants of JPEG; see LEGAL ISSUES. We have made no provision for supporting
+the hierarchical or lossless processes defined in the standard.
+
+We provide a set of library routines for reading and writing JPEG image files,
+plus two sample applications "cjpeg" and "djpeg", which use the library to
+perform conversion between JPEG and some other popular image file formats.
+The library is intended to be reused in other applications.
+
+In order to support file conversion and viewing software, we have included
+considerable functionality beyond the bare JPEG coding/decoding capability;
+for example, the color quantization modules are not strictly part of JPEG
+decoding, but they are essential for output to colormapped file formats or
+colormapped displays. These extra functions can be compiled out of the
+library if not required for a particular application. We have also included
+"jpegtran", a utility for lossless transcoding between different JPEG
+processes, and "rdjpgcom" and "wrjpgcom", two simple applications for
+inserting and extracting textual comments in JFIF files.
+
+The emphasis in designing this software has been on achieving portability and
+flexibility, while also making it fast enough to be useful. In particular,
+the software is not intended to be read as a tutorial on JPEG. (See the
+REFERENCES section for introductory material.) Rather, it is intended to
+be reliable, portable, industrial-strength code. We do not claim to have
+achieved that goal in every aspect of the software, but we strive for it.
+
+We welcome the use of this software as a component of commercial products.
+No royalty is required, but we do ask for an acknowledgement in product
+documentation, as described under LEGAL ISSUES.
+
+
+LEGAL ISSUES
+============
+
+In plain English:
+
+1. We don't promise that this software works. (But if you find any bugs,
+ please let us know!)
+2. You can use this software for whatever you want. You don't have to pay us.
+3. You may not pretend that you wrote this software. If you use it in a
+ program, you must acknowledge somewhere in your documentation that
+ you've used the IJG code.
+
+In legalese:
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose. This software is provided "AS IS", and you,
+its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-1998, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to these
+conditions:
+(1) If any part of the source code for this software is distributed, then this
+README file must be included, with this copyright and no-warranty notice
+unaltered; and any additions, deletions, or changes to the original files
+must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work of
+the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code,
+not just to the unmodified library. If you use our work, you ought to
+acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name
+in advertising or publicity relating to this software or products derived from
+it. This software may be referred to only as "the Independent JPEG Group's
+software".
+
+We specifically permit and encourage the use of this software as the basis of
+commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+
+ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
+sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
+ansi2knr.c is NOT covered by the above copyright and conditions, but instead
+by the usual distribution terms of the Free Software Foundation; principally,
+that you must include source code if you redistribute it. (See the file
+ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part
+of any program generated from the IJG code, this does not limit you more than
+the foregoing paragraphs do.
+
+The Unix configuration script "configure" was produced with GNU Autoconf.
+It is copyright by the Free Software Foundation but is freely distributable.
+The same holds for its supporting scripts (config.guess, config.sub,
+ltconfig, ltmain.sh). Another support script, install-sh, is copyright
+by M.I.T. but is also freely distributable.
+
+It appears that the arithmetic coding option of the JPEG spec is covered by
+patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot
+legally be used without obtaining one or more licenses. For this reason,
+support for arithmetic coding has been removed from the free JPEG software.
+(Since arithmetic coding provides only a marginal gain over the unpatented
+Huffman mode, it is unlikely that very many implementations will support it.)
+So far as we are aware, there are no patent restrictions on the remaining
+code.
+
+The IJG distribution formerly included code to read and write GIF files.
+To avoid entanglement with the Unisys LZW patent, GIF reading support has
+been removed altogether, and the GIF writer has been simplified to produce
+"uncompressed GIFs". This technique does not use the LZW algorithm; the
+resulting GIF files are larger than usual, but are readable by all standard
+GIF decoders.
+
+We are required to state that
+ "The Graphics Interchange Format(c) is the Copyright property of
+ CompuServe Incorporated. GIF(sm) is a Service Mark property of
+ CompuServe Incorporated."
+
+
+REFERENCES
+==========
+
+We highly recommend reading one or more of these references before trying to
+understand the innards of the JPEG software.
+
+The best short technical introduction to the JPEG compression algorithm is
+ Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
+ Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
+(Adjacent articles in that issue discuss MPEG motion picture compression,
+applications of JPEG, and related topics.) If you don't have the CACM issue
+handy, a PostScript file containing a revised version of Wallace's article is
+available at ftp://ftp.uu.net/graphics/jpeg/wallace.ps.gz. The file (actually
+a preprint for an article that appeared in IEEE Trans. Consumer Electronics)
+omits the sample images that appeared in CACM, but it includes corrections
+and some added material. Note: the Wallace article is copyright ACM and IEEE,
+and it may not be used for commercial purposes.
+
+A somewhat less technical, more leisurely introduction to JPEG can be found in
+"The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by
+M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1. This book provides
+good explanations and example C code for a multitude of compression methods
+including JPEG. It is an excellent source if you are comfortable reading C
+code but don't know much about data compression in general. The book's JPEG
+sample code is far from industrial-strength, but when you are ready to look
+at a full implementation, you've got one here...
+
+The best full description of JPEG is the textbook "JPEG Still Image Data
+Compression Standard" by William B. Pennebaker and Joan L. Mitchell, published
+by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1. Price US$59.95, 638 pp.
+The book includes the complete text of the ISO JPEG standards (DIS 10918-1
+and draft DIS 10918-2). This is by far the most complete exposition of JPEG
+in existence, and we highly recommend it.
+
+The JPEG standard itself is not available electronically; you must order a
+paper copy through ISO or ITU. (Unless you feel a need to own a certified
+official copy, we recommend buying the Pennebaker and Mitchell book instead;
+it's much cheaper and includes a great deal of useful explanatory material.)
+In the USA, copies of the standard may be ordered from ANSI Sales at (212)
+642-4900, or from Global Engineering Documents at (800) 854-7179. (ANSI
+doesn't take credit card orders, but Global does.) It's not cheap: as of
+1992, ANSI was charging $95 for Part 1 and $47 for Part 2, plus 7%
+shipping/handling. The standard is divided into two parts, Part 1 being the
+actual specification, while Part 2 covers compliance testing methods. Part 1
+is titled "Digital Compression and Coding of Continuous-tone Still Images,
+Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS
+10918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of
+Continuous-tone Still Images, Part 2: Compliance testing" and has document
+numbers ISO/IEC IS 10918-2, ITU-T T.83.
+
+Some extensions to the original JPEG standard are defined in JPEG Part 3,
+a newer ISO standard numbered ISO/IEC IS 10918-3 and ITU-T T.84. IJG
+currently does not support any Part 3 extensions.
+
+The JPEG standard does not specify all details of an interchangeable file
+format. For the omitted details we follow the "JFIF" conventions, revision
+1.02. A copy of the JFIF spec is available from:
+ Literature Department
+ C-Cube Microsystems, Inc.
+ 1778 McCarthy Blvd.
+ Milpitas, CA 95035
+ phone (408) 944-6300, fax (408) 944-6314
+A PostScript version of this document is available by FTP at
+ftp://ftp.uu.net/graphics/jpeg/jfif.ps.gz. There is also a plain text
+version at ftp://ftp.uu.net/graphics/jpeg/jfif.txt.gz, but it is missing
+the figures.
+
+The TIFF 6.0 file format specification can be obtained by FTP from
+ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme
+found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems.
+IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6).
+Instead, we recommend the JPEG design proposed by TIFF Technical Note #2
+(Compression tag 7). Copies of this Note can be obtained from ftp.sgi.com or
+from ftp://ftp.uu.net/graphics/jpeg/. It is expected that the next revision
+of the TIFF spec will replace the 6.0 JPEG design with the Note's design.
+Although IJG's own code does not support TIFF/JPEG, the free libtiff library
+uses our library to implement TIFF/JPEG per the Note. libtiff is available
+from ftp://ftp.sgi.com/graphics/tiff/.
+
+
+ARCHIVE LOCATIONS
+=================
+
+The "official" archive site for this software is ftp.uu.net (Internet
+address 192.48.96.9). The most recent released version can always be found
+there in directory graphics/jpeg. This particular version will be archived
+as ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz. If you don't have
+direct Internet access, UUNET's archives are also available via UUCP; contact
+help@uunet.uu.net for information on retrieving files that way.
+
+Numerous Internet sites maintain copies of the UUNET files. However, only
+ftp.uu.net is guaranteed to have the latest official version.
+
+You can also obtain this software in DOS-compatible "zip" archive format from
+the SimTel archives (ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/), or
+on CompuServe in the Graphics Support forum (GO CIS:GRAPHSUP), library 12
+"JPEG Tools". Again, these versions may sometimes lag behind the ftp.uu.net
+release.
+
+The JPEG FAQ (Frequently Asked Questions) article is a useful source of
+general information about JPEG. It is updated constantly and therefore is
+not included in this distribution. The FAQ is posted every two weeks to
+Usenet newsgroups comp.graphics.misc, news.answers, and other groups.
+It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/
+and other news.answers archive sites, including the official news.answers
+archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/.
+If you don't have Web or FTP access, send e-mail to mail-server@rtfm.mit.edu
+with body
+ send usenet/news.answers/jpeg-faq/part1
+ send usenet/news.answers/jpeg-faq/part2
+
+
+RELATED SOFTWARE
+================
+
+Numerous viewing and image manipulation programs now support JPEG. (Quite a
+few of them use this library to do so.) The JPEG FAQ described above lists
+some of the more popular free and shareware viewers, and tells where to
+obtain them on Internet.
+
+If you are on a Unix machine, we highly recommend Jef Poskanzer's free
+PBMPLUS software, which provides many useful operations on PPM-format image
+files. In particular, it can convert PPM images to and from a wide range of
+other formats, thus making cjpeg/djpeg considerably more useful. The latest
+version is distributed by the NetPBM group, and is available from numerous
+sites, notably ftp://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/.
+Unfortunately PBMPLUS/NETPBM is not nearly as portable as the IJG software is;
+you are likely to have difficulty making it work on any non-Unix machine.
+
+A different free JPEG implementation, written by the PVRG group at Stanford,
+is available from ftp://havefun.stanford.edu/pub/jpeg/. This program
+is designed for research and experimentation rather than production use;
+it is slower, harder to use, and less portable than the IJG code, but it
+is easier to read and modify. Also, the PVRG code supports lossless JPEG,
+which we do not. (On the other hand, it doesn't do progressive JPEG.)
+
+
+FILE FORMAT WARS
+================
+
+Some JPEG programs produce files that are not compatible with our library.
+The root of the problem is that the ISO JPEG committee failed to specify a
+concrete file format. Some vendors "filled in the blanks" on their own,
+creating proprietary formats that no one else could read. (For example, none
+of the early commercial JPEG implementations for the Macintosh were able to
+exchange compressed files.)
+
+The file format we have adopted is called JFIF (see REFERENCES). This format
+has been agreed to by a number of major commercial JPEG vendors, and it has
+become the de facto standard. JFIF is a minimal or "low end" representation.
+We recommend the use of TIFF/JPEG (TIFF revision 6.0 as modified by TIFF
+Technical Note #2) for "high end" applications that need to record a lot of
+additional data about an image. TIFF/JPEG is fairly new and not yet widely
+supported, unfortunately.
+
+The upcoming JPEG Part 3 standard defines a file format called SPIFF.
+SPIFF is interoperable with JFIF, in the sense that most JFIF decoders should
+be able to read the most common variant of SPIFF. SPIFF has some technical
+advantages over JFIF, but its major claim to fame is simply that it is an
+official standard rather than an informal one. At this point it is unclear
+whether SPIFF will supersede JFIF or whether JFIF will remain the de-facto
+standard. IJG intends to support SPIFF once the standard is frozen, but we
+have not decided whether it should become our default output format or not.
+(In any case, our decoder will remain capable of reading JFIF indefinitely.)
+
+Various proprietary file formats incorporating JPEG compression also exist.
+We have little or no sympathy for the existence of these formats. Indeed,
+one of the original reasons for developing this free software was to help
+force convergence on common, open format standards for JPEG files. Don't
+use a proprietary file format!
+
+
+TO DO
+=====
+
+The major thrust for v7 will probably be improvement of visual quality.
+The current method for scaling the quantization tables is known not to be
+very good at low Q values. We also intend to investigate block boundary
+smoothing, "poor man's variable quantization", and other means of improving
+quality-vs-file-size performance without sacrificing compatibility.
+
+In future versions, we are considering supporting some of the upcoming JPEG
+Part 3 extensions --- principally, variable quantization and the SPIFF file
+format.
+
+As always, speeding things up is of great interest.
+
+Please send bug reports, offers of help, etc. to jpeg-info@uunet.uu.net.
diff --git a/dependencies/DXSDK_Aug2007/libpng-license.txt b/dependencies/DXSDK_Aug2007/libpng-license.txt
new file mode 100644
index 0000000..78c83a4
--- /dev/null
+++ b/dependencies/DXSDK_Aug2007/libpng-license.txt
@@ -0,0 +1,99 @@
+COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+If you modify libpng you may insert additional notices immediately following
+this sentence.
+
+libpng versions 1.0.7, July 1, 2000, through 1.0.8, July 24, 2000, are
+Copyright (c) 2000 Glenn Randers-Pehrson
+and are distributed according to the same disclaimer and license as libpng-1.0.6
+with the following individuals added to the list of Contributing Authors
+
+ Simon-Pierre Cadieux
+ Eric S. Raymond
+ Gilles Vollant
+
+and with the following additions to the disclaimer:
+
+ There is no warranty against interference with your enjoyment of the
+ library or against infringement. There is no warranty that our
+ efforts or the library will fulfill any of your particular purposes
+ or needs. This library is provided with all faults, and the entire
+ risk of satisfactory quality, performance, accuracy, and effort is with
+ the user.
+
+libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
+Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-0.96,
+with the following individuals added to the list of Contributing Authors:
+
+ Tom Lane
+ Glenn Randers-Pehrson
+ Willem van Schaik
+
+libpng versions 0.89, June 1996, through 0.96, May 1997, are
+Copyright (c) 1996, 1997 Andreas Dilger
+Distributed according to the same disclaimer and license as libpng-0.88,
+with the following individuals added to the list of Contributing Authors:
+
+ John Bowler
+ Kevin Bracey
+ Sam Bushell
+ Magnus Holmgren
+ Greg Roelofs
+ Tom Tanner
+
+libpng versions 0.5, May 1995, through 0.88, January 1996, are
+Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
+
+For the purposes of this copyright and license, "Contributing Authors"
+is defined as the following set of individuals:
+
+ Andreas Dilger
+ Dave Martindale
+ Guy Eric Schalnat
+ Paul Schmidt
+ Tim Wegner
+
+The PNG Reference Library is supplied "AS IS". The Contributing Authors
+and Group 42, Inc. disclaim all warranties, expressed or implied,
+including, without limitation, the warranties of merchantability and of
+fitness for any purpose. The Contributing Authors and Group 42, Inc.
+assume no liability for direct, indirect, incidental, special, exemplary,
+or consequential damages, which may result from the use of the PNG
+Reference Library, even if advised of the possibility of such damage.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+source code, or portions hereof, for any purpose, without fee, subject
+to the following restrictions:
+
+1. The origin of this source code must not be misrepresented.
+
+2. Altered versions must be plainly marked as such and must not
+ be misrepresented as being the original source.
+
+3. This Copyright notice may not be removed or altered from any
+ source or altered source distribution.
+
+The Contributing Authors and Group 42, Inc. specifically permit, without
+fee, and encourage the use of this source code as a component to
+supporting the PNG file format in commercial products. If you use this
+source code in a product, acknowledgment is not required but would be
+appreciated.
+
+
+A "png_get_copyright" function is available, for convenient use in "about"
+boxes and the like:
+
+ printf("%s",png_get_copyright(NULL));
+
+Also, the PNG logo (in PNG format, of course) is supplied in the
+files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
+
+Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a
+certification mark of the Open Source Initiative.
+
+Glenn Randers-Pehrson
+randeg@alum.rpi.edu
+July 24, 2000
+
+