DirectPlay8.pas 140 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452
  1. {******************************************************************************}
  2. {* *}
  3. {* Copyright (C) Microsoft Corporation. All Rights Reserved. *}
  4. {* *}
  5. {* Files: dpaddr.h dplobby8.h dplay8.h dvoice.h *}
  6. {* Content: DirectPlay8 include files *}
  7. {* *}
  8. {* DirectX 9.0 Delphi adaptation by Alexey Barkovoy *}
  9. {* E-Mail: clootie@reactor.ru *}
  10. {* *}
  11. {* Modified: 27-Apr-2003 *}
  12. {* *}
  13. {* Latest version can be downloaded from: *}
  14. {* http://clootie.narod.ru/delphi *}
  15. {* *}
  16. {******************************************************************************}
  17. { }
  18. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. {$I DirectX.inc}
  43. unit DirectPlay8;
  44. interface
  45. (*$HPPEMIT '#include "dplay8.h"' *)
  46. (*$HPPEMIT '#include "dplobby8.h"' *)
  47. (*$HPPEMIT '#include "dvoice.h"' *)
  48. uses
  49. Windows, WinSock, DirectSound;
  50. (*==========================================================================;
  51. *
  52. * Copyright (C) 2000-2002 Microsoft Corporation. All Rights Reserved.
  53. *
  54. * File: dpaddr.h
  55. * Content: DirectPlayAddress include file
  56. ***************************************************************************)
  57. const
  58. (****************************************************************************
  59. *
  60. * DirectPlay8Address CLSIDs
  61. *
  62. ****************************************************************************)
  63. // {934A9523-A3CA-4bc5-ADA0-D6D95D979421}
  64. CLSID_DirectPlay8Address: TGUID = '{934a9523-a3ca-4bc5-ada0-d6d95d979421}';
  65. {$EXTERNALSYM CLSID_DirectPlay8Address}
  66. (****************************************************************************
  67. *
  68. * DirectPlay8Address Interface IIDs
  69. *
  70. ****************************************************************************)
  71. type
  72. DPNAREFIID = TGUID;
  73. {$EXTERNALSYM DPNAREFIID}
  74. TDPNARefIID = DPNAREFIID;
  75. (****************************************************************************
  76. *
  77. * DirectPlay8Address Constants
  78. *
  79. ****************************************************************************)
  80. const
  81. //
  82. // Asynchronous operation flags
  83. //
  84. DPNA_DATATYPE_STRING = $00000001;
  85. {$EXTERNALSYM DPNA_DATATYPE_STRING}
  86. DPNA_DATATYPE_DWORD = $00000002;
  87. {$EXTERNALSYM DPNA_DATATYPE_DWORD}
  88. DPNA_DATATYPE_GUID = $00000003;
  89. {$EXTERNALSYM DPNA_DATATYPE_GUID}
  90. DPNA_DATATYPE_BINARY = $00000004;
  91. {$EXTERNALSYM DPNA_DATATYPE_BINARY}
  92. DPNA_DATATYPE_STRING_ANSI = $00000005;
  93. {$EXTERNALSYM DPNA_DATATYPE_STRING_ANSI}
  94. DPNA_DPNSVR_PORT = 6073;
  95. {$EXTERNALSYM DPNA_DPNSVR_PORT}
  96. DPNA_INDEX_INVALID = $FFFFFFFF;
  97. {$EXTERNALSYM DPNA_INDEX_INVALID}
  98. (****************************************************************************
  99. *
  100. * DirectPlay8Address Address Elements
  101. *
  102. ****************************************************************************)
  103. DPNA_SEPARATOR_KEYVALUE = WideChar('=');
  104. {$EXTERNALSYM DPNA_SEPARATOR_KEYVALUE}
  105. DPNA_SEPARATOR_USERDATA = WideChar('#');
  106. {$EXTERNALSYM DPNA_SEPARATOR_USERDATA}
  107. DPNA_SEPARATOR_COMPONENT = WideChar(';');
  108. {$EXTERNALSYM DPNA_SEPARATOR_COMPONENT}
  109. DPNA_ESCAPECHAR = WideChar('%');
  110. {$EXTERNALSYM DPNA_ESCAPECHAR}
  111. // Header
  112. DPNA_HEADER = 'x-directplay:/';
  113. {$EXTERNALSYM DPNA_HEADER}
  114. // key names for address components
  115. DPNA_KEY_NAT_RESOLVER = 'natresolver';
  116. {$EXTERNALSYM DPNA_KEY_NAT_RESOLVER}
  117. DPNA_KEY_NAT_RESOLVER_USER_STRING = 'natresolveruserstring';
  118. {$EXTERNALSYM DPNA_KEY_NAT_RESOLVER_USER_STRING}
  119. DPNA_KEY_APPLICATION_INSTANCE = 'applicationinstance';
  120. {$EXTERNALSYM DPNA_KEY_APPLICATION_INSTANCE}
  121. DPNA_KEY_DEVICE = 'device';
  122. {$EXTERNALSYM DPNA_KEY_DEVICE}
  123. DPNA_KEY_HOSTNAME = 'hostname';
  124. {$EXTERNALSYM DPNA_KEY_HOSTNAME}
  125. DPNA_KEY_PORT = 'port';
  126. {$EXTERNALSYM DPNA_KEY_PORT}
  127. DPNA_KEY_NAMEINFO = 'nameinfo';
  128. {$EXTERNALSYM DPNA_KEY_NAMEINFO}
  129. DPNA_KEY_PROCESSOR = 'processor';
  130. {$EXTERNALSYM DPNA_KEY_PROCESSOR}
  131. DPNA_KEY_PROGRAM = 'program';
  132. {$EXTERNALSYM DPNA_KEY_PROGRAM}
  133. DPNA_KEY_PROVIDER = 'provider';
  134. {$EXTERNALSYM DPNA_KEY_PROVIDER}
  135. DPNA_KEY_SCOPE = 'scope';
  136. {$EXTERNALSYM DPNA_KEY_SCOPE}
  137. DPNA_KEY_TRAVERSALMODE = 'traversalmode';
  138. {$EXTERNALSYM DPNA_KEY_TRAVERSALMODE}
  139. DPNA_KEY_BAUD = 'baud';
  140. {$EXTERNALSYM DPNA_KEY_BAUD}
  141. DPNA_KEY_FLOWCONTROL = 'flowcontrol';
  142. {$EXTERNALSYM DPNA_KEY_FLOWCONTROL}
  143. DPNA_KEY_PARITY = 'parity';
  144. {$EXTERNALSYM DPNA_KEY_PARITY}
  145. DPNA_KEY_PHONENUMBER = 'phonenumber';
  146. {$EXTERNALSYM DPNA_KEY_PHONENUMBER}
  147. DPNA_KEY_STOPBITS = 'stopbits';
  148. {$EXTERNALSYM DPNA_KEY_STOPBITS}
  149. // values for baud rate
  150. DPNA_BAUD_RATE_9600 = 9600;
  151. {$EXTERNALSYM DPNA_BAUD_RATE_9600}
  152. DPNA_BAUD_RATE_14400 = 14400;
  153. {$EXTERNALSYM DPNA_BAUD_RATE_14400}
  154. DPNA_BAUD_RATE_19200 = 19200;
  155. {$EXTERNALSYM DPNA_BAUD_RATE_19200}
  156. DPNA_BAUD_RATE_38400 = 38400;
  157. {$EXTERNALSYM DPNA_BAUD_RATE_38400}
  158. DPNA_BAUD_RATE_56000 = 56000;
  159. {$EXTERNALSYM DPNA_BAUD_RATE_56000}
  160. DPNA_BAUD_RATE_57600 = 57600;
  161. {$EXTERNALSYM DPNA_BAUD_RATE_57600}
  162. DPNA_BAUD_RATE_115200 = 115200;
  163. {$EXTERNALSYM DPNA_BAUD_RATE_115200}
  164. // values for stop bits
  165. DPNA_STOP_BITS_ONE = '1';
  166. {$EXTERNALSYM DPNA_STOP_BITS_ONE}
  167. DPNA_STOP_BITS_ONE_FIVE = '1.5';
  168. {$EXTERNALSYM DPNA_STOP_BITS_ONE_FIVE}
  169. DPNA_STOP_BITS_TWO = '2';
  170. {$EXTERNALSYM DPNA_STOP_BITS_TWO}
  171. // values for parity
  172. DPNA_PARITY_NONE = 'NONE';
  173. {$EXTERNALSYM DPNA_PARITY_NONE}
  174. DPNA_PARITY_EVEN = 'EVEN';
  175. {$EXTERNALSYM DPNA_PARITY_EVEN}
  176. DPNA_PARITY_ODD = 'ODD';
  177. {$EXTERNALSYM DPNA_PARITY_ODD}
  178. DPNA_PARITY_MARK = 'MARK';
  179. {$EXTERNALSYM DPNA_PARITY_MARK}
  180. DPNA_PARITY_SPACE = 'SPACE';
  181. {$EXTERNALSYM DPNA_PARITY_SPACE}
  182. // values for flow control
  183. DPNA_FLOW_CONTROL_NONE = 'NONE';
  184. {$EXTERNALSYM DPNA_FLOW_CONTROL_NONE}
  185. DPNA_FLOW_CONTROL_XONXOFF = 'XONXOFF';
  186. {$EXTERNALSYM DPNA_FLOW_CONTROL_XONXOFF}
  187. DPNA_FLOW_CONTROL_RTS = 'RTS';
  188. {$EXTERNALSYM DPNA_FLOW_CONTROL_RTS}
  189. DPNA_FLOW_CONTROL_DTR = 'DTR';
  190. {$EXTERNALSYM DPNA_FLOW_CONTROL_DTR}
  191. DPNA_FLOW_CONTROL_RTSDTR = 'RTSDTR';
  192. {$EXTERNALSYM DPNA_FLOW_CONTROL_RTSDTR}
  193. // values for traversal mode
  194. DPNA_TRAVERSALMODE_NONE = 0;
  195. {$EXTERNALSYM DPNA_TRAVERSALMODE_NONE}
  196. DPNA_TRAVERSALMODE_PORTREQUIRED = 1;
  197. {$EXTERNALSYM DPNA_TRAVERSALMODE_PORTREQUIRED}
  198. DPNA_TRAVERSALMODE_PORTRECOMMENDED = 2;
  199. {$EXTERNALSYM DPNA_TRAVERSALMODE_PORTRECOMMENDED}
  200. // Shortcut values
  201. //
  202. // These can be used instead of the corresponding CLSID_DP8SP_XXXX guids
  203. //
  204. DPNA_VALUE_TCPIPPROVIDER = 'IP';
  205. {$EXTERNALSYM DPNA_VALUE_TCPIPPROVIDER}
  206. DPNA_VALUE_IPXPROVIDER = 'IPX';
  207. {$EXTERNALSYM DPNA_VALUE_IPXPROVIDER}
  208. DPNA_VALUE_MODEMPROVIDER = 'MODEM';
  209. {$EXTERNALSYM DPNA_VALUE_MODEMPROVIDER}
  210. DPNA_VALUE_SERIALPROVIDER = 'SERIAL';
  211. {$EXTERNALSYM DPNA_VALUE_SERIALPROVIDER}
  212. //// ANSI DEFINITIONS
  213. // Header
  214. DPNA_HEADER_A = 'x-directplay:/';
  215. {$EXTERNALSYM DPNA_HEADER_A}
  216. DPNA_SEPARATOR_KEYVALUE_A = '=';
  217. {$EXTERNALSYM DPNA_SEPARATOR_KEYVALUE_A}
  218. DPNA_SEPARATOR_USERDATA_A = '#';
  219. {$EXTERNALSYM DPNA_SEPARATOR_USERDATA_A}
  220. DPNA_SEPARATOR_COMPONENT_A = ';';
  221. {$EXTERNALSYM DPNA_SEPARATOR_COMPONENT_A}
  222. DPNA_ESCAPECHAR_A = '%';
  223. {$EXTERNALSYM DPNA_ESCAPECHAR_A}
  224. // key names for address components
  225. DPNA_KEY_NAT_RESOLVER_A = 'natresolver';
  226. {$EXTERNALSYM DPNA_KEY_NAT_RESOLVER_A}
  227. DPNA_KEY_NAT_RESOLVER_USER_STRING_A = 'natresolveruserstring';
  228. {$EXTERNALSYM DPNA_KEY_NAT_RESOLVER_USER_STRING_A}
  229. DPNA_KEY_APPLICATION_INSTANCE_A = 'applicationinstance';
  230. {$EXTERNALSYM DPNA_KEY_APPLICATION_INSTANCE_A}
  231. DPNA_KEY_DEVICE_A = 'device';
  232. {$EXTERNALSYM DPNA_KEY_DEVICE_A}
  233. DPNA_KEY_HOSTNAME_A = 'hostname';
  234. {$EXTERNALSYM DPNA_KEY_HOSTNAME_A}
  235. DPNA_KEY_PORT_A = 'port';
  236. {$EXTERNALSYM DPNA_KEY_PORT_A}
  237. DPNA_KEY_NAMEINFO_A = 'nameinfo';
  238. {$EXTERNALSYM DPNA_KEY_NAMEINFO_A}
  239. DPNA_KEY_PROCESSOR_A = 'processor';
  240. {$EXTERNALSYM DPNA_KEY_PROCESSOR_A}
  241. DPNA_KEY_PROGRAM_A = 'program';
  242. {$EXTERNALSYM DPNA_KEY_PROGRAM_A}
  243. DPNA_KEY_PROVIDER_A = 'provider';
  244. {$EXTERNALSYM DPNA_KEY_PROVIDER_A}
  245. DPNA_KEY_SCOPE_A = 'scope';
  246. {$EXTERNALSYM DPNA_KEY_SCOPE_A}
  247. DPNA_KEY_TRAVERSALMODE_A = 'traversalmode';
  248. {$EXTERNALSYM DPNA_KEY_TRAVERSALMODE_A}
  249. DPNA_KEY_BAUD_A = 'baud';
  250. {$EXTERNALSYM DPNA_KEY_BAUD_A}
  251. DPNA_KEY_FLOWCONTROL_A = 'flowcontrol';
  252. {$EXTERNALSYM DPNA_KEY_FLOWCONTROL_A}
  253. DPNA_KEY_PARITY_A = 'parity';
  254. {$EXTERNALSYM DPNA_KEY_PARITY_A}
  255. DPNA_KEY_PHONENUMBER_A = 'phonenumber';
  256. {$EXTERNALSYM DPNA_KEY_PHONENUMBER_A}
  257. DPNA_KEY_STOPBITS_A = 'stopbits';
  258. {$EXTERNALSYM DPNA_KEY_STOPBITS_A}
  259. // values for stop bits
  260. DPNA_STOP_BITS_ONE_A = '1';
  261. {$EXTERNALSYM DPNA_STOP_BITS_ONE_A}
  262. DPNA_STOP_BITS_ONE_FIVE_A = '1.5';
  263. {$EXTERNALSYM DPNA_STOP_BITS_ONE_FIVE_A}
  264. DPNA_STOP_BITS_TWO_A = '2';
  265. {$EXTERNALSYM DPNA_STOP_BITS_TWO_A}
  266. // values for parity
  267. DPNA_PARITY_NONE_A = 'NONE';
  268. {$EXTERNALSYM DPNA_PARITY_NONE_A}
  269. DPNA_PARITY_EVEN_A = 'EVEN';
  270. {$EXTERNALSYM DPNA_PARITY_EVEN_A}
  271. DPNA_PARITY_ODD_A = 'ODD';
  272. {$EXTERNALSYM DPNA_PARITY_ODD_A}
  273. DPNA_PARITY_MARK_A = 'MARK';
  274. {$EXTERNALSYM DPNA_PARITY_MARK_A}
  275. DPNA_PARITY_SPACE_A = 'SPACE';
  276. {$EXTERNALSYM DPNA_PARITY_SPACE_A}
  277. // values for flow control
  278. DPNA_FLOW_CONTROL_NONE_A = 'NONE';
  279. {$EXTERNALSYM DPNA_FLOW_CONTROL_NONE_A}
  280. DPNA_FLOW_CONTROL_XONXOFF_A = 'XONXOFF';
  281. {$EXTERNALSYM DPNA_FLOW_CONTROL_XONXOFF_A}
  282. DPNA_FLOW_CONTROL_RTS_A = 'RTS';
  283. {$EXTERNALSYM DPNA_FLOW_CONTROL_RTS_A}
  284. DPNA_FLOW_CONTROL_DTR_A = 'DTR';
  285. {$EXTERNALSYM DPNA_FLOW_CONTROL_DTR_A}
  286. DPNA_FLOW_CONTROL_RTSDTR_A = 'RTSDTR';
  287. {$EXTERNALSYM DPNA_FLOW_CONTROL_RTSDTR_A}
  288. // Shortcut values
  289. //
  290. // These can be used instead of the corresponding CLSID_DP8SP_XXXX guids
  291. //
  292. DPNA_VALUE_TCPIPPROVIDER_A = 'IP';
  293. {$EXTERNALSYM DPNA_VALUE_TCPIPPROVIDER_A}
  294. DPNA_VALUE_IPXPROVIDER_A = 'IPX';
  295. {$EXTERNALSYM DPNA_VALUE_IPXPROVIDER_A}
  296. DPNA_VALUE_MODEMPROVIDER_A = 'MODEM';
  297. {$EXTERNALSYM DPNA_VALUE_MODEMPROVIDER_A}
  298. DPNA_VALUE_SERIALPROVIDER_A = 'SERIAL';
  299. {$EXTERNALSYM DPNA_VALUE_SERIALPROVIDER_A}
  300. type
  301. (****************************************************************************
  302. *
  303. * DirectPlay8Address Forward Declarations For External Types
  304. *
  305. ****************************************************************************)
  306. SOCKADDR = TSockAddr;
  307. {$EXTERNALSYM SOCKADDR}
  308. (****************************************************************************
  309. *
  310. * DirectPlay8Address Functions
  311. *
  312. ****************************************************************************)
  313. (*
  314. *
  315. * This function is no longer supported. It is recommended that CoCreateInstance be used to create
  316. * DirectPlay8 address objects.
  317. *
  318. * HRESULT WINAPI DirectPlay8AddressCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown);
  319. *
  320. *)
  321. (****************************************************************************
  322. *
  323. * DirectPlay8Address Application Interfaces
  324. *
  325. ****************************************************************************)
  326. //
  327. // COM definition for IDirectPlay8Address Generic Interface
  328. //
  329. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8Address);'}
  330. {$EXTERNALSYM IDirectPlay8Address}
  331. IDirectPlay8Address = interface(IUnknown)
  332. ['{83783300-4063-4c8a-9db3-82830a7feb31}']
  333. (*** IDirectPlay8Address methods ***)
  334. function BuildFromURLW(pwszSourceURL: PWideChar): HResult; stdcall;
  335. function BuildFromURLA(pszSourceURL: PAnsiChar): HResult; stdcall;
  336. function Duplicate(out ppdpaNewAddress: IDirectPlay8Address): HResult; stdcall;
  337. function SetEqual(pdpaAddress: IDirectPlay8Address): HResult; stdcall;
  338. function IsEqual(pdpaAddress: IDirectPlay8Address): HResult; stdcall;
  339. function Clear: HResult; stdcall;
  340. function GetURLW(pwszURL: PWideChar; var pdwNumChars: DWORD): HResult; stdcall;
  341. function GetURLA(pszURL: PAnsiChar; var pdwNumChars: DWORD): HResult; stdcall;
  342. function GetSP(out pguidSP: TGUID): HResult; stdcall;
  343. function GetUserData(pvUserData: Pointer; var pdwBufferSize: DWORD): HResult; stdcall;
  344. function SetSP(const pguidSP: TGUID): HResult; stdcall;
  345. function SetUserData(pvUserData: Pointer; dwDataSize: DWORD): HResult; stdcall;
  346. function GetNumComponents(out pdwNumComponents: DWORD): HResult; stdcall;
  347. function GetComponentByName(pwszName: PWideChar; pvBuffer: Pointer; var pdwBufferSize: DWORD; out pdwDataType: DWORD): HResult; stdcall;
  348. function GetComponentByIndex(dwComponentID: DWORD; pwszName: PWideChar; var pdwNameLen: DWORD; pvBuffer: Pointer; var pdwBufferSize: DWORD; out pdwDataType: DWORD): HResult; stdcall;
  349. function AddComponent(pwszName: PWideChar; lpvData: Pointer; dwDataSize, dwDataType: DWORD): HResult; stdcall;
  350. function GetDevice(out pguidDevice: TGUID): HResult; stdcall;
  351. function SetDevice(const pguidDevice: TGUID): HResult; stdcall;
  352. function BuildFromDPADDRESS(pvAddress: Pointer; dwDataSize: DWORD): HResult; stdcall;
  353. end;
  354. {$NODEFINE PIDirectPlay8Address}
  355. {$HPPEMIT 'typedef _di_IDirectPlay8Address *PIDirectPlay8Address;'}
  356. PIDirectPlay8Address = ^IDirectPlay8Address;
  357. //
  358. // COM definition for IDirectPlay8AddressIP Generic Interface
  359. //
  360. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8AddressIP);'}
  361. {$EXTERNALSYM IDirectPlay8AddressIP}
  362. IDirectPlay8AddressIP = interface(IUnknown)
  363. ['{e5a0e990-2bad-430b-87da-a142cf75de58}']
  364. (*** IDirectPlay8AddressIP methods ***)
  365. // Constructs a IDirectPlay8 TCP Address from a SOCKADDR structure
  366. function BuildFromSockAddr(const pSockAddr: TSockAddr): HResult; stdcall;
  367. // Constructs a TCP Address from a string (hostname) and port
  368. function BuildAddress(wszAddress: PWideChar; usPort: Word): HResult; stdcall;
  369. // Builds a local TCP Address
  370. function BuildLocalAddress(const pguidAdapter: TGUID; usPort: Word): HResult; stdcall;
  371. // Gets the address from the structure in SOCKADR format
  372. function GetSockAddress(psockAddress: PSockAddr; var pdwAddressBufferSize: DWORD): HResult; stdcall;
  373. // Gets the local afddress
  374. function GetLocalAddress(out pguidAdapter: TGUID; out pusPort: Word): HResult; stdcall;
  375. // Gets the remote address
  376. function GetAddress(wszAddress: PWideChar; var pdwAddressLength: DWORD; out psPort: Word): HResult; stdcall;
  377. end;
  378. (****************************************************************************
  379. *
  380. * DirectPlay8Address Interface IIDs
  381. *
  382. ****************************************************************************)
  383. type
  384. // {83783300-4063-4c8a-9DB3-82830A7FEB31}
  385. IID_IDirectPlay8Address = IDirectPlay8Address;
  386. {$EXTERNALSYM IID_IDirectPlay8Address}
  387. // {E5A0E990-2BAD-430b-87DA-A142CF75DE58}
  388. IID_IDirectPlay8AddressIP = IDirectPlay8AddressIP;
  389. {$EXTERNALSYM IID_IDirectPlay8AddressIP}
  390. (*==========================================================================;
  391. *
  392. * Copyright (C) 1998-2002 Microsoft Corporation. All Rights Reserved.
  393. *
  394. * File: DPlay8.h
  395. * Content: DirectPlay8 include file
  396. *
  397. ***************************************************************************)
  398. const
  399. (****************************************************************************
  400. *
  401. * DirectPlay8 CLSIDs
  402. *
  403. ****************************************************************************)
  404. // {743F1DC6-5ABA-429f-8BDF-C54D03253DC2}
  405. CLSID_DirectPlay8Client: TGUID = '{743f1dc6-5aba-429f-8bdf-c54d03253dc2}';
  406. {$EXTERNALSYM CLSID_DirectPlay8Client}
  407. // {DA825E1B-6830-43d7-835D-0B5AD82956A2}
  408. CLSID_DirectPlay8Server: TGUID = '{da825e1b-6830-43d7-835d-0b5ad82956a2}';
  409. {$EXTERNALSYM CLSID_DirectPlay8Server}
  410. // {286F484D-375E-4458-A272-B138E2F80A6A}
  411. CLSID_DirectPlay8Peer: TGUID = '{286f484d-375e-4458-a272-b138e2f80a6a}';
  412. {$EXTERNALSYM CLSID_DirectPlay8Peer}
  413. // CLSIDs added for DirectX 9
  414. // {FC47060E-6153-4b34-B975-8E4121EB7F3C}
  415. CLSID_DirectPlay8ThreadPool: TGUID = '{fc47060e-6153-4b34-b975-8e4121eb7f3c}';
  416. {$EXTERNALSYM CLSID_DirectPlay8ThreadPool}
  417. // {E4C1D9A2-CBF7-48bd-9A69-34A55E0D8941}
  418. CLSID_DirectPlay8NATResolver: TGUID = '{e4c1d9a2-cbf7-48bd-9a69-34a55e0d8941}';
  419. {$EXTERNALSYM CLSID_DirectPlay8NATResolver}
  420. (****************************************************************************
  421. *
  422. * DirectPlay8 Service Provider GUIDs
  423. *
  424. ****************************************************************************)
  425. // {53934290-628D-11D2-AE0F-006097B01411}
  426. CLSID_DP8SP_IPX: TGUID = '{53934290-628d-11d2-ae0f-006097b01411}';
  427. {$EXTERNALSYM CLSID_DP8SP_IPX}
  428. // {6D4A3650-628D-11D2-AE0F-006097B01411}
  429. CLSID_DP8SP_MODEM: TGUID = '{6d4a3650-628d-11d2-ae0f-006097b01411}';
  430. {$EXTERNALSYM CLSID_DP8SP_MODEM}
  431. // {743B5D60-628D-11D2-AE0F-006097B01411}
  432. CLSID_DP8SP_SERIAL: TGUID = '{743b5d60-628d-11d2-ae0f-006097b01411}';
  433. {$EXTERNALSYM CLSID_DP8SP_SERIAL}
  434. // {EBFE7BA0-628D-11D2-AE0F-006097B01411}
  435. CLSID_DP8SP_TCPIP: TGUID = '{ebfe7ba0-628d-11d2-ae0f-006097b01411}';
  436. {$EXTERNALSYM CLSID_DP8SP_TCPIP}
  437. // Service providers added for DirectX 9
  438. // {995513AF-3027-4b9a-956E-C772B3F78006}
  439. CLSID_DP8SP_BLUETOOTH: TGUID = '{995513af-3027-4b9a-956e-c772b3f78006}';
  440. {$EXTERNALSYM CLSID_DP8SP_BLUETOOTH}
  441. type
  442. (****************************************************************************
  443. *
  444. * DirectPlay8 Callback Functions
  445. *
  446. ****************************************************************************)
  447. //
  448. // Callback Function Type Definition
  449. //
  450. TFNDPNMessageHandler = function (pvUserContext: Pointer; dwMessageType: DWORD; pMessage: Pointer): HRESULT; stdcall;
  451. {$NODEFINE TFNDPNMessageHandler}
  452. {$HPPEMIT 'typedef PFNDPNMESSAGEHANDLER TFNDPNMessageHandler;'}
  453. (****************************************************************************
  454. *
  455. * DirectPlay8 Datatypes (Non-Structure / Non-Message)
  456. *
  457. ****************************************************************************)
  458. //
  459. // Player IDs. Used to uniquely identify a player in a session
  460. //
  461. PDPNID = ^DPNID;
  462. {$EXTERNALSYM PDPNID}
  463. DPNID = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWORD;
  464. {$EXTERNALSYM DPNID}
  465. TDPNID = DPNID;
  466. //
  467. // Used as identifiers for operations
  468. //
  469. PDPNHandle = ^TDPNHandle;
  470. DPNHANDLE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWORD;
  471. {$EXTERNALSYM DPNHANDLE}
  472. TDPNHandle = DPNHANDLE;
  473. (****************************************************************************
  474. *
  475. * DirectPlay8 Message Identifiers
  476. *
  477. ****************************************************************************)
  478. const
  479. DPN_MSGID_OFFSET = $FFFF0000;
  480. {$EXTERNALSYM DPN_MSGID_OFFSET}
  481. DPN_MSGID_ADD_PLAYER_TO_GROUP = (DPN_MSGID_OFFSET or $0001);
  482. {$EXTERNALSYM DPN_MSGID_ADD_PLAYER_TO_GROUP}
  483. DPN_MSGID_APPLICATION_DESC = (DPN_MSGID_OFFSET or $0002);
  484. {$EXTERNALSYM DPN_MSGID_APPLICATION_DESC}
  485. DPN_MSGID_ASYNC_OP_COMPLETE = (DPN_MSGID_OFFSET or $0003);
  486. {$EXTERNALSYM DPN_MSGID_ASYNC_OP_COMPLETE}
  487. DPN_MSGID_CLIENT_INFO = (DPN_MSGID_OFFSET or $0004);
  488. {$EXTERNALSYM DPN_MSGID_CLIENT_INFO}
  489. DPN_MSGID_CONNECT_COMPLETE = (DPN_MSGID_OFFSET or $0005);
  490. {$EXTERNALSYM DPN_MSGID_CONNECT_COMPLETE}
  491. DPN_MSGID_CREATE_GROUP = (DPN_MSGID_OFFSET or $0006);
  492. {$EXTERNALSYM DPN_MSGID_CREATE_GROUP}
  493. DPN_MSGID_CREATE_PLAYER = (DPN_MSGID_OFFSET or $0007);
  494. {$EXTERNALSYM DPN_MSGID_CREATE_PLAYER}
  495. DPN_MSGID_DESTROY_GROUP = (DPN_MSGID_OFFSET or $0008);
  496. {$EXTERNALSYM DPN_MSGID_DESTROY_GROUP}
  497. DPN_MSGID_DESTROY_PLAYER = (DPN_MSGID_OFFSET or $0009);
  498. {$EXTERNALSYM DPN_MSGID_DESTROY_PLAYER}
  499. DPN_MSGID_ENUM_HOSTS_QUERY = (DPN_MSGID_OFFSET or $000a);
  500. {$EXTERNALSYM DPN_MSGID_ENUM_HOSTS_QUERY}
  501. DPN_MSGID_ENUM_HOSTS_RESPONSE = (DPN_MSGID_OFFSET or $000b);
  502. {$EXTERNALSYM DPN_MSGID_ENUM_HOSTS_RESPONSE}
  503. DPN_MSGID_GROUP_INFO = (DPN_MSGID_OFFSET or $000c);
  504. {$EXTERNALSYM DPN_MSGID_GROUP_INFO}
  505. DPN_MSGID_HOST_MIGRATE = (DPN_MSGID_OFFSET or $000d);
  506. {$EXTERNALSYM DPN_MSGID_HOST_MIGRATE}
  507. DPN_MSGID_INDICATE_CONNECT = (DPN_MSGID_OFFSET or $000e);
  508. {$EXTERNALSYM DPN_MSGID_INDICATE_CONNECT}
  509. DPN_MSGID_INDICATED_CONNECT_ABORTED = (DPN_MSGID_OFFSET or $000f);
  510. {$EXTERNALSYM DPN_MSGID_INDICATED_CONNECT_ABORTED}
  511. DPN_MSGID_PEER_INFO = (DPN_MSGID_OFFSET or $0010);
  512. {$EXTERNALSYM DPN_MSGID_PEER_INFO}
  513. DPN_MSGID_RECEIVE = (DPN_MSGID_OFFSET or $0011);
  514. {$EXTERNALSYM DPN_MSGID_RECEIVE}
  515. DPN_MSGID_REMOVE_PLAYER_FROM_GROUP = (DPN_MSGID_OFFSET or $0012);
  516. {$EXTERNALSYM DPN_MSGID_REMOVE_PLAYER_FROM_GROUP}
  517. DPN_MSGID_RETURN_BUFFER = (DPN_MSGID_OFFSET or $0013);
  518. {$EXTERNALSYM DPN_MSGID_RETURN_BUFFER}
  519. DPN_MSGID_SEND_COMPLETE = (DPN_MSGID_OFFSET or $0014);
  520. {$EXTERNALSYM DPN_MSGID_SEND_COMPLETE}
  521. DPN_MSGID_SERVER_INFO = (DPN_MSGID_OFFSET or $0015);
  522. {$EXTERNALSYM DPN_MSGID_SERVER_INFO}
  523. DPN_MSGID_TERMINATE_SESSION = (DPN_MSGID_OFFSET or $0016);
  524. {$EXTERNALSYM DPN_MSGID_TERMINATE_SESSION}
  525. // Messages added for DirectX 9
  526. DPN_MSGID_CREATE_THREAD = (DPN_MSGID_OFFSET or $0017);
  527. {$EXTERNALSYM DPN_MSGID_CREATE_THREAD}
  528. DPN_MSGID_DESTROY_THREAD = (DPN_MSGID_OFFSET or $0018);
  529. {$EXTERNALSYM DPN_MSGID_DESTROY_THREAD}
  530. DPN_MSGID_NAT_RESOLVER_QUERY = (DPN_MSGID_OFFSET or $0101);
  531. {$EXTERNALSYM DPN_MSGID_NAT_RESOLVER_QUERY}
  532. (****************************************************************************
  533. *
  534. * DirectPlay8 Constants
  535. *
  536. ****************************************************************************)
  537. DPNID_ALL_PLAYERS_GROUP = 0;
  538. {$EXTERNALSYM DPNID_ALL_PLAYERS_GROUP}
  539. //
  540. // DESTROY_GROUP reasons
  541. //
  542. DPNDESTROYGROUPREASON_NORMAL = $0001;
  543. {$EXTERNALSYM DPNDESTROYGROUPREASON_NORMAL}
  544. DPNDESTROYGROUPREASON_AUTODESTRUCTED = $0002;
  545. {$EXTERNALSYM DPNDESTROYGROUPREASON_AUTODESTRUCTED}
  546. DPNDESTROYGROUPREASON_SESSIONTERMINATED = $0003;
  547. {$EXTERNALSYM DPNDESTROYGROUPREASON_SESSIONTERMINATED}
  548. //
  549. // DESTROY_PLAYER reasons
  550. //
  551. DPNDESTROYPLAYERREASON_NORMAL = $0001;
  552. {$EXTERNALSYM DPNDESTROYPLAYERREASON_NORMAL}
  553. DPNDESTROYPLAYERREASON_CONNECTIONLOST = $0002;
  554. {$EXTERNALSYM DPNDESTROYPLAYERREASON_CONNECTIONLOST}
  555. DPNDESTROYPLAYERREASON_SESSIONTERMINATED = $0003;
  556. {$EXTERNALSYM DPNDESTROYPLAYERREASON_SESSIONTERMINATED}
  557. DPNDESTROYPLAYERREASON_HOSTDESTROYEDPLAYER = $0004;
  558. {$EXTERNALSYM DPNDESTROYPLAYERREASON_HOSTDESTROYEDPLAYER}
  559. DPN_MAX_APPDESC_RESERVEDDATA_SIZE = 64;
  560. {$EXTERNALSYM DPN_MAX_APPDESC_RESERVEDDATA_SIZE}
  561. (****************************************************************************
  562. *
  563. * DirectPlay8 Flags
  564. *
  565. ****************************************************************************)
  566. //
  567. // Asynchronous operation flags (For Async Ops)
  568. //
  569. DPNOP_SYNC = $80000000;
  570. {$EXTERNALSYM DPNOP_SYNC}
  571. //
  572. // Add player to group flags (For AddPlayerToGroup)
  573. //
  574. DPNADDPLAYERTOGROUP_SYNC = DPNOP_SYNC;
  575. {$EXTERNALSYM DPNADDPLAYERTOGROUP_SYNC}
  576. //
  577. // Cancel flags
  578. //
  579. DPNCANCEL_CONNECT = $0001;
  580. {$EXTERNALSYM DPNCANCEL_CONNECT}
  581. DPNCANCEL_ENUM = $0002;
  582. {$EXTERNALSYM DPNCANCEL_ENUM}
  583. DPNCANCEL_SEND = $0004;
  584. {$EXTERNALSYM DPNCANCEL_SEND}
  585. DPNCANCEL_ALL_OPERATIONS = $8000;
  586. {$EXTERNALSYM DPNCANCEL_ALL_OPERATIONS}
  587. // Flags added for DirectX 9
  588. DPNCANCEL_PLAYER_SENDS = $80000000;
  589. {$EXTERNALSYM DPNCANCEL_PLAYER_SENDS}
  590. DPNCANCEL_PLAYER_SENDS_PRIORITY_HIGH = (DPNCANCEL_PLAYER_SENDS or $00010000);
  591. {$EXTERNALSYM DPNCANCEL_PLAYER_SENDS_PRIORITY_HIGH}
  592. DPNCANCEL_PLAYER_SENDS_PRIORITY_NORMAL = (DPNCANCEL_PLAYER_SENDS or $00020000);
  593. {$EXTERNALSYM DPNCANCEL_PLAYER_SENDS_PRIORITY_NORMAL}
  594. DPNCANCEL_PLAYER_SENDS_PRIORITY_LOW = (DPNCANCEL_PLAYER_SENDS or $00040000);
  595. {$EXTERNALSYM DPNCANCEL_PLAYER_SENDS_PRIORITY_LOW}
  596. //
  597. // Close flags (for Close, added for DirectX 9)
  598. //
  599. DPNCLOSE_IMMEDIATE = $00000001;
  600. {$EXTERNALSYM DPNCLOSE_IMMEDIATE}
  601. //
  602. // Connect flags (For Connect)
  603. //
  604. DPNCONNECT_SYNC = DPNOP_SYNC;
  605. {$EXTERNALSYM DPNCONNECT_SYNC}
  606. DPNCONNECT_OKTOQUERYFORADDRESSING = $0001;
  607. {$EXTERNALSYM DPNCONNECT_OKTOQUERYFORADDRESSING}
  608. //
  609. // Create group flags (For CreateGroup)
  610. //
  611. DPNCREATEGROUP_SYNC = DPNOP_SYNC;
  612. {$EXTERNALSYM DPNCREATEGROUP_SYNC}
  613. //
  614. // Destroy group flags (For DestroyGroup)
  615. //
  616. DPNDESTROYGROUP_SYNC = DPNOP_SYNC;
  617. {$EXTERNALSYM DPNDESTROYGROUP_SYNC}
  618. //
  619. // Enumerate clients and groups flags (For EnumPlayersAndGroups)
  620. //
  621. DPNENUM_PLAYERS = $0001;
  622. {$EXTERNALSYM DPNENUM_PLAYERS}
  623. DPNENUM_GROUPS = $0010;
  624. {$EXTERNALSYM DPNENUM_GROUPS}
  625. //
  626. // Enum hosts flags (For EnumHosts)
  627. //
  628. DPNENUMHOSTS_SYNC = DPNOP_SYNC;
  629. {$EXTERNALSYM DPNENUMHOSTS_SYNC}
  630. DPNENUMHOSTS_OKTOQUERYFORADDRESSING = $0001;
  631. {$EXTERNALSYM DPNENUMHOSTS_OKTOQUERYFORADDRESSING}
  632. DPNENUMHOSTS_NOBROADCASTFALLBACK = $0002;
  633. {$EXTERNALSYM DPNENUMHOSTS_NOBROADCASTFALLBACK}
  634. //
  635. // Enum service provider flags (For EnumSP)
  636. //
  637. DPNENUMSERVICEPROVIDERS_ALL = $0001;
  638. {$EXTERNALSYM DPNENUMSERVICEPROVIDERS_ALL}
  639. //
  640. // GetLocalHostAddresses flags (added for DirectX 9)
  641. //
  642. DPNGETLOCALHOSTADDRESSES_COMBINED = $0001;
  643. {$EXTERNALSYM DPNGETLOCALHOSTADDRESSES_COMBINED}
  644. //
  645. // Get send queue info flags (For GetSendQueueInfo)
  646. //
  647. DPNGETSENDQUEUEINFO_PRIORITY_NORMAL = $0001;
  648. {$EXTERNALSYM DPNGETSENDQUEUEINFO_PRIORITY_NORMAL}
  649. DPNGETSENDQUEUEINFO_PRIORITY_HIGH = $0002;
  650. {$EXTERNALSYM DPNGETSENDQUEUEINFO_PRIORITY_HIGH}
  651. DPNGETSENDQUEUEINFO_PRIORITY_LOW = $0004;
  652. {$EXTERNALSYM DPNGETSENDQUEUEINFO_PRIORITY_LOW}
  653. //
  654. // Group information flags (For Group Info)
  655. //
  656. DPNGROUP_AUTODESTRUCT = $0001;
  657. {$EXTERNALSYM DPNGROUP_AUTODESTRUCT}
  658. //
  659. // Host flags (For Host)
  660. //
  661. DPNHOST_OKTOQUERYFORADDRESSING = $0001;
  662. {$EXTERNALSYM DPNHOST_OKTOQUERYFORADDRESSING}
  663. //
  664. // Set info
  665. //
  666. DPNINFO_NAME = $0001;
  667. {$EXTERNALSYM DPNINFO_NAME}
  668. DPNINFO_DATA = $0002;
  669. {$EXTERNALSYM DPNINFO_DATA}
  670. //
  671. // Initialize flags (For Initialize)
  672. //
  673. DPNINITIALIZE_DISABLEPARAMVAL = $0001;
  674. {$EXTERNALSYM DPNINITIALIZE_DISABLEPARAMVAL}
  675. // Flags added for DirectX 9
  676. DPNINITIALIZE_HINT_LANSESSION = $0002;
  677. {$EXTERNALSYM DPNINITIALIZE_HINT_LANSESSION}
  678. DPNINITIALIZE_DISABLELINKTUNING = $0004;
  679. {$EXTERNALSYM DPNINITIALIZE_DISABLELINKTUNING}
  680. //
  681. // Register Lobby flags
  682. //
  683. DPNLOBBY_REGISTER = $0001;
  684. {$EXTERNALSYM DPNLOBBY_REGISTER}
  685. DPNLOBBY_UNREGISTER = $0002;
  686. {$EXTERNALSYM DPNLOBBY_UNREGISTER}
  687. //
  688. // Player information flags (For Player Info / Player Messages)
  689. //
  690. DPNPLAYER_LOCAL = $0002;
  691. {$EXTERNALSYM DPNPLAYER_LOCAL}
  692. DPNPLAYER_HOST = $0004;
  693. {$EXTERNALSYM DPNPLAYER_HOST}
  694. //
  695. // Receive indication flags (added for DirectX 9)
  696. //
  697. DPNRECEIVE_GUARANTEED = $0001;
  698. {$EXTERNALSYM DPNRECEIVE_GUARANTEED}
  699. DPNRECEIVE_COALESCED = $0002;
  700. {$EXTERNALSYM DPNRECEIVE_COALESCED}
  701. //
  702. // Remove player from group flags (For RemovePlayerFromGroup)
  703. //
  704. DPNREMOVEPLAYERFROMGROUP_SYN = DPNOP_SYNC;
  705. {$EXTERNALSYM DPNREMOVEPLAYERFROMGROUP_SYN}
  706. //
  707. // Send flags (For Send/SendTo)
  708. //
  709. DPNSEND_SYNC = DPNOP_SYNC;
  710. {$EXTERNALSYM DPNSEND_SYNC}
  711. DPNSEND_NOCOPY = $0001;
  712. {$EXTERNALSYM DPNSEND_NOCOPY}
  713. DPNSEND_NOCOMPLETE = $0002;
  714. {$EXTERNALSYM DPNSEND_NOCOMPLETE}
  715. DPNSEND_COMPLETEONPROCESS = $0004;
  716. {$EXTERNALSYM DPNSEND_COMPLETEONPROCESS}
  717. DPNSEND_GUARANTEED = $0008;
  718. {$EXTERNALSYM DPNSEND_GUARANTEED}
  719. DPNSEND_NONSEQUENTIAL = $0010;
  720. {$EXTERNALSYM DPNSEND_NONSEQUENTIAL}
  721. DPNSEND_NOLOOPBACK = $0020;
  722. {$EXTERNALSYM DPNSEND_NOLOOPBACK}
  723. DPNSEND_PRIORITY_LOW = $0040;
  724. {$EXTERNALSYM DPNSEND_PRIORITY_LOW}
  725. DPNSEND_PRIORITY_HIGH = $0080;
  726. {$EXTERNALSYM DPNSEND_PRIORITY_HIGH}
  727. // Flag added for DirectX 9
  728. DPNSEND_COALESCE = $0100;
  729. {$EXTERNALSYM DPNSEND_COALESCE}
  730. //
  731. // Send complete indication flags (added for DirectX 9)
  732. //
  733. DPNSENDCOMPLETE_GUARANTEED = $0001;
  734. {$EXTERNALSYM DPNSENDCOMPLETE_GUARANTEED}
  735. DPNSENDCOMPLETE_COALESCED = $0002;
  736. {$EXTERNALSYM DPNSENDCOMPLETE_COALESCED}
  737. //
  738. // Session Flags (for DPN_APPLICATION_DESC)
  739. //
  740. DPNSESSION_CLIENT_SERVER = $0001;
  741. {$EXTERNALSYM DPNSESSION_CLIENT_SERVER}
  742. DPNSESSION_MIGRATE_HOST = $0004;
  743. {$EXTERNALSYM DPNSESSION_MIGRATE_HOST}
  744. DPNSESSION_NODPNSVR = $0040;
  745. {$EXTERNALSYM DPNSESSION_NODPNSVR}
  746. DPNSESSION_REQUIREPASSWORD = $0080;
  747. {$EXTERNALSYM DPNSESSION_REQUIREPASSWORD}
  748. // Flag added for DirectX 9
  749. DPNSESSION_NOENUMS = $0100;
  750. {$EXTERNALSYM DPNSESSION_NOENUMS}
  751. DPNSESSION_FAST_SIGNED = $0200;
  752. {$EXTERNALSYM DPNSESSION_FAST_SIGNED}
  753. DPNSESSION_FULL_SIGNED = $0400;
  754. {$EXTERNALSYM DPNSESSION_FULL_SIGNED}
  755. //
  756. // Set client info flags (For SetClientInfo)
  757. //
  758. DPNSETCLIENTINFO_SYNC = DPNOP_SYNC;
  759. {$EXTERNALSYM DPNSETCLIENTINFO_SYNC}
  760. //
  761. // Set group info flags (For SetGroupInfo)
  762. //
  763. DPNSETGROUPINFO_SYNC = DPNOP_SYNC;
  764. {$EXTERNALSYM DPNSETGROUPINFO_SYNC}
  765. //
  766. // Set peer info flags (For SetPeerInfo)
  767. //
  768. DPNSETPEERINFO_SYNC = DPNOP_SYNC;
  769. {$EXTERNALSYM DPNSETPEERINFO_SYNC}
  770. //
  771. // Set server info flags (For SetServerInfo)
  772. //
  773. DPNSETSERVERINFO_SYNC = DPNOP_SYNC;
  774. {$EXTERNALSYM DPNSETSERVERINFO_SYNC}
  775. //
  776. // SP capabilities flags
  777. //
  778. DPNSPCAPS_SUPPORTSDPNSVR = $0001;
  779. {$EXTERNALSYM DPNSPCAPS_SUPPORTSDPNSVR}
  780. DPNSPCAPS_SUPPORTSDPNSRV = DPNSPCAPS_SUPPORTSDPNSVR;
  781. {$EXTERNALSYM DPNSPCAPS_SUPPORTSDPNSRV}
  782. DPNSPCAPS_SUPPORTSBROADCAST = $0002;
  783. {$EXTERNALSYM DPNSPCAPS_SUPPORTSBROADCAST}
  784. DPNSPCAPS_SUPPORTSALLADAPTERS = $0004;
  785. {$EXTERNALSYM DPNSPCAPS_SUPPORTSALLADAPTERS}
  786. // Flags added for DirectX 9
  787. DPNSPCAPS_SUPPORTSTHREADPOOL = $0008;
  788. {$EXTERNALSYM DPNSPCAPS_SUPPORTSTHREADPOOL}
  789. DPNSPCAPS_NETWORKSIMULATOR = $0010;
  790. {$EXTERNALSYM DPNSPCAPS_NETWORKSIMULATOR}
  791. //
  792. // SP information flags (added for DirectX 9)
  793. //
  794. DPNSPINFO_NETWORKSIMULATORDEVICE = $0001;
  795. {$EXTERNALSYM DPNSPINFO_NETWORKSIMULATORDEVICE}
  796. (****************************************************************************
  797. *
  798. * DirectPlay8 Structures (Non-Message)
  799. *
  800. ****************************************************************************)
  801. type
  802. //
  803. // Application description
  804. //
  805. PDPNApplicationDesc = ^TDPNApplicationDesc;
  806. _DPN_APPLICATION_DESC = packed record
  807. dwSize: DWORD; // Size of this structure
  808. dwFlags: DWORD; // Flags (DPNSESSION_...)
  809. guidInstance: TGUID; // Instance GUID
  810. guidApplication: TGUID; // Application GUID
  811. dwMaxPlayers: DWORD; // Maximum # of players allowed (0=no limit)
  812. dwCurrentPlayers: DWORD; // Current # of players allowed
  813. pwszSessionName: PWideChar; // Name of the session
  814. pwszPassword: PWideChar; // Password for the session
  815. pvReservedData: Pointer;
  816. dwReservedDataSize: DWORD;
  817. pvApplicationReservedData: Pointer;
  818. dwApplicationReservedDataSize: DWORD;
  819. end;
  820. {$EXTERNALSYM _DPN_APPLICATION_DESC}
  821. DPN_APPLICATION_DESC = _DPN_APPLICATION_DESC;
  822. {$EXTERNALSYM DPN_APPLICATION_DESC}
  823. TDPNApplicationDesc = _DPN_APPLICATION_DESC;
  824. //
  825. // Generic Buffer Description
  826. //
  827. PBufferDesc = ^TBufferDesc;
  828. _BUFFERDESC = packed record
  829. wBufferSize:DWORD;
  830. pBufferData: PByte;
  831. end;
  832. {$EXTERNALSYM _BUFFERDESC}
  833. BUFFERDESC = _BUFFERDESC;
  834. {$EXTERNALSYM BUFFERDESC}
  835. TBufferDesc = _BUFFERDESC;
  836. PDPNBufferDesc = ^TDPNBufferDesc;
  837. DPN_BUFFER_DESC = _BUFFERDESC;
  838. {$EXTERNALSYM DPN_BUFFER_DESC}
  839. TDPNBufferDesc = DPN_BUFFER_DESC;
  840. //
  841. // DirectPlay8 capabilities
  842. //
  843. PDPNCaps = ^TDPNCaps;
  844. _DPN_CAPS = packed record
  845. dwSize: DWORD; // Size of this structure
  846. dwFlags: DWORD; // Flags
  847. dwConnectTimeout: DWORD; // ms before a connect request times out
  848. dwConnectRetries: DWORD; // # of times to attempt the connection
  849. dwTimeoutUntilKeepAlive: DWORD; // ms of inactivity before a keep alive is sent
  850. end;
  851. {$EXTERNALSYM _DPN_CAPS}
  852. DPN_CAPS = _DPN_CAPS;
  853. {$EXTERNALSYM DPN_CAPS}
  854. TDPNCaps = _DPN_CAPS;
  855. //
  856. // Extended capabilities structures (added for DirectX 9)
  857. //
  858. PDPNCapsEx = ^TDPNCapsEx;
  859. _DPN_CAPS_EX = packed record
  860. dwSize: DWORD; // Size of this structure
  861. dwFlags: DWORD; // Flags
  862. dwConnectTimeout: DWORD; // ms before a connect request times out
  863. dwConnectRetries: DWORD; // # of times to attempt the connection
  864. dwTimeoutUntilKeepAlive: DWORD; // ms of inactivity before a keep alive is sent
  865. dwMaxRecvMsgSize: DWORD; // maximum size in bytes of message that can be received
  866. dwNumSendRetries: DWORD; // maximum number of send retries before link is considered dead
  867. dwMaxSendRetryInterval: DWORD; // maximum period in msec between send retries
  868. dwDropThresholdRate: DWORD; // percentage of dropped packets before throttling
  869. dwThrottleRate: DWORD; // percentage amount to reduce send window when throttling
  870. dwNumHardDisconnectSends: DWORD; // number of hard disconnect frames to send when close immediate flag is specified
  871. dwMaxHardDisconnectPeriod: DWORD; // maximum period between hard disconnect sends
  872. end;
  873. {$EXTERNALSYM _DPN_CAPS_EX}
  874. DPN_CAPS_EX = _DPN_CAPS_EX;
  875. {$EXTERNALSYM DPN_CAPS_EX}
  876. TDPNCapsEx = _DPN_CAPS_EX;
  877. // Connection Statistics information
  878. PDPNConnectionInfo = ^TDPNConnectionInfo;
  879. _DPN_CONNECTION_INFO = packed record
  880. dwSize: DWORD;
  881. dwRoundTripLatencyMS: DWORD;
  882. dwThroughputBPS: DWORD;
  883. dwPeakThroughputBPS: DWORD;
  884. dwBytesSentGuaranteed: DWORD;
  885. dwPacketsSentGuaranteed: DWORD;
  886. dwBytesSentNonGuaranteed: DWORD;
  887. dwPacketsSentNonGuaranteed: DWORD;
  888. dwBytesRetried: DWORD; // Guaranteed only
  889. dwPacketsRetried: DWORD; // Guaranteed only
  890. dwBytesDropped: DWORD; // Non Guaranteed only
  891. dwPacketsDropped: DWORD; // Non Guaranteed only
  892. dwMessagesTransmittedHighPriority: DWORD;
  893. dwMessagesTimedOutHighPriority: DWORD;
  894. dwMessagesTransmittedNormalPriority: DWORD;
  895. dwMessagesTimedOutNormalPriority: DWORD;
  896. dwMessagesTransmittedLowPriority: DWORD;
  897. dwMessagesTimedOutLowPriority: DWORD;
  898. dwBytesReceivedGuaranteed: DWORD;
  899. dwPacketsReceivedGuaranteed: DWORD;
  900. dwBytesReceivedNonGuaranteed: DWORD;
  901. dwPacketsReceivedNonGuaranteed: DWORD;
  902. dwMessagesReceived: DWORD;
  903. end;
  904. {$EXTERNALSYM _DPN_CONNECTION_INFO}
  905. DPN_CONNECTION_INFO = _DPN_CONNECTION_INFO;
  906. {$EXTERNALSYM DPN_CONNECTION_INFO}
  907. TDPNConnectionInfo = _DPN_CONNECTION_INFO;
  908. //
  909. // Group information strucutre
  910. //
  911. PDPNGroupInfo = ^TDPNGroupInfo;
  912. _DPN_GROUP_INFO = packed record
  913. dwSize: DWORD; // size of this structure
  914. dwInfoFlags: DWORD; // information contained
  915. pwszName: PWideChar; // Unicode Name
  916. pvData: Pointer; // data block
  917. dwDataSize: DWORD; // size in BYTES of data block
  918. dwGroupFlags: DWORD; // group flags (DPNGROUP_...)
  919. end;
  920. {$EXTERNALSYM _DPN_GROUP_INFO}
  921. DPN_GROUP_INFO = _DPN_GROUP_INFO;
  922. {$EXTERNALSYM DPN_GROUP_INFO}
  923. TDPNGroupInfo = _DPN_GROUP_INFO;
  924. //
  925. // Player information structure
  926. //
  927. PDPNPlayerInfo = ^TDPNPlayerInfo;
  928. _DPN_PLAYER_INFO = packed record
  929. dwSize: DWORD; // size of this structure
  930. dwInfoFlags: DWORD; // information contained
  931. pwszName: PWideChar; // Unicode Name
  932. pvData: Pointer; // data block
  933. dwDataSize: DWORD; // size in BYTES of data block
  934. dwPlayerFlags: DWORD; // player flags (DPNPLAYER_...)
  935. end;
  936. {$EXTERNALSYM _DPN_PLAYER_INFO}
  937. DPN_PLAYER_INFO = _DPN_PLAYER_INFO;
  938. {$EXTERNALSYM DPN_PLAYER_INFO}
  939. TDPNPlayerInfo = _DPN_PLAYER_INFO;
  940. PDPNSecurityCredentials = ^TDPNSecurityCredentials;
  941. _DPN_SECURITY_CREDENTIALS = record
  942. end;
  943. {$EXTERNALSYM _DPN_SECURITY_CREDENTIALS}
  944. DPN_SECURITY_CREDENTIALS = _DPN_SECURITY_CREDENTIALS;
  945. {$EXTERNALSYM DPN_SECURITY_CREDENTIALS}
  946. TDPNSecurityCredentials = _DPN_SECURITY_CREDENTIALS;
  947. PDPNSecurityDesc = ^TDPNSecurityDesc;
  948. _DPN_SECURITY_DESC = record
  949. end;
  950. {$EXTERNALSYM _DPN_SECURITY_DESC}
  951. DPN_SECURITY_DESC = _DPN_SECURITY_DESC;
  952. {$EXTERNALSYM DPN_SECURITY_DESC}
  953. TDPNSecurityDesc = _DPN_SECURITY_DESC;
  954. //
  955. // Service provider & adapter enumeration structure
  956. //
  957. PDPNServiceProviderInfo = ^TDPNServiceProviderInfo;
  958. _DPN_SERVICE_PROVIDER_INFO = packed record
  959. dwFlags: DWORD;
  960. guid: TGUID; // SP Guid
  961. pwszName: PWideChar; // Friendly Name
  962. pvReserved: Pointer;
  963. dwReserved: DWORD;
  964. end;
  965. {$EXTERNALSYM _DPN_SERVICE_PROVIDER_INFO}
  966. DPN_SERVICE_PROVIDER_INFO = _DPN_SERVICE_PROVIDER_INFO;
  967. {$EXTERNALSYM DPN_SERVICE_PROVIDER_INFO}
  968. TDPNServiceProviderInfo = _DPN_SERVICE_PROVIDER_INFO;
  969. //
  970. // Service provider caps structure
  971. //
  972. PDPNSpCaps = ^TDPNSpCaps;
  973. _DPN_SP_CAPS = packed record
  974. dwSize: DWORD; // Size of this structure
  975. dwFlags: DWORD; // Flags ((DPNSPCAPS_...)
  976. dwNumThreads: DWORD; // # of worker threads to use
  977. dwDefaultEnumCount: DWORD; // default # of enum requests
  978. dwDefaultEnumRetryInterval: DWORD; // default ms between enum requests
  979. dwDefaultEnumTimeout: DWORD; // default enum timeout
  980. dwMaxEnumPayloadSize: DWORD; // maximum size in bytes for enum payload data
  981. dwBuffersPerThread: DWORD; // number of receive buffers per thread
  982. dwSystemBufferSize: DWORD; // amount of buffering to do in addition to posted receive buffers
  983. end;
  984. {$EXTERNALSYM _DPN_SP_CAPS}
  985. DPN_SP_CAPS = _DPN_SP_CAPS;
  986. {$EXTERNALSYM DPN_SP_CAPS}
  987. TDPNSpCaps = _DPN_SP_CAPS;
  988. (****************************************************************************
  989. *
  990. * IDirectPlay8 message handler call back structures
  991. *
  992. ****************************************************************************)
  993. //
  994. // Add player to group strucutre for message handler
  995. // (DPN_MSGID_ADD_PLAYER_TO_GROUP)
  996. //
  997. PDPNMsgAddPlayerToGroup = ^TDPNMsgAddPlayerToGroup;
  998. _DPNMSG_ADD_PLAYER_TO_GROUP = packed record
  999. dwSize: DWORD; // Size of this structure
  1000. dpnidGroup: TDPNID; // DPNID of group
  1001. pvGroupContext: Pointer; // Group context value
  1002. dpnidPlayer: TDPNID; // DPNID of added player
  1003. pvPlayerContext: Pointer; // Player context value
  1004. end;
  1005. {$EXTERNALSYM _DPNMSG_ADD_PLAYER_TO_GROUP}
  1006. DPNMSG_ADD_PLAYER_TO_GROUP = _DPNMSG_ADD_PLAYER_TO_GROUP;
  1007. {$EXTERNALSYM DPNMSG_ADD_PLAYER_TO_GROUP}
  1008. TDPNMsgAddPlayerToGroup = _DPNMSG_ADD_PLAYER_TO_GROUP;
  1009. //
  1010. // Async operation completion structure for message handler
  1011. // (DPN_MSGID_ASYNC_OP_COMPLETE)
  1012. //
  1013. PDPNMsgAsyncOpComplete = ^TDPNMsgAsyncOpComplete;
  1014. _DPNMSG_ASYNC_OP_COMPLETE = packed record
  1015. dwSize: DWORD; // Size of this structure
  1016. hAsyncOp: TDPNHandle; // DirectPlay8 async operation handle
  1017. pvUserContext: Pointer; // User context supplied
  1018. hResultCode: HRESULT; // HRESULT of operation
  1019. end;
  1020. {$EXTERNALSYM _DPNMSG_ASYNC_OP_COMPLETE}
  1021. DPNMSG_ASYNC_OP_COMPLETE = _DPNMSG_ASYNC_OP_COMPLETE;
  1022. {$EXTERNALSYM DPNMSG_ASYNC_OP_COMPLETE}
  1023. TDPNMsgAsyncOpComplete = _DPNMSG_ASYNC_OP_COMPLETE;
  1024. //
  1025. // Client info structure for message handler
  1026. // (DPN_MSGID_CLIENT_INFO)
  1027. //
  1028. PDPNMsgClientInfo = ^TDPNMsgClientInfo;
  1029. _DPNMSG_CLIENT_INFO = packed record
  1030. dwSize: DWORD; // Size of this structure
  1031. dpnidClient: TDPNID; // DPNID of client
  1032. pvPlayerContext: Pointer; // Player context value
  1033. end;
  1034. {$EXTERNALSYM _DPNMSG_CLIENT_INFO}
  1035. DPNMSG_CLIENT_INFO = _DPNMSG_CLIENT_INFO;
  1036. {$EXTERNALSYM DPNMSG_CLIENT_INFO}
  1037. TDPNMsgClientInfo = _DPNMSG_CLIENT_INFO;
  1038. //
  1039. // Connect complete structure for message handler
  1040. // (DPN_MSGID_CONNECT_COMPLETE)
  1041. //
  1042. PDPNMsgConnectComplete = ^TDPNMsgConnectComplete;
  1043. _DPNMSG_CONNECT_COMPLETE = packed record
  1044. dwSize: DWORD; // Size of this structure
  1045. hAsyncOp: TDPNHandle; // DirectPlay8 Async operation handle
  1046. pvUserContext: Pointer; // User context supplied at Connect
  1047. hResultCode: HRESULT; // HRESULT of connection attempt
  1048. pvApplicationReplyData: Pointer; // Connection reply data from Host/Server
  1049. dwApplicationReplyDataSize: DWORD; // Size (in bytes) of pvApplicationReplyData
  1050. // Fields added for DirectX 9
  1051. dpnidLocal: TDPNID; // DPNID of local player
  1052. end;
  1053. {$EXTERNALSYM _DPNMSG_CONNECT_COMPLETE}
  1054. DPNMSG_CONNECT_COMPLETE = _DPNMSG_CONNECT_COMPLETE;
  1055. {$EXTERNALSYM DPNMSG_CONNECT_COMPLETE}
  1056. TDPNMsgConnectComplete = _DPNMSG_CONNECT_COMPLETE;
  1057. //
  1058. // Create group structure for message handler
  1059. // (DPN_MSGID_CREATE_GROUP)
  1060. //
  1061. PDPNMsgCreateGroup = ^TDPNMsgCreateGroup;
  1062. _DPNMSG_CREATE_GROUP = packed record
  1063. dwSize: DWORD; // Size of this structure
  1064. dpnidGroup: TDPNID; // DPNID of new group
  1065. dpnidOwner: TDPNID; // Owner of newgroup
  1066. pvGroupContext: Pointer; // Group context value
  1067. // Fields added for DirectX 9
  1068. pvOwnerContext: Pointer; // Owner context value
  1069. end;
  1070. {$EXTERNALSYM _DPNMSG_CREATE_GROUP}
  1071. DPNMSG_CREATE_GROUP = _DPNMSG_CREATE_GROUP;
  1072. {$EXTERNALSYM DPNMSG_CREATE_GROUP}
  1073. TDPNMsgCreateGroup = _DPNMSG_CREATE_GROUP;
  1074. //
  1075. // Create player structure for message handler
  1076. // (DPN_MSGID_CREATE_PLAYER)
  1077. //
  1078. PDPNMsgCreatePlayer = ^TDPNMsgCreatePlayer;
  1079. _DPNMSG_CREATE_PLAYER = packed record
  1080. dwSize: DWORD; // Size of this structure
  1081. dpnidPlayer: DPNID; // DPNID of new player
  1082. pvPlayerContext: Pointer; // Player context value
  1083. end;
  1084. {$EXTERNALSYM _DPNMSG_CREATE_PLAYER}
  1085. DPNMSG_CREATE_PLAYER = _DPNMSG_CREATE_PLAYER;
  1086. {$EXTERNALSYM DPNMSG_CREATE_PLAYER}
  1087. TDPNMsgCreatePlayer = _DPNMSG_CREATE_PLAYER;
  1088. //
  1089. // Destroy group structure for message handler
  1090. // (DPN_MSGID_DESTROY_GROUP)
  1091. //
  1092. PDPNMsgDestroyGroup = ^TDPNMsgDestroyGroup;
  1093. _DPNMSG_DESTROY_GROUP = packed record
  1094. dwSize: DWORD; // Size of this structure
  1095. dpnidGroup: TDPNID; // DPNID of destroyed group
  1096. pvGroupContext: Pointer; // Group context value
  1097. dwReason: DWORD; // Information only
  1098. end;
  1099. {$EXTERNALSYM _DPNMSG_DESTROY_GROUP}
  1100. DPNMSG_DESTROY_GROUP = _DPNMSG_DESTROY_GROUP;
  1101. {$EXTERNALSYM DPNMSG_DESTROY_GROUP}
  1102. TDPNMsgDestroyGroup = _DPNMSG_DESTROY_GROUP;
  1103. //
  1104. // Destroy player structure for message handler
  1105. // (DPN_MSGID_DESTROY_PLAYER)
  1106. //
  1107. PDPNMsgDestroyPlayer = ^TDPNMsgDestroyPlayer;
  1108. _DPNMSG_DESTROY_PLAYER = packed record
  1109. dwSize: DWORD; // Size of this structure
  1110. dpnidPlayer: TDPNID; // DPNID of leaving player
  1111. pvPlayerContext: Pointer; // Player context value
  1112. dwReason: DWORD; // Information only
  1113. end;
  1114. {$EXTERNALSYM _DPNMSG_DESTROY_PLAYER}
  1115. DPNMSG_DESTROY_PLAYER = _DPNMSG_DESTROY_PLAYER;
  1116. {$EXTERNALSYM DPNMSG_DESTROY_PLAYER}
  1117. TDPNMsgDestroyPlayer = _DPNMSG_DESTROY_PLAYER;
  1118. //
  1119. // Enumeration request received structure for message handler
  1120. // (DPN_MSGID_ENUM_HOSTS_QUERY)
  1121. //
  1122. PDPNMsgEnumHostsQuery = ^TDPNMsgEnumHostsQuery;
  1123. _DPNMSG_ENUM_HOSTS_QUERY = packed record
  1124. dwSize: DWORD; // Size of this structure.
  1125. pAddressSender: IDirectPlay8Address; // Address of client who sent the request
  1126. pAddressDevice: IDirectPlay8Address; // Address of device request was received on
  1127. pvReceivedData: Pointer; // Request data (set on client)
  1128. dwReceivedDataSize: DWORD; // Request data size (set on client)
  1129. dwMaxResponseDataSize: DWORD; // Max allowable size of enum response
  1130. pvResponseData: Pointer; // Optional query repsonse (user set)
  1131. dwResponseDataSize: DWORD; // Optional query response size (user set)
  1132. pvResponseContext: Pointer; // Optional query response context (user set)
  1133. end;
  1134. {$EXTERNALSYM _DPNMSG_ENUM_HOSTS_QUERY}
  1135. DPNMSG_ENUM_HOSTS_QUERY = _DPNMSG_ENUM_HOSTS_QUERY;
  1136. {$EXTERNALSYM DPNMSG_ENUM_HOSTS_QUERY}
  1137. TDPNMsgEnumHostsQuery = _DPNMSG_ENUM_HOSTS_QUERY;
  1138. //
  1139. // Enumeration response received structure for message handler
  1140. // (DPN_MSGID_ENUM_HOSTS_RESPONSE)
  1141. //
  1142. PDPNMsgEnumHostsResponse = ^TDPNMsgEnumHostsResponse;
  1143. _DPNMSG_ENUM_HOSTS_RESPONSE = packed record
  1144. dwSize: DWORD; // Size of this structure
  1145. pAddressSender: IDirectPlay8Address; // Address of host who responded
  1146. pAddressDevice: IDirectPlay8Address; // Device response was received on
  1147. pApplicationDescription: PDPNApplicationDesc; // Application description for the session
  1148. pvResponseData: Pointer; // Optional response data (set on host)
  1149. dwResponseDataSize: DWORD; // Optional response data size (set on host)
  1150. pvUserContext: Pointer; // Context value supplied for enumeration
  1151. dwRoundTripLatencyMS: DWORD; // Round trip latency in MS
  1152. end;
  1153. {$EXTERNALSYM _DPNMSG_ENUM_HOSTS_RESPONSE}
  1154. DPNMSG_ENUM_HOSTS_RESPONSE = _DPNMSG_ENUM_HOSTS_RESPONSE;
  1155. {$EXTERNALSYM DPNMSG_ENUM_HOSTS_RESPONSE}
  1156. TDPNMsgEnumHostsResponse = _DPNMSG_ENUM_HOSTS_RESPONSE;
  1157. //
  1158. // Group info structure for message handler
  1159. // (DPN_MSGID_GROUP_INFO)
  1160. //
  1161. PDPNMsgGroupInfo = ^TDPNMsgGroupInfo;
  1162. _DPNMSG_GROUP_INFO = packed record
  1163. dwSize: DWORD; // Size of this structure
  1164. dpnidGroup: TDPNID; // DPNID of group
  1165. pvGroupContext: Pointer; // Group context value
  1166. end;
  1167. {$EXTERNALSYM _DPNMSG_GROUP_INFO}
  1168. DPNMSG_GROUP_INFO = _DPNMSG_GROUP_INFO;
  1169. {$EXTERNALSYM DPNMSG_GROUP_INFO}
  1170. TDPNMsgGroupInfo = _DPNMSG_GROUP_INFO;
  1171. //
  1172. // Migrate host structure for message handler
  1173. // (DPN_MSGID_HOST_MIGRATE)
  1174. //
  1175. PDPNMsgHostMigrate = ^TDPNMsgHostMigrate;
  1176. _DPNMSG_HOST_MIGRATE = packed record
  1177. dwSize: DWORD; // Size of this structure
  1178. dpnidNewHost: TDPNID; // DPNID of new Host player
  1179. pvPlayerContext: Pointer; // Player context value
  1180. end;
  1181. {$EXTERNALSYM _DPNMSG_HOST_MIGRATE}
  1182. DPNMSG_HOST_MIGRATE = _DPNMSG_HOST_MIGRATE;
  1183. {$EXTERNALSYM DPNMSG_HOST_MIGRATE}
  1184. TDPNMsgHostMigrate = _DPNMSG_HOST_MIGRATE;
  1185. //
  1186. // Indicate connect structure for message handler
  1187. // (DPN_MSGID_INDICATE_CONNECT)
  1188. //
  1189. PDPNMsgIndicateConnect = ^TDPNMsgIndicateConnect;
  1190. _DPNMSG_INDICATE_CONNECT = packed record
  1191. dwSize: DWORD; // Size of this structure
  1192. pvUserConnectData: Pointer; // Connecting player data
  1193. dwUserConnectDataSize: DWORD; // Size (in bytes) of pvUserConnectData
  1194. pvReplyData: Pointer; // Connection reply data
  1195. dwReplyDataSize: DWORD; // Size (in bytes) of pvReplyData
  1196. pvReplyContext: Pointer; // Buffer context for pvReplyData
  1197. pvPlayerContext: Pointer; // Player context preset
  1198. pAddressPlayer: IDirectPlay8Address; // Address of connecting player
  1199. pAddressDevice: IDirectPlay8Address; // Address of device receiving connect attempt
  1200. end;
  1201. {$EXTERNALSYM _DPNMSG_INDICATE_CONNECT}
  1202. DPNMSG_INDICATE_CONNECT = _DPNMSG_INDICATE_CONNECT;
  1203. {$EXTERNALSYM DPNMSG_INDICATE_CONNECT}
  1204. TDPNMsgIndicateConnect = _DPNMSG_INDICATE_CONNECT;
  1205. //
  1206. // Indicated connect aborted structure for message handler
  1207. // (DPN_MSGID_INDICATED_CONNECT_ABORTED)
  1208. //
  1209. PDPNMsgIndicatedConnectAborted = ^TDPNMsgIndicatedConnectAborted;
  1210. _DPNMSG_INDICATED_CONNECT_ABORTED = packed record
  1211. dwSize: DWORD; // Size of this structure
  1212. pvPlayerContext: Pointer; // Player context preset from DPNMSG_INDICATE_CONNECT
  1213. end;
  1214. {$EXTERNALSYM _DPNMSG_INDICATED_CONNECT_ABORTED}
  1215. DPNMSG_INDICATED_CONNECT_ABORTED = _DPNMSG_INDICATED_CONNECT_ABORTED;
  1216. {$EXTERNALSYM DPNMSG_INDICATED_CONNECT_ABORTED}
  1217. TDPNMsgIndicatedConnectAborted = _DPNMSG_INDICATED_CONNECT_ABORTED;
  1218. //
  1219. // Peer info structure for message handler
  1220. // (DPN_MSGID_PEER_INFO)
  1221. //
  1222. PDPNMsgPeerInfo = ^TDPNMsgPeerInfo;
  1223. _DPNMSG_PEER_INFO = packed record
  1224. dwSize: DWORD; // Size of this structure
  1225. dpnidPeer: TDPNID; // DPNID of peer
  1226. pvPlayerContext: Pointer; // Player context value
  1227. end;
  1228. {$EXTERNALSYM _DPNMSG_PEER_INFO}
  1229. DPNMSG_PEER_INFO = _DPNMSG_PEER_INFO;
  1230. {$EXTERNALSYM DPNMSG_PEER_INFO}
  1231. TDPNMsgPeerInfo = _DPNMSG_PEER_INFO;
  1232. //
  1233. // Receive structure for message handler
  1234. // (DPN_MSGID_RECEIVE)
  1235. //
  1236. PDPNMsgReceive = ^TDPNMsgReceive;
  1237. _DPNMSG_RECEIVE = packed record
  1238. dwSize: DWORD; // Size of this structure
  1239. dpnidSender: TDPNID; // DPNID of sending player
  1240. pvPlayerContext: Pointer; // Player context value of sending player
  1241. pReceiveData: PByte; // Received data
  1242. dwReceiveDataSize: DWORD; // Size (in bytes) of pReceiveData
  1243. hBufferHandle: TDPNHandle; // Buffer handle for pReceiveData
  1244. // Fields added for DirectX 9
  1245. dwReceiveFlags: DWORD; // Flags describing how message was received
  1246. end;
  1247. {$EXTERNALSYM _DPNMSG_RECEIVE}
  1248. DPNMSG_RECEIVE = _DPNMSG_RECEIVE;
  1249. {$EXTERNALSYM DPNMSG_RECEIVE}
  1250. TDPNMsgReceive = _DPNMSG_RECEIVE;
  1251. //
  1252. // Remove player from group structure for message handler
  1253. // (DPN_MSGID_REMOVE_PLAYER_FROM_GROUP)
  1254. //
  1255. PDPNMsgRemovePlayerFromGroup = ^TDPNMsgRemovePlayerFromGroup;
  1256. _DPNMSG_REMOVE_PLAYER_FROM_GROUP = packed record
  1257. dwSize: DWORD; // Size of this structure
  1258. dpnidGroup: TDPNID; // DPNID of group
  1259. pvGroupContext: Pointer; // Group context value
  1260. dpnidPlayer: TDPNID; // DPNID of deleted player
  1261. pvPlayerContext: Pointer; // Player context value
  1262. end;
  1263. {$EXTERNALSYM _DPNMSG_REMOVE_PLAYER_FROM_GROUP}
  1264. DPNMSG_REMOVE_PLAYER_FROM_GROUP = _DPNMSG_REMOVE_PLAYER_FROM_GROUP;
  1265. {$EXTERNALSYM DPNMSG_REMOVE_PLAYER_FROM_GROUP}
  1266. TDPNMsgRemovePlayerFromGroup = _DPNMSG_REMOVE_PLAYER_FROM_GROUP;
  1267. //
  1268. // Returned buffer structure for message handler
  1269. // (DPN_MSGID_RETURN_BUFFER)
  1270. //
  1271. PDPNMsgReturnBuffer = ^TDPNMsgReturnBuffer;
  1272. _DPNMSG_RETURN_BUFFER = packed record
  1273. dwSize: DWORD; // Size of this structure
  1274. hResultCode: HRESULT; // Return value of operation
  1275. pvBuffer: Pointer; // Buffer being returned
  1276. pvUserContext: Pointer; // Context associated with buffer
  1277. end;
  1278. {$EXTERNALSYM _DPNMSG_RETURN_BUFFER}
  1279. DPNMSG_RETURN_BUFFER = _DPNMSG_RETURN_BUFFER;
  1280. {$EXTERNALSYM DPNMSG_RETURN_BUFFER}
  1281. TDPNMsgReturnBuffer = _DPNMSG_RETURN_BUFFER;
  1282. //
  1283. // Send complete structure for message handler
  1284. // (DPN_MSGID_SEND_COMPLETE)
  1285. //
  1286. PDPNMsgSendComplete = ^TDPNMsgSendComplete;
  1287. _DPNMSG_SEND_COMPLETE = packed record
  1288. dwSize: DWORD; // Size of this structure
  1289. hAsyncOp: TDPNHandle; // DirectPlay8 Async operation handle
  1290. pvUserContext: Pointer; // User context supplied at Send/SendTo
  1291. hResultCode: HRESULT; // HRESULT of send
  1292. dwSendTime: DWORD; // Send time in ms
  1293. // Fields added for DirectX 9
  1294. dwFirstFrameRTT: DWORD; // RTT of the first frame in the message
  1295. dwFirstFrameRetryCount: DWORD; // Retry count of the first frame
  1296. dwSendCompleteFlags: DWORD; // Flags describing how message was sent
  1297. pBuffers: PDPNBufferDesc; // Pointer to array of buffers sent, if DirectPlay did not make a copy
  1298. dwNumBuffers: DWORD; // Number of buffers in previous array
  1299. end;
  1300. {$EXTERNALSYM _DPNMSG_SEND_COMPLETE}
  1301. DPNMSG_SEND_COMPLETE = _DPNMSG_SEND_COMPLETE;
  1302. {$EXTERNALSYM DPNMSG_SEND_COMPLETE}
  1303. TDPNMsgSendComplete = _DPNMSG_SEND_COMPLETE;
  1304. //
  1305. // Server info structure for message handler
  1306. // (DPN_MSGID_SERVER_INFO)
  1307. //
  1308. PDPNMsgServerInfo = ^TDPNMsgServerInfo;
  1309. _DPNMSG_SERVER_INFO = packed record
  1310. dwSize: DWORD; // Size of this structure
  1311. dpnidServer: TDPNID; // DPNID of server
  1312. pvPlayerContext: Pointer; // Player context value
  1313. end;
  1314. {$EXTERNALSYM _DPNMSG_SERVER_INFO}
  1315. DPNMSG_SERVER_INFO = _DPNMSG_SERVER_INFO;
  1316. {$EXTERNALSYM DPNMSG_SERVER_INFO}
  1317. TDPNMsgServerInfo = _DPNMSG_SERVER_INFO;
  1318. //
  1319. // Terminated session structure for message handler
  1320. // (DPN_MSGID_TERMINATE_SESSION)
  1321. //
  1322. PDPNMsgTerminateSession = ^TDPNMsgTerminateSession;
  1323. _DPNMSG_TERMINATE_SESSION = packed record
  1324. dwSize: DWORD; // Size of this structure
  1325. hResultCode: HRESULT; // Reason
  1326. pvTerminateData: Pointer; // Data passed from Host/Server
  1327. dwTerminateDataSize: DWORD; // Size (in bytes) of pvTerminateData
  1328. end;
  1329. {$EXTERNALSYM _DPNMSG_TERMINATE_SESSION}
  1330. DPNMSG_TERMINATE_SESSION = _DPNMSG_TERMINATE_SESSION;
  1331. {$EXTERNALSYM DPNMSG_TERMINATE_SESSION}
  1332. TDPNMsgTerminateSession = _DPNMSG_TERMINATE_SESSION;
  1333. //
  1334. // Message structures added for DirectX 9
  1335. //
  1336. //
  1337. // Create thread info structure for message handler
  1338. // (DPN_MSGID_CREATE_THREAD)
  1339. //
  1340. PDPNMsgCreateThread = ^TDPNMsgCreateThread;
  1341. _DPNMSG_CREATE_THREAD = packed record
  1342. dwSize: DWORD; // Size of this structure
  1343. dwFlags: DWORD; // Flags describing this thread
  1344. dwProcessorNum: DWORD; // Index of processor to which thread is bound
  1345. pvUserContext: Pointer; // Thread context value
  1346. end;
  1347. {$EXTERNALSYM _DPNMSG_CREATE_THREAD}
  1348. DPNMSG_CREATE_THREAD = _DPNMSG_CREATE_THREAD;
  1349. {$EXTERNALSYM DPNMSG_CREATE_THREAD}
  1350. TDPNMsgCreateThread = _DPNMSG_CREATE_THREAD;
  1351. //
  1352. // Destroy thread info structure for message handler
  1353. // (DPN_MSGID_DESTROY_THREAD)
  1354. //
  1355. PDPNMsgDestroyThread = ^TDPNMsgDestroyThread;
  1356. _DPNMSG_DESTROY_THREAD = packed record
  1357. dwSize: DWORD; // Size of this structure
  1358. dwProcessorNum: DWORD; // Index of processor to which thread was bound
  1359. pvUserContext: Pointer; // Thread context value
  1360. end;
  1361. {$EXTERNALSYM _DPNMSG_DESTROY_THREAD}
  1362. DPNMSG_DESTROY_THREAD = _DPNMSG_DESTROY_THREAD;
  1363. {$EXTERNALSYM DPNMSG_DESTROY_THREAD}
  1364. TDPNMsgDestroyThread = _DPNMSG_DESTROY_THREAD;
  1365. //
  1366. // Query-to-resolve-NAT-address structure for message handler
  1367. // (DPN_MSGID_NAT_RESOLVER_QUERY)
  1368. //
  1369. PDPNMsgNatResolverQuery = ^TDPNMsgNatResolverQuery;
  1370. _DPNMSG_NAT_RESOLVER_QUERY = packed record
  1371. dwSize: DWORD; // Size of this structure.
  1372. pAddressSender: IDirectPlay8Address; // Address of client that sent the query
  1373. pAddressDevice: IDirectPlay8Address; // Address of device on which query was received
  1374. pwszUserString: PWideChar; // User specified string, or NULL if none
  1375. end;
  1376. {$EXTERNALSYM _DPNMSG_NAT_RESOLVER_QUERY}
  1377. DPNMSG_NAT_RESOLVER_QUERY = _DPNMSG_NAT_RESOLVER_QUERY;
  1378. {$EXTERNALSYM DPNMSG_NAT_RESOLVER_QUERY}
  1379. TDPNMsgNatResolverQuery = _DPNMSG_NAT_RESOLVER_QUERY;
  1380. (****************************************************************************
  1381. *
  1382. * DirectPlay8 Functions
  1383. *
  1384. ****************************************************************************)
  1385. (*
  1386. * This function is no longer supported. It is recommended that CoCreateInstance be used to create
  1387. * DirectPlay8 objects.
  1388. *
  1389. * extern HRESULT WINAPI DirectPlay8Create( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown);
  1390. *
  1391. *)
  1392. (****************************************************************************
  1393. *
  1394. * DirectPlay8Lobby Interface Pointer
  1395. *
  1396. ****************************************************************************)
  1397. IDirectPlay8LobbiedApplication = interface;
  1398. (****************************************************************************
  1399. *
  1400. * DirectPlay8 Application Interfaces
  1401. *
  1402. ****************************************************************************)
  1403. //
  1404. // COM definition for DirectPlay8 Client interface
  1405. //
  1406. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8Client);'}
  1407. {$EXTERNALSYM IDirectPlay8Client}
  1408. IDirectPlay8Client = interface(IUnknown)
  1409. ['{5102dacd-241b-11d3-aea7-006097b01411}']
  1410. (*** IDirectPlay8Client methods ***)
  1411. function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
  1412. function EnumServiceProviders(pguidServiceProvider, pguidApplication: PGUID;
  1413. pSPInfoBuffer: PDPNServiceProviderInfo; out pcbEnumData, pcReturned: DWORD;
  1414. dwFlags: DWORD): HResult; stdcall;
  1415. function EnumHosts(const pApplicationDesc: TDPNApplicationDesc;
  1416. pAddrHost, pDeviceInfo: IDirectPlay8Address; pUserEnumData: Pointer;
  1417. dwUserEnumDataSize, dwEnumCount, dwRetryInterval, dwTimeOut: DWORD;
  1418. pvUserContext: Pointer; pAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1419. function CancelAsyncOperation(hAsyncHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1420. function Connect(const pdnAppDesc: TDPNApplicationDesc;
  1421. pHostAddr: IDirectPlay8Address; pDeviceInfo: IDirectPlay8Address;
  1422. pdnSecurity: PDPNSecurityDesc; pdnCredentials: PDPNSecurityCredentials;
  1423. pvUserConnectData: Pointer; dwUserConnectDataSize: DWORD; pvAsyncContext: Pointer;
  1424. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1425. function Send(const prgBufferDesc: TDPNBufferDesc; cBufferDesc, dwTimeOut: DWORD;
  1426. pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1427. function GetSendQueueInfo(pdwNumMsgs, pdwNumBytes: PDWORD; dwFlags: DWORD): HResult; stdcall;
  1428. function GetApplicationDesc(pAppDescBuffer: PDPNApplicationDesc; var pcbDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
  1429. function SetClientInfo(const pdpnPlayerInfo: TDPNPlayerInfo; pvAsyncContext: Pointer;
  1430. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1431. function GetServerInfo(pdpnPlayerInfo: PDPNPlayerInfo; var pdwSize: DWORD; dwFlags: DWORD): HResult; stdcall;
  1432. function GetServerAddress(out pAddress: IDirectPlay8Address; dwFlags: DWORD): HResult; stdcall;
  1433. function Close(dwFlags: DWORD): HResult; stdcall;
  1434. function ReturnBuffer(hBufferHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1435. function GetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
  1436. function SetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
  1437. function SetSPCaps(const pguidSP: TGUID; const pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
  1438. function GetSPCaps(const pguidSP: TGUID; var pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
  1439. function GetConnectionInfo(var pdpConnectionInfo: TDPNConnectionInfo; dwFlags: DWORD): HResult; stdcall;
  1440. function RegisterLobby(dpnHandle: TDPNHandle; pIDP8LobbiedApplication: IDirectPlay8LobbiedApplication; dwFlags: DWORD): HResult; stdcall;
  1441. end;
  1442. //
  1443. // COM definition for DirectPlay8 Server interface
  1444. //
  1445. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8Server);'}
  1446. {$EXTERNALSYM IDirectPlay8Server}
  1447. IDirectPlay8Server = interface(IUnknown)
  1448. ['{5102dace-241b-11d3-aea7-006097b01411}']
  1449. (*** IDirectPlay8Server methods ***)
  1450. function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
  1451. function EnumServiceProviders(pguidServiceProvider, pguidApplication: PGUID;
  1452. pSPInfoBuffer: PDPNServiceProviderInfo; out pcbEnumData, pcReturned: DWORD;
  1453. dwFlags: DWORD): HResult; stdcall;
  1454. function CancelAsyncOperation(hAsyncHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1455. function GetSendQueueInfo(dpnid: TDPNID; pdwNumMsgs, pdwNumBytes: PDWORD; dwFlags: DWORD): HResult; stdcall;
  1456. function GetApplicationDesc(pAppDescBuffer: PDPNApplicationDesc; var pcbDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
  1457. function GetServerInfo(pdpnPlayerInfo: PDPNPlayerInfo; pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1458. function GetClientInfo(dpnid: TDPNID; pdpnPlayerInfo: PDPNPlayerInfo; pdwSize: PDWORD; dwFlags: DWORD): HResult; stdcall;
  1459. function GetClientAddress(dpnid: TDPNID; out pAddress: IDirectPlay8Address; dwFlags: DWORD): HResult; stdcall;
  1460. function GetLocalHostAddresses(out prgpAddress: IDirectPlay8Address; var pcAddress: DWORD; dwFlags: DWORD): HResult; stdcall;
  1461. function SetApplicationDesc(const pad: TDPNApplicationDesc; dwFlags: DWORD): HResult; stdcall;
  1462. function Host(const pdnAppDesc: TDPNApplicationDesc; prgpDeviceInfo: PIDirectPlay8Address;
  1463. cDeviceInfo: DWORD; pdnSecurity: PDPNSecurityDesc; pdnCredentials: PDPNSecurityCredentials;
  1464. pvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
  1465. function SendTo(dpnid: TDPNID; const prgBufferDesc: TDPNBufferDesc; cBufferDesc, dwTimeOut: DWORD;
  1466. pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1467. function CreateGroup(const pdpnGroupInfo: TDPNGroupInfo; pvGroupContext, pvAsyncContext: Pointer;
  1468. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1469. function DestroyGroup(idGroup: TDPNID; pvAsyncContext: Pointer;
  1470. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1471. function AddPlayerToGroup(idGroup, idClient: TDPNID; pvAsyncContext: Pointer;
  1472. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1473. function RemovePlayerFromGroup(idGroup, idClient: TDPNID; pvAsyncContext: Pointer;
  1474. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1475. function SetGroupInfo(dpnid: TDPNID; const pdpnGroupInfo: TDPNGroupInfo; pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1476. function GetGroupInfo(dpnid: TDPNID; pdpnGroupInfo: PDPNGroupInfo; pdwSize: PDWORD; dwFlags: DWORD): HResult; stdcall; //todo: Changed
  1477. function EnumPlayersAndGroups(prgdpnid: PDPNID; var pcdpnid: DWORD; dwFlags: DWORD): HResult; stdcall;
  1478. function EnumGroupMembers(dpnid: TDPNID; prgdpnid: PDPNID; var pcdpnid: DWORD; dwFlags: DWORD): HResult; stdcall;
  1479. function Close(dwFlags: DWORD): HResult; stdcall;
  1480. function DestroyClient(dpnidClient: TDPNID; pvDestroyData: Pointer; dwDestroyDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
  1481. function ReturnBuffer(hBufferHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1482. function GetPlayerContext(dpnid: TDPNID; out ppvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
  1483. function GetGroupContext(dpnid: TDPNID; out ppvGroupContext: Pointer; dwFlags: DWORD): HResult; stdcall;
  1484. function GetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
  1485. function SetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
  1486. function SetSPCaps(const pguidSP: TGUID; const pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
  1487. function GetSPCaps(const pguidSP: TGUID; var pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
  1488. function GetConnectionInfo(dpnid: TDPNID; var pdpConnectionInfo: TDPNConnectionInfo; dwFlags: DWORD): HResult; stdcall;
  1489. function RegisterLobby(dpnHandle: TDPNHandle; pIDP8LobbiedApplication: IDirectPlay8LobbiedApplication; dwFlags: DWORD): HResult; stdcall;
  1490. end;
  1491. //
  1492. // COM definition for DirectPlay8 Peer interface
  1493. //
  1494. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8Peer);'}
  1495. {$EXTERNALSYM IDirectPlay8Peer}
  1496. IDirectPlay8Peer = interface(IUnknown)
  1497. ['{5102dacf-241b-11d3-aea7-006097b01411}']
  1498. (*** IDirectPlay8Peer methods ***)
  1499. function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
  1500. function EnumServiceProviders(pguidServiceProvider, pguidApplication: PGUID;
  1501. pSPInfoBuffer: PDPNServiceProviderInfo; out pcbEnumData, pcReturned: DWORD;
  1502. dwFlags: DWORD): HResult; stdcall;
  1503. function CancelAsyncOperation(hAsyncHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1504. function Connect(const pdnAppDesc: TDPNApplicationDesc;
  1505. pHostAddr: IDirectPlay8Address; pDeviceInfo: IDirectPlay8Address;
  1506. pdnSecurity: PDPNSecurityDesc; pdnCredentials: PDPNSecurityCredentials;
  1507. pvUserConnectData: Pointer; dwUserConnectDataSize: DWORD;
  1508. pvPlayerContext, pvAsyncContext: Pointer;
  1509. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1510. function SendTo(dpnid: TDPNID; const prgBufferDesc: TDPNBufferDesc; cBufferDesc, dwTimeOut: DWORD;
  1511. pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1512. function GetSendQueueInfo(dpnid: TDPNID; pdwNumMsgs, pdwNumBytes: PDWORD; dwFlags: DWORD): HResult; stdcall;
  1513. function Host(const pdnAppDesc: TDPNApplicationDesc; prgpDeviceInfo: PIDirectPlay8Address;
  1514. cDeviceInfo: DWORD; pdnSecurity: PDPNSecurityDesc; pdnCredentials: PDPNSecurityCredentials;
  1515. pvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
  1516. function GetApplicationDesc(pAppDescBuffer: PDPNApplicationDesc; var pcbDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
  1517. function SetApplicationDesc(const pad: TDPNApplicationDesc; dwFlags: DWORD): HResult; stdcall;
  1518. function CreateGroup(const pdpnGroupInfo: TDPNGroupInfo; pvGroupContext, pvAsyncContext: Pointer;
  1519. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1520. function DestroyGroup(idGroup: TDPNID; pvAsyncContext: Pointer;
  1521. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1522. function AddPlayerToGroup(idGroup, idClient: TDPNID; pvAsyncContext: Pointer;
  1523. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1524. function RemovePlayerFromGroup(idGroup, idClient: TDPNID; pvAsyncContext: Pointer;
  1525. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1526. function SetGroupInfo(dpnid: TDPNID; const pdpnGroupInfo: TDPNGroupInfo; pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1527. function GetGroupInfo(dpnid: TDPNID; pdpnGroupInfo: PDPNGroupInfo; pdwSize: PDWORD; dwFlags: DWORD): HResult; stdcall; //todo: Changed
  1528. function EnumPlayersAndGroups(prgdpnid: PDPNID; var pcdpnid: DWORD; dwFlags: DWORD): HResult; stdcall;
  1529. function EnumGroupMembers(dpnid: TDPNID; prgdpnid: PDPNID; var pcdpnid: DWORD; dwFlags: DWORD): HResult; stdcall;
  1530. function SetPeerInfo(const pdpnPlayerInfo: TDPNPlayerInfo; pvAsyncContext: Pointer;
  1531. phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1532. function GetPeerInfo(dpnid: TDPNID; var pdpnPlayerInfo: TDPNPlayerInfo; pdwSize: PDWORD; dwFlags: DWORD): HResult; stdcall; //todo: Changed
  1533. function GetPeerAddress(dpnid: TDPNID; out pAddress: IDirectPlay8Address; dwFlags: DWORD): HResult; stdcall;
  1534. function GetLocalHostAddresses(prgpAddress: PIDirectPlay8Address; var pcAddress: DWORD; dwFlags: DWORD): HResult; stdcall;
  1535. function Close(dwFlags: DWORD): HResult; stdcall;
  1536. function EnumHosts(const pApplicationDesc: TDPNApplicationDesc;
  1537. pAddrHost, pDeviceInfo: IDirectPlay8Address; pUserEnumData: Pointer;
  1538. dwUserEnumDataSize, dwEnumCount, dwRetryInterval, dwTimeOut: DWORD;
  1539. pvUserContext: Pointer; pAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1540. function DestroyPeer(dpnidClient: TDPNID; pvDestroyData: Pointer; dwDestroyDataSize, dwFlags: DWORD): HResult; stdcall;
  1541. function ReturnBuffer(hBufferHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1542. function GetPlayerContext(dpnid: TDPNID; out ppvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
  1543. function GetGroupContext(dpnid: TDPNID; out ppvGroupContext: Pointer; dwFlags: DWORD): HResult; stdcall;
  1544. function GetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
  1545. function SetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
  1546. function SetSPCaps(const pguidSP: TGUID; const pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
  1547. function GetSPCaps(const pguidSP: TGUID; var pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
  1548. function GetConnectionInfo(dpnid: TDPNID; var pdpConnectionInfo: TDPNConnectionInfo; dwFlags: DWORD): HResult; stdcall;
  1549. function RegisterLobby(dpnHandle: TDPNHandle; pIDP8LobbiedApplication: IDirectPlay8LobbiedApplication; dwFlags: DWORD): HResult; stdcall;
  1550. function TerminateSession(pvTerminateData: Pointer; dwTerminateDataSize, dwFlags: DWORD): HResult; stdcall;
  1551. end;
  1552. //
  1553. // COM definition for DirectPlay8 Thread Pool interface
  1554. //
  1555. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8ThreadPool);'}
  1556. {$EXTERNALSYM IDirectPlay8ThreadPool}
  1557. IDirectPlay8ThreadPool = interface(IUnknown)
  1558. ['{0d22ee73-4a46-4a0d-89b2-045b4d666425}']
  1559. (*** IDirectPlay8ThreadPool methods ***)
  1560. function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
  1561. function Close(dwFlags: DWORD): HResult; stdcall;
  1562. function GetThreadCount(dwProcessorNum: DWORD; out pdwNumThreads: DWORD; dwFlags: DWORD): HResult; stdcall;
  1563. function SetThreadCount(dwProcessorNum: DWORD; dwNumThreads: DWORD; dwFlags: DWORD): HResult; stdcall;
  1564. function DoWork(dwAllowedTimeSlice: DWORD; dwFlags: DWORD): HResult; stdcall;
  1565. end;
  1566. //
  1567. // COM definition for DirectPlay8 NAT Resolver interface
  1568. //
  1569. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8NATResolver);'}
  1570. {$EXTERNALSYM IDirectPlay8NATResolver}
  1571. IDirectPlay8NATResolver = interface(IUnknown)
  1572. ['{a9e213f2-9a60-486f-bf3b-53408b6d1cbb}']
  1573. (*** IDirectPlay8NATResolver methods ***)
  1574. function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
  1575. function Start(ppDevices: PIDirectPlay8Address; dwNumDevices: DWORD; dwFlags: DWORD): HResult; stdcall;
  1576. function Close(dwFlags: DWORD): HResult; stdcall;
  1577. function EnumDevices(pSPInfoBuffer: PDPNServiceProviderInfo; var pdwBufferSize: DWORD; out pdwNumDevices: DWORD; dwFlags: DWORD): HResult; stdcall;
  1578. function GetAddresses(ppAddresses: PIDirectPlay8Address; out pdwNumAddresses: DWORD; dwFlags: DWORD): HResult; stdcall;
  1579. end;
  1580. (****************************************************************************
  1581. *
  1582. * DirectPlay8 Interface IIDs
  1583. *
  1584. ****************************************************************************)
  1585. // {5102DACD-241B-11d3-AEA7-006097B01411}
  1586. IID_IDirectPlay8Client = IDirectPlay8Client;
  1587. {$EXTERNALSYM IID_IDirectPlay8Client}
  1588. // {5102DACE-241B-11d3-AEA7-006097B01411}
  1589. IID_IDirectPlay8Server = IDirectPlay8Server;
  1590. {$EXTERNALSYM IID_IDirectPlay8Server}
  1591. // {5102DACF-241B-11d3-AEA7-006097B01411}
  1592. IID_IDirectPlay8Peer = IDirectPlay8Peer;
  1593. {$EXTERNALSYM IID_IDirectPlay8Peer}
  1594. // IIDs added for DirectX 9
  1595. // {0D22EE73-4A46-4a0d-89B2-045B4D666425}
  1596. IID_IDirectPlay8ThreadPool = IDirectPlay8ThreadPool;
  1597. {$EXTERNALSYM IID_IDirectPlay8ThreadPool}
  1598. // {A9E213F2-9A60-486f-BF3B-53408B6D1CBB}
  1599. IID_IDirectPlay8NATResolver = IDirectPlay8NATResolver;
  1600. {$EXTERNALSYM IID_IDirectPlay8NATResolver}
  1601. (*==========================================================================
  1602. *
  1603. * Copyright (C) 2000 Microsoft Corporation. All Rights Reserved.
  1604. *
  1605. * File: DPLobby.h
  1606. * Content: DirectPlay8 Lobby Include File
  1607. *
  1608. ***************************************************************************)
  1609. (****************************************************************************
  1610. *
  1611. * DirectPlay8Lobby Structures (Non-Message)
  1612. *
  1613. ****************************************************************************)
  1614. //
  1615. // Information on a registered game
  1616. //
  1617. PDPLApplicationInfo = ^TDPLApplicationInfo;
  1618. _DPL_APPLICATION_INFO = packed record
  1619. guidApplication: TGUID; // GUID of the application
  1620. pwszApplicationName: PWideChar; // Name of the application
  1621. dwNumRunning: DWORD; // # of instances of this application running
  1622. dwNumWaiting: DWORD; // # of instances of this application waiting
  1623. dwFlags: DWORD; // Flags
  1624. end;
  1625. {$EXTERNALSYM _DPL_APPLICATION_INFO}
  1626. DPL_APPLICATION_INFO = _DPL_APPLICATION_INFO;
  1627. {$EXTERNALSYM DPL_APPLICATION_INFO}
  1628. TDPLApplicationInfo = _DPL_APPLICATION_INFO;
  1629. //
  1630. // Settings to be used for connecting / hosting a game session
  1631. //
  1632. PDPLConnectionSettings = ^TDPLConnectionSettings;
  1633. _DPL_CONNECTION_SETTINGS = packed record
  1634. dwSize: DWORD; // Size of this structure
  1635. dwFlags: DWORD; // Connection settings flags (DPLCONNECTSETTINGS_...)
  1636. dpnAppDesc: TDPNApplicationDesc; // Application desc for the associated DirectPlay session
  1637. pdp8HostAddress: IDirectPlay8Address; // Address of host to connect to
  1638. ppdp8DeviceAddresses: IDirectPlay8Address; // Address of device to connect from / host on
  1639. cNumDeviceAddresses: DWORD; // # of addresses specified in ppdp8DeviceAddresses
  1640. pwszPlayerName: PWideChar; // Name to give the player
  1641. end;
  1642. {$EXTERNALSYM _DPL_CONNECTION_SETTINGS}
  1643. DPL_CONNECTION_SETTINGS = _DPL_CONNECTION_SETTINGS;
  1644. {$EXTERNALSYM DPL_CONNECTION_SETTINGS}
  1645. TDPLConnectionSettings = _DPL_CONNECTION_SETTINGS;
  1646. //
  1647. // Information for performing a lobby connect
  1648. // (ConnectApplication)
  1649. //
  1650. PDPLConnectInfo = ^TDPLConnectInfo;
  1651. _DPL_CONNECT_INFO = packed record
  1652. dwSize: DWORD; // Size of this structure
  1653. dwFlags: DWORD; // Flags (DPLCONNECT_...)
  1654. guidApplication: TGUID; // GUID of application to launch
  1655. pdplConnectionSettings: PDPLConnectionSettings; // Settings application should use
  1656. pvLobbyConnectData: Pointer; // User defined data block
  1657. dwLobbyConnectDataSize: DWORD; // Size of user defined data block
  1658. end;
  1659. {$EXTERNALSYM _DPL_CONNECT_INFO}
  1660. DPL_CONNECT_INFO = _DPL_CONNECT_INFO;
  1661. {$EXTERNALSYM DPL_CONNECT_INFO}
  1662. TDPLConnectInfo = _DPL_CONNECT_INFO;
  1663. //
  1664. // Information for registering an application
  1665. // (RegisterApplication)
  1666. //
  1667. PDPLProgramDesc = ^TDPLProgramDesc;
  1668. _DPL_PROGRAM_DESC = packed record
  1669. dwSize: DWORD;
  1670. dwFlags: DWORD;
  1671. guidApplication: TGUID; // Application GUID
  1672. pwszApplicationName: PWideChar; // Unicode application name
  1673. pwszCommandLine: PWideChar; // Unicode command line arguments
  1674. pwszCurrentDirectory: PWideChar; // Unicode current directory
  1675. pwszDescription: PWideChar; // Unicode application description
  1676. pwszExecutableFilename: PWideChar; // Unicode filename of application executable
  1677. pwszExecutablePath: PWideChar; // Unicode path of application executable
  1678. pwszLauncherFilename: PWideChar; // Unicode filename of launcher executable
  1679. pwszLauncherPath: PWideChar; // Unicode path of launcher executable
  1680. end;
  1681. {$EXTERNALSYM _DPL_PROGRAM_DESC}
  1682. DPL_PROGRAM_DESC = _DPL_PROGRAM_DESC;
  1683. {$EXTERNALSYM DPL_PROGRAM_DESC}
  1684. TDPLProgramDesc = _DPL_PROGRAM_DESC;
  1685. (****************************************************************************
  1686. *
  1687. * DirectPlay8 Lobby Message Structures
  1688. *
  1689. ****************************************************************************)
  1690. //
  1691. // A connection was established
  1692. // (DPL_MSGID_CONNECT)
  1693. //
  1694. PDPLMessageConnect = ^TDPLMessageConnect;
  1695. _DPL_MESSAGE_CONNECT = packed record
  1696. dwSize: DWORD; // Size of this structure
  1697. hConnectId: TDPNHandle; // Handle of new connection
  1698. pdplConnectionSettings: PDPLConnectionSettings; // Connection settings for this connection
  1699. pvLobbyConnectData: Pointer; // User defined lobby data block
  1700. dwLobbyConnectDataSize: DWORD; // Size of user defined lobby data block
  1701. pvConnectionContext: Pointer; // Context value for this connection (user set)
  1702. end;
  1703. {$EXTERNALSYM _DPL_MESSAGE_CONNECT}
  1704. DPL_MESSAGE_CONNECT = _DPL_MESSAGE_CONNECT;
  1705. {$EXTERNALSYM DPL_MESSAGE_CONNECT}
  1706. TDPLMessageConnect = _DPL_MESSAGE_CONNECT;
  1707. //
  1708. // Connection settings have been updated
  1709. // (DPL_MSGID_CONNECTION_SETTINGS)
  1710. //
  1711. PDPLMessageConnectionSettings = ^TDPLMessageConnectionSettings;
  1712. _DPL_MESSAGE_CONNECTION_SETTINGS = packed record
  1713. dwSize: DWORD; // Size of this structure
  1714. hSender: TDPNHandle; // Handle of the connection for these settings
  1715. pdplConnectionSettings: PDPLConnectionSettings; // Connection settings
  1716. pvConnectionContext: Pointer; // Context value for this connection
  1717. end;
  1718. {$EXTERNALSYM _DPL_MESSAGE_CONNECTION_SETTINGS}
  1719. DPL_MESSAGE_CONNECTION_SETTINGS = _DPL_MESSAGE_CONNECTION_SETTINGS;
  1720. {$EXTERNALSYM DPL_MESSAGE_CONNECTION_SETTINGS}
  1721. TDPLMessageConnectionSettings = _DPL_MESSAGE_CONNECTION_SETTINGS;
  1722. //
  1723. // A connection has been disconnected
  1724. // (DPL_MSGID_DISCONNECT)
  1725. //
  1726. PDPLMessageDisconnect = ^TDPLMessageDisconnect;
  1727. _DPL_MESSAGE_DISCONNECT = packed record
  1728. dwSize: DWORD; // Size of this structure
  1729. hDisconnectId: TDPNHandle; // Handle of the connection that was terminated
  1730. hrReason: HRESULT; // Reason the connection was broken
  1731. pvConnectionContext: Pointer; // Context value for this connection
  1732. end;
  1733. {$EXTERNALSYM _DPL_MESSAGE_DISCONNECT}
  1734. DPL_MESSAGE_DISCONNECT = _DPL_MESSAGE_DISCONNECT;
  1735. {$EXTERNALSYM DPL_MESSAGE_DISCONNECT}
  1736. TDPLMessageDisconnect = _DPL_MESSAGE_DISCONNECT;
  1737. //
  1738. // Data was received through a connection
  1739. // (DPL_MSGID_RECEIVE)
  1740. //
  1741. PDPLMessageReceive = ^TDPLMessageReceive;
  1742. _DPL_MESSAGE_RECEIVE = packed record
  1743. dwSize: DWORD; // Size of this structure
  1744. hSender: TDPNHandle; // Handle of the connection that is from
  1745. pBuffer: PByte; // Contents of the message
  1746. dwBufferSize: DWORD; // Size of the message context
  1747. pvConnectionContext: Pointer; // Context value for this connection
  1748. end;
  1749. {$EXTERNALSYM _DPL_MESSAGE_RECEIVE}
  1750. DPL_MESSAGE_RECEIVE = _DPL_MESSAGE_RECEIVE;
  1751. {$EXTERNALSYM DPL_MESSAGE_RECEIVE}
  1752. TDPLMessageReceive = _DPL_MESSAGE_RECEIVE;
  1753. //
  1754. // Current status of the associated connection
  1755. // (DPL_MSGID_SESSION_STATUS)
  1756. //
  1757. PDPLMessageSessionStatus = ^TDPLMessageSessionStatus;
  1758. _DPL_MESSAGE_SESSION_STATUS = packed record
  1759. dwSize: DWORD; // Size of this structure
  1760. hSender: TDPNHandle; // Handle of the connection that this is from
  1761. dwStatus: DWORD; // Status (DPLSESSION_...)
  1762. pvConnectionContext: Pointer; // Context value for this connection
  1763. end;
  1764. {$EXTERNALSYM _DPL_MESSAGE_SESSION_STATUS}
  1765. DPL_MESSAGE_SESSION_STATUS = _DPL_MESSAGE_SESSION_STATUS;
  1766. {$EXTERNALSYM DPL_MESSAGE_SESSION_STATUS}
  1767. TDPLMessageSessionStatus = _DPL_MESSAGE_SESSION_STATUS;
  1768. (****************************************************************************
  1769. *
  1770. * DirectPlay8Lobby Create
  1771. *
  1772. ****************************************************************************)
  1773. (*
  1774. * This function is no longer supported. It is recommended that CoCreateInstance be used to create
  1775. * DirectPlay8 lobby objects.
  1776. *
  1777. * extern HRESULT WINAPI DirectPlay8LobbyCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown);
  1778. *
  1779. *)
  1780. (****************************************************************************
  1781. *
  1782. * DirectPlay8 Functions
  1783. *
  1784. ****************************************************************************)
  1785. //
  1786. // COM definition for DirectPlayLobbyClient
  1787. //
  1788. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8LobbyClient);'}
  1789. {$EXTERNALSYM IDirectPlay8LobbyClient}
  1790. IDirectPlay8LobbyClient = interface(IUnknown)
  1791. ['{819074a2-016c-11d3-ae14-006097b01411}']
  1792. // IDirectPlayLobbyClient methods
  1793. function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
  1794. function EnumLocalPrograms(pGuidApplication: PGUID; pEnumData: PByte; var pdwEnumData: DWORD; out pdwItems: DWORD; dwFlags: DWORD): HResult; stdcall;
  1795. function ConnectApplication(const pdplConnectionInfo: PDPLConnectInfo;
  1796. pvConnectionContext: Pointer; hApplication: PDPNHandle; dwTimeOut, dwFlags: DWORD): HResult; stdcall;
  1797. function Send(hConnection: TDPNHandle; pBuffer: PByte; pBufferSize, dwFlags: DWORD): HResult; stdcall;
  1798. function ReleaseApplication(hConnection: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1799. function Close(dwFlags: DWORD): HResult; stdcall;
  1800. function GetConnectionSettings(hConnection: TDPNHandle; pdplSessionInfo: PDPLConnectionSettings; var pdwInfoSize: DWORD; dwFlags: DWORD): HResult; stdcall;
  1801. function SetConnectionSettings(hConnection: TDPNHandle; const pdplSessionInfo: TDPLConnectionSettings; dwFlags: DWORD): HResult; stdcall;
  1802. end;
  1803. //
  1804. // COM definition for DirectPlayLobbiedApplication
  1805. //
  1806. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8LobbiedApplication);'}
  1807. {$EXTERNALSYM IDirectPlay8LobbiedApplication}
  1808. IDirectPlay8LobbiedApplication = interface(IUnknown)
  1809. ['{819074a3-016c-11d3-ae14-006097b01411}']
  1810. // IDirectPlayLobbiedApplication methods
  1811. function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; pdpnhConnection: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
  1812. function RegisterProgram(const pdplProgramDesc: TDPLProgramDesc; dwFlags: DWORD): HResult; stdcall;
  1813. function UnRegisterProgram(const pguidApplication: TGUID; dwFlags: DWORD): HResult; stdcall;
  1814. function Send(hConnection: TDPNHandle; pBuffer: PByte; pBufferSize: DWORD; dwFlags: DWORD): HResult; stdcall;
  1815. function SetAppAvailable(fAvailable: BOOL; dwFlags: DWORD): HResult; stdcall;
  1816. function UpdateStatus(hConnection: TDPNHandle; dwStatus, dwFlags: DWORD): HResult; stdcall;
  1817. function Close(dwFlags: DWORD): HResult; stdcall;
  1818. function GetConnectionSettings(hConnection: TDPNHandle; pdplSessionInfo: PDPLConnectionSettings; var pdwInfoSize: DWORD; dwFlags: DWORD): HResult; stdcall;
  1819. function SetConnectionSettings(hConnection: TDPNHandle; const pdplSessionInfo: TDPLConnectionSettings; dwFlags: DWORD): HResult; stdcall;
  1820. end;
  1821. const
  1822. (****************************************************************************
  1823. *
  1824. * DirectPlay8Lobby CLSIDs
  1825. *
  1826. ****************************************************************************)
  1827. // {667955AD-6B3B-43ca-B949-BC69B5BAFF7F}
  1828. CLSID_DirectPlay8LobbiedApplication: TGUID = '{667955ad-6b3b-43ca-b949-bc69b5baff7f}';
  1829. {$EXTERNALSYM CLSID_DirectPlay8LobbiedApplication}
  1830. // {3B2B6775-70B6-45af-8DEA-A209C69559F3}
  1831. CLSID_DirectPlay8LobbyClient: TGUID = '{3b2b6775-70b6-45af-8dea-a209c69559f3}';
  1832. {$EXTERNALSYM CLSID_DirectPlay8LobbyClient}
  1833. (****************************************************************************
  1834. *
  1835. * DirectPlay8Lobby Interface IIDs
  1836. *
  1837. ****************************************************************************)
  1838. // {819074A3-016C-11d3-AE14-006097B01411}
  1839. IID_IDirectPlay8LobbiedApplication = IDirectPlay8LobbiedApplication;
  1840. {$EXTERNALSYM IID_IDirectPlay8LobbiedApplication}
  1841. // {819074A2-016C-11d3-AE14-006097B01411}
  1842. IID_IDirectPlay8LobbyClient = IDirectPlay8LobbyClient;
  1843. {$EXTERNALSYM IID_IDirectPlay8LobbyClient}
  1844. (****************************************************************************
  1845. *
  1846. * DirectPlay8 Lobby Message IDs
  1847. *
  1848. ****************************************************************************)
  1849. DPL_MSGID_LOBBY = $8000;
  1850. {$EXTERNALSYM DPL_MSGID_LOBBY}
  1851. DPL_MSGID_RECEIVE = ($0001 or DPL_MSGID_LOBBY);
  1852. {$EXTERNALSYM DPL_MSGID_RECEIVE}
  1853. DPL_MSGID_CONNECT = ($0002 or DPL_MSGID_LOBBY);
  1854. {$EXTERNALSYM DPL_MSGID_CONNECT}
  1855. DPL_MSGID_DISCONNECT = ($0003 or DPL_MSGID_LOBBY);
  1856. {$EXTERNALSYM DPL_MSGID_DISCONNECT}
  1857. DPL_MSGID_SESSION_STATUS = ($0004 or DPL_MSGID_LOBBY);
  1858. {$EXTERNALSYM DPL_MSGID_SESSION_STATUS}
  1859. DPL_MSGID_CONNECTION_SETTINGS = ($0005 or DPL_MSGID_LOBBY);
  1860. {$EXTERNALSYM DPL_MSGID_CONNECTION_SETTINGS}
  1861. (****************************************************************************
  1862. *
  1863. * DirectPlay8Lobby Constants
  1864. *
  1865. ****************************************************************************)
  1866. //
  1867. // Specifies that operation should be performed on all open connections
  1868. //
  1869. DPLHANDLE_ALLCONNECTIONS = $FFFFFFFF;
  1870. {$EXTERNALSYM DPLHANDLE_ALLCONNECTIONS}
  1871. //
  1872. // The associated game session has suceeded in connecting / hosting
  1873. //
  1874. DPLSESSION_CONNECTED = $0001;
  1875. {$EXTERNALSYM DPLSESSION_CONNECTED}
  1876. // The associated game session failed connecting / hosting
  1877. //
  1878. DPLSESSION_COULDNOTCONNECT = $0002;
  1879. {$EXTERNALSYM DPLSESSION_COULDNOTCONNECT}
  1880. //
  1881. // The associated game session has disconnected
  1882. //
  1883. DPLSESSION_DISCONNECTED = $0003;
  1884. {$EXTERNALSYM DPLSESSION_DISCONNECTED}
  1885. //
  1886. // The associated game session has terminated
  1887. //
  1888. DPLSESSION_TERMINATED = $0004;
  1889. {$EXTERNALSYM DPLSESSION_TERMINATED}
  1890. //
  1891. // The associated game session's host has migrated
  1892. //
  1893. DPLSESSION_HOSTMIGRATED = $0005;
  1894. {$EXTERNALSYM DPLSESSION_HOSTMIGRATED}
  1895. //
  1896. // The associated game session's host has migrated to the local client
  1897. //
  1898. DPLSESSION_HOSTMIGRATEDHERE = $0006;
  1899. {$EXTERNALSYM DPLSESSION_HOSTMIGRATEDHERE}
  1900. (****************************************************************************
  1901. *
  1902. * DirectPlay8 Lobby Flags
  1903. *
  1904. ****************************************************************************)
  1905. //
  1906. // Do not automatically make the lobby app unavailable when a connection is established
  1907. //
  1908. DPLAVAILABLE_ALLOWMULTIPLECONNECT = $0001;
  1909. {$EXTERNALSYM DPLAVAILABLE_ALLOWMULTIPLECONNECT}
  1910. //
  1911. // Launch a new instance of the application to connect to
  1912. //
  1913. DPLCONNECT_LAUNCHNEW = $0001;
  1914. {$EXTERNALSYM DPLCONNECT_LAUNCHNEW}
  1915. //
  1916. // Launch a new instance of the application if one is not waiting
  1917. //
  1918. DPLCONNECT_LAUNCHNOTFOUND = $0002;
  1919. {$EXTERNALSYM DPLCONNECT_LAUNCHNOTFOUND}
  1920. //
  1921. // When starting the associated game session, start it as a host
  1922. //
  1923. DPLCONNECTSETTINGS_HOST = $0001;
  1924. {$EXTERNALSYM DPLCONNECTSETTINGS_HOST}
  1925. //
  1926. // Disable parameter validation
  1927. //
  1928. DPLINITIALIZE_DISABLEPARAMVAL = $0001;
  1929. {$EXTERNALSYM DPLINITIALIZE_DISABLEPARAMVAL}
  1930. ///// Part 2 of dplay8.h /////
  1931. (*==========================================================================;
  1932. *
  1933. * Copyright (C) 1998-2000 Microsoft Corporation. All Rights Reserved.
  1934. *
  1935. * File: DPlay8.h
  1936. * Content: DirectPlay8 include file
  1937. *
  1938. ***************************************************************************)
  1939. (****************************************************************************
  1940. *
  1941. * DIRECTPLAY8 ERRORS
  1942. *
  1943. * Errors are represented by negative values and cannot be combined.
  1944. *
  1945. ****************************************************************************)
  1946. const
  1947. _DPN_FACILITY_CODE = $015;
  1948. {$EXTERNALSYM _DPN_FACILITY_CODE}
  1949. _DPNHRESULT_BASE = $8000;
  1950. {$EXTERNALSYM _DPNHRESULT_BASE}
  1951. MAKE_DPNHRESULT_R = (1 shl 31) or (_DPN_FACILITY_CODE shl 16) + _DPNHRESULT_BASE;
  1952. // #define MAKE_DPNHRESULT( code ) MAKE_HRESULT( 1, _DPN_FACILITY_CODE, ( code + _DPNHRESULT_BASE ) )
  1953. function MAKE_DPNHRESULT(Code: DWORD): DWORD;
  1954. {$EXTERNALSYM MAKE_DPNHRESULT}
  1955. const
  1956. DPN_OK = S_OK;
  1957. {$EXTERNALSYM DPN_OK}
  1958. DPNSUCCESS_EQUAL = HRESULT((0 shl 31) or (_DPN_FACILITY_CODE shl 16) or ($5 + _DPNHRESULT_BASE)); // MAKE_HRESULT( 0, _DPN_FACILITY_CODE, ( 0x5 + _DPNHRESULT_BASE ) )
  1959. {$EXTERNALSYM DPNSUCCESS_EQUAL}
  1960. DPNSUCCESS_NOPLAYERSINGROUP = HRESULT((0 shl 31) or (_DPN_FACILITY_CODE shl 16) or ($8 + _DPNHRESULT_BASE)); // MAKE_HRESULT( 0, _DPN_FACILITY_CODE, ( 0x8 + _DPNHRESULT_BASE ) ) // added for DirectX 9
  1961. {$EXTERNALSYM DPNSUCCESS_NOPLAYERSINGROUP}
  1962. DPNSUCCESS_NOTEQUAL = HRESULT((0 shl 31) or (_DPN_FACILITY_CODE shl 16) or ($A + _DPNHRESULT_BASE)); // MAKE_HRESULT( 0, _DPN_FACILITY_CODE, (0x0A + _DPNHRESULT_BASE ) )
  1963. {$EXTERNALSYM DPNSUCCESS_NOTEQUAL}
  1964. DPNSUCCESS_PENDING = HRESULT((0 shl 31) or (_DPN_FACILITY_CODE shl 16) or ($e + _DPNHRESULT_BASE)); // MAKE_HRESULT( 0, _DPN_FACILITY_CODE, (0x0e + _DPNHRESULT_BASE ) )
  1965. {$EXTERNALSYM DPNSUCCESS_PENDING}
  1966. DPNERR_ABORTED = HRESULT(MAKE_DPNHRESULT_R + $30); // MAKE_DPNHRESULT( 0x30 )
  1967. {$EXTERNALSYM DPNERR_ABORTED}
  1968. DPNERR_ADDRESSING = HRESULT(MAKE_DPNHRESULT_R + $40); // MAKE_DPNHRESULT( 0x40 )
  1969. {$EXTERNALSYM DPNERR_ADDRESSING}
  1970. DPNERR_ALREADYCLOSING = HRESULT(MAKE_DPNHRESULT_R + $50); // MAKE_DPNHRESULT( 0x50 )
  1971. {$EXTERNALSYM DPNERR_ALREADYCLOSING}
  1972. DPNERR_ALREADYCONNECTED = HRESULT(MAKE_DPNHRESULT_R + $60); // MAKE_DPNHRESULT( 0x60 )
  1973. {$EXTERNALSYM DPNERR_ALREADYCONNECTED}
  1974. DPNERR_ALREADYDISCONNECTING = HRESULT(MAKE_DPNHRESULT_R + $70); // MAKE_DPNHRESULT( 0x70 )
  1975. {$EXTERNALSYM DPNERR_ALREADYDISCONNECTING}
  1976. DPNERR_ALREADYINITIALIZED = HRESULT(MAKE_DPNHRESULT_R + $80); // MAKE_DPNHRESULT( 0x80 )
  1977. {$EXTERNALSYM DPNERR_ALREADYINITIALIZED}
  1978. DPNERR_ALREADYREGISTERED = HRESULT(MAKE_DPNHRESULT_R + $90); // MAKE_DPNHRESULT( 0x90 )
  1979. {$EXTERNALSYM DPNERR_ALREADYREGISTERED}
  1980. DPNERR_BUFFERTOOSMALL = HRESULT(MAKE_DPNHRESULT_R + $100); // MAKE_DPNHRESULT( 0x100 )
  1981. {$EXTERNALSYM DPNERR_BUFFERTOOSMALL}
  1982. DPNERR_CANNOTCANCEL = HRESULT(MAKE_DPNHRESULT_R + $110); // MAKE_DPNHRESULT( 0x110 )
  1983. {$EXTERNALSYM DPNERR_CANNOTCANCEL}
  1984. DPNERR_CANTCREATEGROUP = HRESULT(MAKE_DPNHRESULT_R + $120); // MAKE_DPNHRESULT( 0x120 )
  1985. {$EXTERNALSYM DPNERR_CANTCREATEGROUP}
  1986. DPNERR_CANTCREATEPLAYER = HRESULT(MAKE_DPNHRESULT_R + $130); // MAKE_DPNHRESULT( 0x130 )
  1987. {$EXTERNALSYM DPNERR_CANTCREATEPLAYER}
  1988. DPNERR_CANTLAUNCHAPPLICATION = HRESULT(MAKE_DPNHRESULT_R + $140); // MAKE_DPNHRESULT( 0x140 )
  1989. {$EXTERNALSYM DPNERR_CANTLAUNCHAPPLICATION}
  1990. DPNERR_CONNECTING = HRESULT(MAKE_DPNHRESULT_R + $150); // MAKE_DPNHRESULT( 0x150 )
  1991. {$EXTERNALSYM DPNERR_CONNECTING}
  1992. DPNERR_CONNECTIONLOST = HRESULT(MAKE_DPNHRESULT_R + $160); // MAKE_DPNHRESULT( 0x160 )
  1993. {$EXTERNALSYM DPNERR_CONNECTIONLOST}
  1994. DPNERR_CONVERSION = HRESULT(MAKE_DPNHRESULT_R + $170); // MAKE_DPNHRESULT( 0x170 )
  1995. {$EXTERNALSYM DPNERR_CONVERSION}
  1996. DPNERR_DATATOOLARGE = HRESULT(MAKE_DPNHRESULT_R + $175); // MAKE_DPNHRESULT( 0x175 )
  1997. {$EXTERNALSYM DPNERR_DATATOOLARGE}
  1998. DPNERR_DOESNOTEXIST = HRESULT(MAKE_DPNHRESULT_R + $180); // MAKE_DPNHRESULT( 0x180 )
  1999. {$EXTERNALSYM DPNERR_DOESNOTEXIST}
  2000. DPNERR_DPNSVRNOTAVAILABLE = HRESULT(MAKE_DPNHRESULT_R + $185); // MAKE_DPNHRESULT( 0x185 )
  2001. {$EXTERNALSYM DPNERR_DPNSVRNOTAVAILABLE}
  2002. DPNERR_DUPLICATECOMMAND = HRESULT(MAKE_DPNHRESULT_R + $190); // MAKE_DPNHRESULT( 0x190 )
  2003. {$EXTERNALSYM DPNERR_DUPLICATECOMMAND}
  2004. DPNERR_ENDPOINTNOTRECEIVING = HRESULT(MAKE_DPNHRESULT_R + $200); // MAKE_DPNHRESULT( 0x200 )
  2005. {$EXTERNALSYM DPNERR_ENDPOINTNOTRECEIVING}
  2006. DPNERR_ENUMQUERYTOOLARGE = HRESULT(MAKE_DPNHRESULT_R + $210); // MAKE_DPNHRESULT( 0x210 )
  2007. {$EXTERNALSYM DPNERR_ENUMQUERYTOOLARGE}
  2008. DPNERR_ENUMRESPONSETOOLARGE = HRESULT(MAKE_DPNHRESULT_R + $220); // MAKE_DPNHRESULT( 0x220 )
  2009. {$EXTERNALSYM DPNERR_ENUMRESPONSETOOLARGE}
  2010. DPNERR_EXCEPTION = HRESULT(MAKE_DPNHRESULT_R + $230); // MAKE_DPNHRESULT( 0x230 )
  2011. {$EXTERNALSYM DPNERR_EXCEPTION}
  2012. DPNERR_GENERIC = E_FAIL;
  2013. {$EXTERNALSYM DPNERR_GENERIC}
  2014. DPNERR_GROUPNOTEMPTY = HRESULT(MAKE_DPNHRESULT_R + $240); // MAKE_DPNHRESULT( 0x240 )
  2015. {$EXTERNALSYM DPNERR_GROUPNOTEMPTY}
  2016. DPNERR_HOSTING = HRESULT(MAKE_DPNHRESULT_R + $250); // MAKE_DPNHRESULT( 0x250 )
  2017. {$EXTERNALSYM DPNERR_HOSTING}
  2018. DPNERR_HOSTREJECTEDCONNECTION = HRESULT(MAKE_DPNHRESULT_R + $260); // MAKE_DPNHRESULT( 0x260 )
  2019. {$EXTERNALSYM DPNERR_HOSTREJECTEDCONNECTION}
  2020. DPNERR_HOSTTERMINATEDSESSION = HRESULT(MAKE_DPNHRESULT_R + $270); // MAKE_DPNHRESULT( 0x270 )
  2021. {$EXTERNALSYM DPNERR_HOSTTERMINATEDSESSION}
  2022. DPNERR_INCOMPLETEADDRESS = HRESULT(MAKE_DPNHRESULT_R + $280); // MAKE_DPNHRESULT( 0x280 )
  2023. {$EXTERNALSYM DPNERR_INCOMPLETEADDRESS}
  2024. DPNERR_INVALIDADDRESSFORMAT = HRESULT(MAKE_DPNHRESULT_R + $290); // MAKE_DPNHRESULT( 0x290 )
  2025. {$EXTERNALSYM DPNERR_INVALIDADDRESSFORMAT}
  2026. DPNERR_INVALIDAPPLICATION = HRESULT(MAKE_DPNHRESULT_R + $300); // MAKE_DPNHRESULT( 0x300 )
  2027. {$EXTERNALSYM DPNERR_INVALIDAPPLICATION}
  2028. DPNERR_INVALIDCOMMAND = HRESULT(MAKE_DPNHRESULT_R + $310); // MAKE_DPNHRESULT( 0x310 )
  2029. {$EXTERNALSYM DPNERR_INVALIDCOMMAND}
  2030. DPNERR_INVALIDDEVICEADDRESS = HRESULT(MAKE_DPNHRESULT_R + $320); // MAKE_DPNHRESULT( 0x320 )
  2031. {$EXTERNALSYM DPNERR_INVALIDDEVICEADDRESS}
  2032. DPNERR_INVALIDENDPOINT = HRESULT(MAKE_DPNHRESULT_R + $330); // MAKE_DPNHRESULT( 0x330 )
  2033. {$EXTERNALSYM DPNERR_INVALIDENDPOINT}
  2034. DPNERR_INVALIDFLAGS = HRESULT(MAKE_DPNHRESULT_R + $340); // MAKE_DPNHRESULT( 0x340 )
  2035. {$EXTERNALSYM DPNERR_INVALIDFLAGS}
  2036. DPNERR_INVALIDGROUP = HRESULT(MAKE_DPNHRESULT_R + $350); // MAKE_DPNHRESULT( 0x350 )
  2037. {$EXTERNALSYM DPNERR_INVALIDGROUP}
  2038. DPNERR_INVALIDHANDLE = HRESULT(MAKE_DPNHRESULT_R + $360); // MAKE_DPNHRESULT( 0x360 )
  2039. {$EXTERNALSYM DPNERR_INVALIDHANDLE}
  2040. DPNERR_INVALIDHOSTADDRESS = HRESULT(MAKE_DPNHRESULT_R + $370); // MAKE_DPNHRESULT( 0x370 )
  2041. {$EXTERNALSYM DPNERR_INVALIDHOSTADDRESS}
  2042. DPNERR_INVALIDINSTANCE = HRESULT(MAKE_DPNHRESULT_R + $380); // MAKE_DPNHRESULT( 0x380 )
  2043. {$EXTERNALSYM DPNERR_INVALIDINSTANCE}
  2044. DPNERR_INVALIDINTERFACE = HRESULT(MAKE_DPNHRESULT_R + $390); // MAKE_DPNHRESULT( 0x390 )
  2045. {$EXTERNALSYM DPNERR_INVALIDINTERFACE}
  2046. DPNERR_INVALIDOBJECT = HRESULT(MAKE_DPNHRESULT_R + $400); // MAKE_DPNHRESULT( 0x400 )
  2047. {$EXTERNALSYM DPNERR_INVALIDOBJECT}
  2048. DPNERR_INVALIDPARAM = E_INVALIDARG;
  2049. {$EXTERNALSYM DPNERR_INVALIDPARAM}
  2050. DPNERR_INVALIDPASSWORD = HRESULT(MAKE_DPNHRESULT_R + $410); // MAKE_DPNHRESULT( 0x410 )
  2051. {$EXTERNALSYM DPNERR_INVALIDPASSWORD}
  2052. DPNERR_INVALIDPLAYER = HRESULT(MAKE_DPNHRESULT_R + $420); // MAKE_DPNHRESULT( 0x420 )
  2053. {$EXTERNALSYM DPNERR_INVALIDPLAYER}
  2054. DPNERR_INVALIDPOINTER = E_POINTER;
  2055. {$EXTERNALSYM DPNERR_INVALIDPOINTER}
  2056. DPNERR_INVALIDPRIORITY = HRESULT(MAKE_DPNHRESULT_R + $430); // MAKE_DPNHRESULT( 0x430 )
  2057. {$EXTERNALSYM DPNERR_INVALIDPRIORITY}
  2058. DPNERR_INVALIDSTRING = HRESULT(MAKE_DPNHRESULT_R + $440); // MAKE_DPNHRESULT( 0x440 )
  2059. {$EXTERNALSYM DPNERR_INVALIDSTRING}
  2060. DPNERR_INVALIDURL = HRESULT(MAKE_DPNHRESULT_R + $450); // MAKE_DPNHRESULT( 0x450 )
  2061. {$EXTERNALSYM DPNERR_INVALIDURL}
  2062. DPNERR_INVALIDVERSION = HRESULT(MAKE_DPNHRESULT_R + $460); // MAKE_DPNHRESULT( 0x460 )
  2063. {$EXTERNALSYM DPNERR_INVALIDVERSION}
  2064. DPNERR_NOCAPS = HRESULT(MAKE_DPNHRESULT_R + $470); // MAKE_DPNHRESULT( 0x470 )
  2065. {$EXTERNALSYM DPNERR_NOCAPS}
  2066. DPNERR_NOCONNECTION = HRESULT(MAKE_DPNHRESULT_R + $480); // MAKE_DPNHRESULT( 0x480 )
  2067. {$EXTERNALSYM DPNERR_NOCONNECTION}
  2068. DPNERR_NOHOSTPLAYER = HRESULT(MAKE_DPNHRESULT_R + $490); // MAKE_DPNHRESULT( 0x490 )
  2069. {$EXTERNALSYM DPNERR_NOHOSTPLAYER}
  2070. DPNERR_NOINTERFACE = E_NOINTERFACE;
  2071. {$EXTERNALSYM DPNERR_NOINTERFACE}
  2072. DPNERR_NOMOREADDRESSCOMPONENTS = HRESULT(MAKE_DPNHRESULT_R + $500); // MAKE_DPNHRESULT( 0x500 )
  2073. {$EXTERNALSYM DPNERR_NOMOREADDRESSCOMPONENTS}
  2074. DPNERR_NORESPONSE = HRESULT(MAKE_DPNHRESULT_R + $510); // MAKE_DPNHRESULT( 0x510 )
  2075. {$EXTERNALSYM DPNERR_NORESPONSE}
  2076. DPNERR_NOTALLOWED = HRESULT(MAKE_DPNHRESULT_R + $520); // MAKE_DPNHRESULT( 0x520 )
  2077. {$EXTERNALSYM DPNERR_NOTALLOWED}
  2078. DPNERR_NOTHOST = HRESULT(MAKE_DPNHRESULT_R + $530); // MAKE_DPNHRESULT( 0x530 )
  2079. {$EXTERNALSYM DPNERR_NOTHOST}
  2080. DPNERR_NOTREADY = HRESULT(MAKE_DPNHRESULT_R + $540); // MAKE_DPNHRESULT( 0x540 )
  2081. {$EXTERNALSYM DPNERR_NOTREADY}
  2082. DPNERR_NOTREGISTERED = HRESULT(MAKE_DPNHRESULT_R + $550); // MAKE_DPNHRESULT( 0x550 )
  2083. {$EXTERNALSYM DPNERR_NOTREGISTERED}
  2084. DPNERR_OUTOFMEMORY = E_OUTOFMEMORY;
  2085. {$EXTERNALSYM DPNERR_OUTOFMEMORY}
  2086. DPNERR_PENDING = DPNSUCCESS_PENDING;
  2087. {$EXTERNALSYM DPNERR_PENDING}
  2088. DPNERR_PLAYERALREADYINGROUP = HRESULT(MAKE_DPNHRESULT_R + $560); // MAKE_DPNHRESULT( 0x560 )
  2089. {$EXTERNALSYM DPNERR_PLAYERALREADYINGROUP}
  2090. DPNERR_PLAYERLOST = HRESULT(MAKE_DPNHRESULT_R + $570); // MAKE_DPNHRESULT( 0x570 )
  2091. {$EXTERNALSYM DPNERR_PLAYERLOST}
  2092. DPNERR_PLAYERNOTINGROUP = HRESULT(MAKE_DPNHRESULT_R + $580); // MAKE_DPNHRESULT( 0x580 )
  2093. {$EXTERNALSYM DPNERR_PLAYERNOTINGROUP}
  2094. DPNERR_PLAYERNOTREACHABLE = HRESULT(MAKE_DPNHRESULT_R + $590); // MAKE_DPNHRESULT( 0x590 )
  2095. {$EXTERNALSYM DPNERR_PLAYERNOTREACHABLE}
  2096. DPNERR_SENDTOOLARGE = HRESULT(MAKE_DPNHRESULT_R + $600); // MAKE_DPNHRESULT( 0x600 )
  2097. {$EXTERNALSYM DPNERR_SENDTOOLARGE}
  2098. DPNERR_SESSIONFULL = HRESULT(MAKE_DPNHRESULT_R + $610); // MAKE_DPNHRESULT( 0x610 )
  2099. {$EXTERNALSYM DPNERR_SESSIONFULL}
  2100. DPNERR_TABLEFULL = HRESULT(MAKE_DPNHRESULT_R + $620); // MAKE_DPNHRESULT( 0x620 )
  2101. {$EXTERNALSYM DPNERR_TABLEFULL}
  2102. DPNERR_TIMEDOUT = HRESULT(MAKE_DPNHRESULT_R + $630); // MAKE_DPNHRESULT( 0x630 )
  2103. {$EXTERNALSYM DPNERR_TIMEDOUT}
  2104. DPNERR_UNINITIALIZED = HRESULT(MAKE_DPNHRESULT_R + $640); // MAKE_DPNHRESULT( 0x640 )
  2105. {$EXTERNALSYM DPNERR_UNINITIALIZED}
  2106. DPNERR_UNSUPPORTED = E_NOTIMPL;
  2107. {$EXTERNALSYM DPNERR_UNSUPPORTED}
  2108. DPNERR_USERCANCEL = HRESULT(MAKE_DPNHRESULT_R + $650); // MAKE_DPNHRESULT( 0x650 )
  2109. {$EXTERNALSYM DPNERR_USERCANCEL}
  2110. (*==========================================================================;
  2111. *
  2112. * Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
  2113. *
  2114. * File: dpvoice.h
  2115. * Content: DirectPlayVoice include file
  2116. ***************************************************************************)
  2117. const
  2118. (****************************************************************************
  2119. *
  2120. * DirectPlayVoice CLSIDs
  2121. *
  2122. ****************************************************************************)
  2123. // {B9F3EB85-B781-4ac1-8D90-93A05EE37D7D}
  2124. CLSID_DirectPlayVoiceClient: TGUID = '{b9f3eb85-b781-4ac1-8d90-93a05ee37d7d}';
  2125. {$EXTERNALSYM CLSID_DirectPlayVoiceClient}
  2126. // {D3F5B8E6-9B78-4a4c-94EA-CA2397B663D3}
  2127. CLSID_DirectPlayVoiceServer: TGUID = '{d3f5b8e6-9b78-4a4c-94ea-ca2397b663d3}';
  2128. {$EXTERNALSYM CLSID_DirectPlayVoiceServer}
  2129. // {0F0F094B-B01C-4091-A14D-DD0CD807711A}
  2130. CLSID_DirectPlayVoiceTest: TGUID = '{0f0f094b-b01c-4091-a14d-dd0cd807711a}';
  2131. {$EXTERNALSYM CLSID_DirectPlayVoiceTest}
  2132. (****************************************************************************
  2133. *
  2134. * DirectPlayVoice Compression Type GUIDs
  2135. *
  2136. ****************************************************************************)
  2137. // MS-ADPCM 32.8 kbit/s
  2138. //
  2139. // {699B52C1-A885-46a8-A308-97172419ADC7}
  2140. DPVCTGUID_ADPCM: TGUID = '{699b52c1-a885-46a8-a308-97172419adc7}';
  2141. {$EXTERNALSYM DPVCTGUID_ADPCM}
  2142. // Microsoft GSM 6.10 13 kbit/s
  2143. //
  2144. // {24768C60-5A0D-11d3-9BE4-525400D985E7}
  2145. DPVCTGUID_GSM: TGUID = '{24768c60-5a0d-11d3-9be4-525400d985e7}';
  2146. {$EXTERNALSYM DPVCTGUID_GSM}
  2147. // MS-PCM 64 kbit/s
  2148. //
  2149. // {8DE12FD4-7CB3-48ce-A7E8-9C47A22E8AC5}
  2150. DPVCTGUID_NONE: TGUID = '{8de12fd4-7cb3-48ce-a7e8-9c47a22e8ac5}';
  2151. {$EXTERNALSYM DPVCTGUID_NONE}
  2152. // Voxware SC03 3.2kbit/s
  2153. //
  2154. // {7D82A29B-2242-4f82-8F39-5D1153DF3E41}
  2155. DPVCTGUID_SC03: TGUID = '{7d82a29b-2242-4f82-8f39-5d1153df3e41}';
  2156. {$EXTERNALSYM DPVCTGUID_SC03}
  2157. // Voxware SC06 6.4kbit/s
  2158. //
  2159. // {53DEF900-7168-4633-B47F-D143916A13C7}
  2160. DPVCTGUID_SC06: TGUID = '{53def900-7168-4633-b47f-d143916a13c7}';
  2161. {$EXTERNALSYM DPVCTGUID_SC06}
  2162. // TrueSpeech(TM) 8.6 kbit/s
  2163. //
  2164. // {D7954361-5A0B-11d3-9BE4-525400D985E7}
  2165. DPVCTGUID_TRUESPEECH: TGUID = '{d7954361-5a0b-11d3-9be4-525400d985e7}';
  2166. {$EXTERNALSYM DPVCTGUID_TRUESPEECH}
  2167. // Voxware VR12 1.4kbit/s
  2168. //
  2169. // {FE44A9FE-8ED4-48bf-9D66-1B1ADFF9FF6D}
  2170. DPVCTGUID_VR12: TGUID = '{fe44a9fe-8ed4-48bf-9d66-1b1adff9ff6d}';
  2171. {$EXTERNALSYM DPVCTGUID_VR12}
  2172. // Define the default compression type
  2173. DPVCTGUID_DEFAULT: TGUID = '{7d82a29b-2242-4f82-8f39-5d1153df3e41}'; // DPVCTGUID_SC03;
  2174. {$EXTERNALSYM DPVCTGUID_DEFAULT}
  2175. (****************************************************************************
  2176. *
  2177. * DirectPlayVoice Callback Functions
  2178. *
  2179. ****************************************************************************)
  2180. type
  2181. TDVMessageHandler = function(pvUserContext: Pointer; dwMessageType: DWORD; lpMessage: Pointer): HResult; stdcall;
  2182. {$NODEFINE TDVMessageHandler}
  2183. {$HPPEMIT 'typedef PDVMESSAGEHANDLER TDVMessageHandler;'}
  2184. (****************************************************************************
  2185. *
  2186. * DirectPlayVoice Datatypes (Non-Structure / Non-Message)
  2187. *
  2188. ****************************************************************************)
  2189. PDVID = ^DVID;
  2190. DVID = DWORD;
  2191. {$EXTERNALSYM DVID}
  2192. TDVID = DVID;
  2193. (****************************************************************************
  2194. *
  2195. * DirectPlayVoice Message Types
  2196. *
  2197. ****************************************************************************)
  2198. const
  2199. DVMSGID_BASE = $0000;
  2200. {$EXTERNALSYM DVMSGID_BASE}
  2201. DVMSGID_CREATEVOICEPLAYER = (DVMSGID_BASE+$0001);
  2202. {$EXTERNALSYM DVMSGID_CREATEVOICEPLAYER}
  2203. DVMSGID_DELETEVOICEPLAYER = (DVMSGID_BASE+$0002);
  2204. {$EXTERNALSYM DVMSGID_DELETEVOICEPLAYER}
  2205. DVMSGID_SESSIONLOST = (DVMSGID_BASE+$0003);
  2206. {$EXTERNALSYM DVMSGID_SESSIONLOST}
  2207. DVMSGID_PLAYERVOICESTART = (DVMSGID_BASE+$0004);
  2208. {$EXTERNALSYM DVMSGID_PLAYERVOICESTART}
  2209. DVMSGID_PLAYERVOICESTOP = (DVMSGID_BASE+$0005);
  2210. {$EXTERNALSYM DVMSGID_PLAYERVOICESTOP}
  2211. DVMSGID_RECORDSTART = (DVMSGID_BASE+$0006);
  2212. {$EXTERNALSYM DVMSGID_RECORDSTART}
  2213. DVMSGID_RECORDSTOP = (DVMSGID_BASE+$0007);
  2214. {$EXTERNALSYM DVMSGID_RECORDSTOP}
  2215. DVMSGID_CONNECTRESULT = (DVMSGID_BASE+$0008);
  2216. {$EXTERNALSYM DVMSGID_CONNECTRESULT}
  2217. DVMSGID_DISCONNECTRESULT = (DVMSGID_BASE+$0009);
  2218. {$EXTERNALSYM DVMSGID_DISCONNECTRESULT}
  2219. DVMSGID_INPUTLEVEL = (DVMSGID_BASE+$000A);
  2220. {$EXTERNALSYM DVMSGID_INPUTLEVEL}
  2221. DVMSGID_OUTPUTLEVEL = (DVMSGID_BASE+$000B);
  2222. {$EXTERNALSYM DVMSGID_OUTPUTLEVEL}
  2223. DVMSGID_HOSTMIGRATED = (DVMSGID_BASE+$000C);
  2224. {$EXTERNALSYM DVMSGID_HOSTMIGRATED}
  2225. DVMSGID_SETTARGETS = (DVMSGID_BASE+$000D);
  2226. {$EXTERNALSYM DVMSGID_SETTARGETS}
  2227. DVMSGID_PLAYEROUTPUTLEVEL = (DVMSGID_BASE+$000E);
  2228. {$EXTERNALSYM DVMSGID_PLAYEROUTPUTLEVEL}
  2229. DVMSGID_LOSTFOCUS = (DVMSGID_BASE+$0010);
  2230. {$EXTERNALSYM DVMSGID_LOSTFOCUS}
  2231. DVMSGID_GAINFOCUS = (DVMSGID_BASE+$0011);
  2232. {$EXTERNALSYM DVMSGID_GAINFOCUS}
  2233. DVMSGID_LOCALHOSTSETUP = (DVMSGID_BASE+$0012);
  2234. {$EXTERNALSYM DVMSGID_LOCALHOSTSETUP}
  2235. DVMSGID_MAXBASE = (DVMSGID_LOCALHOSTSETUP);
  2236. {$EXTERNALSYM DVMSGID_MAXBASE}
  2237. DVMSGID_MINBASE = (DVMSGID_CREATEVOICEPLAYER);
  2238. {$EXTERNALSYM DVMSGID_MINBASE}
  2239. (****************************************************************************
  2240. *
  2241. * DirectPlayVoice Constants
  2242. *
  2243. ****************************************************************************)
  2244. //
  2245. // Buffer Aggresiveness Value Ranges
  2246. //
  2247. DVBUFFERAGGRESSIVENESS_MIN = $00000001;
  2248. {$EXTERNALSYM DVBUFFERAGGRESSIVENESS_MIN}
  2249. DVBUFFERAGGRESSIVENESS_MAX = $00000064;
  2250. {$EXTERNALSYM DVBUFFERAGGRESSIVENESS_MAX}
  2251. DVBUFFERAGGRESSIVENESS_DEFAULT = $00000000;
  2252. {$EXTERNALSYM DVBUFFERAGGRESSIVENESS_DEFAULT}
  2253. //
  2254. // Buffer Quality Value Ranges
  2255. //
  2256. DVBUFFERQUALITY_MIN = $00000001;
  2257. {$EXTERNALSYM DVBUFFERQUALITY_MIN}
  2258. DVBUFFERQUALITY_MAX = $00000064;
  2259. {$EXTERNALSYM DVBUFFERQUALITY_MAX}
  2260. DVBUFFERQUALITY_DEFAULT = $00000000;
  2261. {$EXTERNALSYM DVBUFFERQUALITY_DEFAULT}
  2262. DVID_SYS = 0;
  2263. {$EXTERNALSYM DVID_SYS}
  2264. //
  2265. // Used to identify the session host in client/server
  2266. //
  2267. DVID_SERVERPLAYER = 1;
  2268. {$EXTERNALSYM DVID_SERVERPLAYER}
  2269. //
  2270. // Used to target all players
  2271. //
  2272. DVID_ALLPLAYERS = 0;
  2273. {$EXTERNALSYM DVID_ALLPLAYERS}
  2274. //
  2275. // Used to identify the main buffer
  2276. //
  2277. DVID_REMAINING = $FFFFFFFF;
  2278. {$EXTERNALSYM DVID_REMAINING}
  2279. //
  2280. // Input level range
  2281. //
  2282. DVINPUTLEVEL_MIN = $00000000;
  2283. {$EXTERNALSYM DVINPUTLEVEL_MIN}
  2284. DVINPUTLEVEL_MAX = $00000063; // 99 decimal
  2285. {$EXTERNALSYM DVINPUTLEVEL_MAX}
  2286. DVNOTIFYPERIOD_MINPERIOD = 20;
  2287. {$EXTERNALSYM DVNOTIFYPERIOD_MINPERIOD}
  2288. DVPLAYBACKVOLUME_DEFAULT = DSBVOLUME_MAX;
  2289. {$EXTERNALSYM DVPLAYBACKVOLUME_DEFAULT}
  2290. DVRECORDVOLUME_LAST = $00000001;
  2291. {$EXTERNALSYM DVRECORDVOLUME_LAST}
  2292. //
  2293. // Use the default value
  2294. //
  2295. DVTHRESHOLD_DEFAULT = $FFFFFFFF;
  2296. {$EXTERNALSYM DVTHRESHOLD_DEFAULT}
  2297. //
  2298. // Threshold Ranges
  2299. //
  2300. DVTHRESHOLD_MIN = $00000000;
  2301. {$EXTERNALSYM DVTHRESHOLD_MIN}
  2302. DVTHRESHOLD_MAX = $00000063; // 99 decimal
  2303. {$EXTERNALSYM DVTHRESHOLD_MAX}
  2304. //
  2305. // Threshold field is not used
  2306. //
  2307. DVTHRESHOLD_UNUSED = $FFFFFFFE;
  2308. {$EXTERNALSYM DVTHRESHOLD_UNUSED}
  2309. //
  2310. // Session Types
  2311. //
  2312. DVSESSIONTYPE_PEER = $00000001;
  2313. {$EXTERNALSYM DVSESSIONTYPE_PEER}
  2314. DVSESSIONTYPE_MIXING = $00000002;
  2315. {$EXTERNALSYM DVSESSIONTYPE_MIXING}
  2316. DVSESSIONTYPE_FORWARDING = $00000003;
  2317. {$EXTERNALSYM DVSESSIONTYPE_FORWARDING}
  2318. DVSESSIONTYPE_ECHO = $00000004;
  2319. {$EXTERNALSYM DVSESSIONTYPE_ECHO}
  2320. (****************************************************************************
  2321. *
  2322. * DirectPlayVoice Flags
  2323. *
  2324. ****************************************************************************)
  2325. //
  2326. // Enable automatic adjustment of the recording volume
  2327. //
  2328. DVCLIENTCONFIG_AUTORECORDVOLUME = $00000008;
  2329. {$EXTERNALSYM DVCLIENTCONFIG_AUTORECORDVOLUME}
  2330. //
  2331. // Enable automatic voice activation
  2332. //
  2333. DVCLIENTCONFIG_AUTOVOICEACTIVATED = $00000020;
  2334. {$EXTERNALSYM DVCLIENTCONFIG_AUTOVOICEACTIVATED}
  2335. //
  2336. // Enable echo suppression
  2337. //
  2338. DVCLIENTCONFIG_ECHOSUPPRESSION = $08000000;
  2339. {$EXTERNALSYM DVCLIENTCONFIG_ECHOSUPPRESSION}
  2340. //
  2341. // Voice Activation manual mode
  2342. //
  2343. DVCLIENTCONFIG_MANUALVOICEACTIVATED = $00000004;
  2344. {$EXTERNALSYM DVCLIENTCONFIG_MANUALVOICEACTIVATED}
  2345. //
  2346. // Only playback voices that have buffers created for them
  2347. //
  2348. DVCLIENTCONFIG_MUTEGLOBAL = $00000010;
  2349. {$EXTERNALSYM DVCLIENTCONFIG_MUTEGLOBAL}
  2350. //
  2351. // Mute the playback
  2352. //
  2353. DVCLIENTCONFIG_PLAYBACKMUTE = $00000002;
  2354. {$EXTERNALSYM DVCLIENTCONFIG_PLAYBACKMUTE}
  2355. //
  2356. // Mute the recording
  2357. //
  2358. DVCLIENTCONFIG_RECORDMUTE = $00000001;
  2359. {$EXTERNALSYM DVCLIENTCONFIG_RECORDMUTE}
  2360. //
  2361. // Complete the operation before returning
  2362. //
  2363. DVFLAGS_SYNC = $00000001;
  2364. {$EXTERNALSYM DVFLAGS_SYNC}
  2365. //
  2366. // Just check to see if wizard has been run, and if so what it's results were
  2367. //
  2368. DVFLAGS_QUERYONLY = $00000002;
  2369. {$EXTERNALSYM DVFLAGS_QUERYONLY}
  2370. //
  2371. // Shutdown the voice session without migrating the host
  2372. //
  2373. DVFLAGS_NOHOSTMIGRATE = $00000008;
  2374. {$EXTERNALSYM DVFLAGS_NOHOSTMIGRATE}
  2375. //
  2376. // Allow the back button to be enabled in the wizard
  2377. //
  2378. DVFLAGS_ALLOWBACK = $00000010;
  2379. {$EXTERNALSYM DVFLAGS_ALLOWBACK}
  2380. //
  2381. // Disable host migration in the voice session
  2382. //
  2383. DVSESSION_NOHOSTMIGRATION = $00000001;
  2384. {$EXTERNALSYM DVSESSION_NOHOSTMIGRATION}
  2385. //
  2386. // Server controlled targetting
  2387. //
  2388. DVSESSION_SERVERCONTROLTARGET = $00000002;
  2389. {$EXTERNALSYM DVSESSION_SERVERCONTROLTARGET}
  2390. //
  2391. // Use DirectSound Normal Mode instead of priority
  2392. //
  2393. DVSOUNDCONFIG_NORMALMODE = $00000001;
  2394. {$EXTERNALSYM DVSOUNDCONFIG_NORMALMODE}
  2395. //
  2396. // Automatically select the microphone
  2397. //
  2398. DVSOUNDCONFIG_AUTOSELECT = $00000002;
  2399. {$EXTERNALSYM DVSOUNDCONFIG_AUTOSELECT}
  2400. //
  2401. // Run in half duplex mode
  2402. //
  2403. DVSOUNDCONFIG_HALFDUPLEX = $00000004;
  2404. {$EXTERNALSYM DVSOUNDCONFIG_HALFDUPLEX}
  2405. //
  2406. // No volume controls are available for the recording device
  2407. //
  2408. DVSOUNDCONFIG_NORECVOLAVAILABLE = $00000010;
  2409. {$EXTERNALSYM DVSOUNDCONFIG_NORECVOLAVAILABLE}
  2410. //
  2411. // Disable capture sharing
  2412. //
  2413. DVSOUNDCONFIG_NOFOCUS = $20000000;
  2414. {$EXTERNALSYM DVSOUNDCONFIG_NOFOCUS}
  2415. //
  2416. // Set system conversion quality to high
  2417. //
  2418. DVSOUNDCONFIG_SETCONVERSIONQUALITY = $00000008;
  2419. {$EXTERNALSYM DVSOUNDCONFIG_SETCONVERSIONQUALITY}
  2420. //
  2421. // Enable strict focus mode
  2422. //
  2423. DVSOUNDCONFIG_STRICTFOCUS = $40000000;
  2424. {$EXTERNALSYM DVSOUNDCONFIG_STRICTFOCUS}
  2425. //
  2426. // Player is in half duplex mode
  2427. //
  2428. DVPLAYERCAPS_HALFDUPLEX = $00000001;
  2429. {$EXTERNALSYM DVPLAYERCAPS_HALFDUPLEX}
  2430. //
  2431. // Specifies that player is the local player
  2432. //
  2433. DVPLAYERCAPS_LOCAL = $00000002;
  2434. {$EXTERNALSYM DVPLAYERCAPS_LOCAL}
  2435. type
  2436. (****************************************************************************
  2437. *
  2438. * DirectPlayVoice Interface Pointer definitions
  2439. *
  2440. ****************************************************************************)
  2441. IDirectPlayVoiceServer = interface;
  2442. (****************************************************************************
  2443. *
  2444. * DirectPlayVoice Structures (Non-Message)
  2445. *
  2446. ****************************************************************************)
  2447. //
  2448. // DirectPlayVoice Caps
  2449. // (GetCaps / SetCaps)
  2450. //
  2451. PDVCaps = ^TDVCaps;
  2452. DVCAPS = packed record
  2453. dwSize: DWORD; // Size of this structure
  2454. dwFlags: DWORD; // Caps flags
  2455. end;
  2456. {$EXTERNALSYM DVCAPS}
  2457. TDVCaps = DVCAPS;
  2458. //
  2459. // DirectPlayVoice Client Configuration
  2460. // (Connect / GetClientConfig)
  2461. //
  2462. PDVClientConfig = ^TDVClientConfig;
  2463. DVCLIENTCONFIG = packed record
  2464. dwSize: DWORD; // Size of this structure
  2465. dwFlags: DWORD; // Flags for client config (DVCLIENTCONFIG_...)
  2466. lRecordVolume: Longint; // Recording volume
  2467. lPlaybackVolume: Longint; // Playback volume
  2468. dwThreshold: DWORD; // Voice Activation Threshold
  2469. dwBufferQuality: DWORD; // Buffer quality
  2470. dwBufferAggressiveness: DWORD; // Buffer aggressiveness
  2471. dwNotifyPeriod: DWORD; // Period of notification messages (ms)
  2472. end;
  2473. {$EXTERNALSYM DVCLIENTCONFIG}
  2474. TDVClientConfig = DVCLIENTCONFIG;
  2475. //
  2476. // DirectPlayVoice Compression Type Information
  2477. // (GetCompressionTypes)
  2478. //
  2479. PDVCompressionInfo = ^TDVCompressionInfo;
  2480. DVCOMPRESSIONINFO = packed record
  2481. dwSize: DWORD; // Size of this structure
  2482. guidType: TGUID; // GUID that identifies this compression type
  2483. lpszName: PWideChar; // String name of this compression type
  2484. lpszDescription: PWideChar; // Description for this compression type
  2485. dwFlags: DWORD; // Flags for this compression type
  2486. dwMaxBitsPerSecond: DWORD; // Maximum # of bit/s this compression type uses
  2487. end;
  2488. {$EXTERNALSYM DVCOMPRESSIONINFO}
  2489. TDVCompressionInfo = DVCOMPRESSIONINFO;
  2490. //
  2491. // DirectPlayVoice Session Description
  2492. // (Host / GetSessionDesc)
  2493. //
  2494. PDVSessionDesc = ^TDVSessionDesc;
  2495. DVSESSIONDESC = packed record
  2496. dwSize: DWORD; // Size of this structure
  2497. dwFlags: DWORD; // Session flags (DVSESSION_...)
  2498. dwSessionType: DWORD; // Session type (DVSESSIONTYPE_...)
  2499. guidCT: TGUID; // Compression Type to use
  2500. dwBufferQuality: DWORD; // Buffer quality
  2501. dwBufferAggressiveness: DWORD; // Buffer aggresiveness
  2502. end;
  2503. {$EXTERNALSYM DVSESSIONDESC}
  2504. TDVSessionDesc = DVSESSIONDESC;
  2505. //
  2506. // DirectPlayVoice Client Sound Device Configuration
  2507. // (Connect / GetSoundDeviceConfig)
  2508. //
  2509. PDVSoundDeviceConfig = ^TDVSoundDeviceConfig;
  2510. DVSOUNDDEVICECONFIG = packed record
  2511. dwSize: DWORD; // Size of this structure
  2512. dwFlags: DWORD; // Flags for sound config (DVSOUNDCONFIG_...)
  2513. guidPlaybackDevice: TGUID; // GUID of the playback device to use
  2514. lpdsPlaybackDevice: IDirectSound; // DirectSound Object to use (optional)
  2515. guidCaptureDevice: TGUID; // GUID of the capture device to use
  2516. lpdsCaptureDevice: IDirectSoundCapture; // DirectSoundCapture Object to use (optional)
  2517. hwndAppWindow: HWND; // HWND of your application's top-level window
  2518. lpdsMainBuffer: IDirectSoundBuffer; // DirectSoundBuffer to use for playback (optional)
  2519. dwMainBufferFlags: DWORD; // Flags to pass to Play() on the main buffer
  2520. dwMainBufferPriority: DWORD; // Priority to set when calling Play() on the main buffer
  2521. end;
  2522. {$EXTERNALSYM DVSOUNDDEVICECONFIG}
  2523. TDVSoundDeviceConfig = DVSOUNDDEVICECONFIG;
  2524. (****************************************************************************
  2525. *
  2526. * DirectPlayVoice message handler call back structures
  2527. *
  2528. ****************************************************************************)
  2529. //
  2530. // Result of the Connect() call. (If it wasn't called Async)
  2531. // (DVMSGID_CONNECTRESULT)
  2532. //
  2533. PDVMsgConnectResult = ^TDVMsgConnectResult;
  2534. DVMSG_CONNECTRESULT = packed record
  2535. dwSize: DWORD; // Size of this structure
  2536. hrResult: HRESULT; // Result of the Connect() call
  2537. end;
  2538. {$EXTERNALSYM DVMSG_CONNECTRESULT}
  2539. TDVMsgConnectResult = DVMSG_CONNECTRESULT;
  2540. //
  2541. // A new player has entered the voice session
  2542. // (DVMSGID_CREATEVOICEPLAYER)
  2543. //
  2544. PDVMsgCreateVoicePlayer = ^TDVMsgCreateVoicePlayer;
  2545. DVMSG_CREATEVOICEPLAYER = packed record
  2546. dwSize: DWORD; // Size of this structure
  2547. dvidPlayer: TDVID; // DVID of the player who joined
  2548. dwFlags: DWORD; // Player flags (DVPLAYERCAPS_...)
  2549. pvPlayerContext: Pointer; // Context value for this player (user set)
  2550. end;
  2551. {$EXTERNALSYM DVMSG_CREATEVOICEPLAYER}
  2552. TDVMsgCreateVoicePlayer = DVMSG_CREATEVOICEPLAYER;
  2553. //
  2554. // A player has left the voice session
  2555. // (DVMSGID_DELETEVOICEPLAYER)
  2556. //
  2557. PDVMsgDeleteVoicePlayer = ^TDVMsgDeleteVoicePlayer;
  2558. DVMSG_DELETEVOICEPLAYER = packed record
  2559. dwSize: DWORD; // Size of this structure
  2560. dvidPlayer: TDVID; // DVID of the player who left
  2561. pvPlayerContext: Pointer; // Context value for the player
  2562. end;
  2563. {$EXTERNALSYM DVMSG_DELETEVOICEPLAYER}
  2564. TDVMsgDeleteVoicePlayer = DVMSG_DELETEVOICEPLAYER;
  2565. //
  2566. // Result of the Disconnect() call. (If it wasn't called Async)
  2567. // (DVMSGID_DISCONNECTRESULT)
  2568. //
  2569. PDVMsgDisconnectResult = ^TDVMsgDisconnectResult;
  2570. DVMSG_DISCONNECTRESULT = packed record
  2571. dwSize: DWORD; // Size of this structure
  2572. hrResult: HRESULT; // Result of the Disconnect() call
  2573. end;
  2574. {$EXTERNALSYM DVMSG_DISCONNECTRESULT}
  2575. TDVMsgDisconnectResult = DVMSG_DISCONNECTRESULT;
  2576. //
  2577. // The voice session host has migrated.
  2578. // (DVMSGID_HOSTMIGRATED)
  2579. //
  2580. PDVMsgHostMigrated = ^TDVMsgHostMigrated;
  2581. DVMSG_HOSTMIGRATED = packed record
  2582. dwSize: DWORD; // Size of this structure
  2583. dvidNewHostID: TDVID; // DVID of the player who is now the host
  2584. pdvServerInterface: IDirectPlayVoiceServer; // Pointer to the new host object (if local player is now host)
  2585. end;
  2586. {$EXTERNALSYM DVMSG_HOSTMIGRATED}
  2587. TDVMsgHostMigrated = DVMSG_HOSTMIGRATED;
  2588. //
  2589. // The current input level / recording volume on the local machine
  2590. // (DVMSGID_INPUTLEVEL)
  2591. //
  2592. PDVMsgInputlevel = ^TDVMsgInputlevel;
  2593. DVMSG_INPUTLEVEL = packed record
  2594. dwSize: DWORD; // Size of this structure
  2595. dwPeakLevel: DWORD; // Current peak level of the audio
  2596. lRecordVolume: Longint; // Current recording volume
  2597. pvLocalPlayerContext: Pointer; // Context value for the local player
  2598. end;
  2599. {$EXTERNALSYM DVMSG_INPUTLEVEL}
  2600. TDVMsgInputlevel = DVMSG_INPUTLEVEL;
  2601. //
  2602. // The local client is about to become the new host
  2603. // (DVMSGID_LOCALHOSTSETUP)
  2604. //
  2605. PDVMsgLocalHostSetup = ^TDVMsgLocalHostSetup;
  2606. DVMSG_LOCALHOSTSETUP = packed record
  2607. dwSize: DWORD; // Size of this structure
  2608. pvContext: Pointer; // Context value to be passed to Initialize() of new host object
  2609. pMessageHandler: TDVMessageHandler; // Message handler to be used by new host object
  2610. end;
  2611. {$EXTERNALSYM DVMSG_LOCALHOSTSETUP}
  2612. TDVMsgLocalHostSetup = DVMSG_LOCALHOSTSETUP;
  2613. //
  2614. // The current output level for the combined output of all incoming streams.
  2615. // (DVMSGID_OUTPUTLEVEL)
  2616. //
  2617. PDVMsgOutputLevel = ^TDVMsgOutputLevel;
  2618. DVMSG_OUTPUTLEVEL = packed record
  2619. dwSize: DWORD; // Size of this structure
  2620. dwPeakLevel: DWORD; // Current peak level of the output
  2621. lOutputVolume: Longint; // Current playback volume
  2622. pvLocalPlayerContext: Pointer; // Context value for the local player
  2623. end;
  2624. {$EXTERNALSYM DVMSG_OUTPUTLEVEL}
  2625. TDVMsgOutputLevel = DVMSG_OUTPUTLEVEL;
  2626. //
  2627. // The current peak level of an individual player's incoming audio stream as it is
  2628. // being played back.
  2629. // (DVMSGID_PLAYEROUTPUTLEVEL)
  2630. //
  2631. PDVMsgPlayerOutputLevel = ^TDVMsgPlayerOutputLevel;
  2632. DVMSG_PLAYEROUTPUTLEVEL = packed record
  2633. dwSize: DWORD; // Size of this structure
  2634. dvidSourcePlayerID: TDVID; // DVID of the player
  2635. dwPeakLevel: DWORD; // Peak level of the player's stream
  2636. pvPlayerContext: Pointer; // Context value for the player
  2637. end;
  2638. {$EXTERNALSYM DVMSG_PLAYEROUTPUTLEVEL}
  2639. TDVMsgPlayerOutputLevel = DVMSG_PLAYEROUTPUTLEVEL;
  2640. //
  2641. // An audio stream from the specified player has started playing back on the local client.
  2642. // (DVMSGID_PLAYERVOICESTART).
  2643. //
  2644. PDVMsgPlayerVoiceStart = ^TDVMsgPlayerVoiceStart;
  2645. DVMSG_PLAYERVOICESTART = packed record
  2646. dwSize: DWORD; // Size of this structure
  2647. dvidSourcePlayerID: TDVID; // DVID of the Player
  2648. pvPlayerContext: Pointer; // Context value for this player
  2649. end;
  2650. {$EXTERNALSYM DVMSG_PLAYERVOICESTART}
  2651. TDVMsgPlayerVoiceStart = DVMSG_PLAYERVOICESTART;
  2652. //
  2653. // The audio stream from the specified player has stopped playing back on the local client.
  2654. // (DVMSGID_PLAYERVOICESTOP)
  2655. //
  2656. PDVMsgPlayerVoiceStop = ^TDVMsgPlayerVoiceStop;
  2657. DVMSG_PLAYERVOICESTOP = packed record
  2658. dwSize: DWORD; // Size of this structure
  2659. dvidSourcePlayerID: DVID; // DVID of the player
  2660. pvPlayerContext: Pointer; // Context value for this player
  2661. end;
  2662. {$EXTERNALSYM DVMSG_PLAYERVOICESTOP}
  2663. TDVMsgPlayerVoiceStop = DVMSG_PLAYERVOICESTOP;
  2664. //
  2665. // Transmission has started on the local machine
  2666. // (DVMSGID_RECORDSTART)
  2667. //
  2668. PDVMsgRecordStart = ^TDVMsgRecordStart;
  2669. DVMSG_RECORDSTART = packed record
  2670. dwSize: DWORD; // Size of this structure
  2671. dwPeakLevel: DWORD; // Peak level that caused transmission to start
  2672. pvLocalPlayerContext: Pointer; // Context value for the local player
  2673. end;
  2674. {$EXTERNALSYM DVMSG_RECORDSTART}
  2675. TDVMsgRecordStart = DVMSG_RECORDSTART;
  2676. //
  2677. // Transmission has stopped on the local machine
  2678. // (DVMSGID_RECORDSTOP)
  2679. //
  2680. PDVMsgRecordStop = ^TDVMsgRecordStop;
  2681. DVMSG_RECORDSTOP = packed record
  2682. dwSize: DWORD; // Size of this structure
  2683. dwPeakLevel: DWORD; // Peak level that caused transmission to stop
  2684. pvLocalPlayerContext: Pointer; // Context value for the local player
  2685. end;
  2686. {$EXTERNALSYM DVMSG_RECORDSTOP}
  2687. TDVMsgRecordStop = DVMSG_RECORDSTOP;
  2688. //
  2689. // The voice session has been lost
  2690. // (DVMSGID_SESSIONLOST)
  2691. //
  2692. PDVMsgSessionLost = ^TDVMsgSessionLost;
  2693. DVMSG_SESSIONLOST = packed record
  2694. dwSize: DWORD; // Size of this structure
  2695. hrResult: HRESULT; // Reason the session was disconnected
  2696. end;
  2697. {$EXTERNALSYM DVMSG_SESSIONLOST}
  2698. TDVMsgSessionLost = DVMSG_SESSIONLOST;
  2699. //
  2700. // The target list has been updated for the local client
  2701. // (DVMSGID_SETTARGETS)
  2702. //
  2703. PDVMsgSetTargets = ^TDVMsgSetTargets;
  2704. DVMSG_SETTARGETS = packed record
  2705. dwSize: DWORD; // Size of this structure
  2706. dwNumTargets: DWORD; // # of targets
  2707. pdvidTargets: PDVID; // An array of DVIDs specifying the current targets
  2708. end;
  2709. {$EXTERNALSYM DVMSG_SETTARGETS}
  2710. TDVMsgSetTargets = DVMSG_SETTARGETS;
  2711. (****************************************************************************
  2712. *
  2713. * DirectPlayVoice Functions
  2714. *
  2715. ****************************************************************************)
  2716. (*
  2717. *
  2718. * This function is no longer supported. It is recommended that CoCreateInstance be used to create
  2719. * DirectPlay voice objects.
  2720. *
  2721. * extern HRESULT WINAPI DirectPlayVoiceCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown);
  2722. *
  2723. *)
  2724. (****************************************************************************
  2725. *
  2726. * DirectPlay8 Application Interfaces
  2727. *
  2728. ****************************************************************************)
  2729. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlayVoiceClient);'}
  2730. {$EXTERNALSYM IDirectPlayVoiceClient}
  2731. IDirectPlayVoiceClient = interface(IUnknown)
  2732. ['{1dfdc8ea-bcf7-41d6-b295-ab64b3b23306}']
  2733. (*** IDirectPlayVoiceClient methods ***)
  2734. function Initialize(pVoid: IUnknown; pMessageHandler: TDVMessageHandler;
  2735. pUserContext: Pointer; pdwMessageMask: PDWORD; dwMessageMaskElements: DWORD): HResult; stdcall;
  2736. function Connect(const pSoundDeviceConfig: TDVSoundDeviceConfig;
  2737. const pdvClientConfig: TDVClientConfig; dwFlags: DWORD): HResult; stdcall;
  2738. function Disconnect(dwFlags: DWORD): HResult; stdcall;
  2739. function GetSessionDesc(out pvSessionDesc: TDVSessionDesc): HResult; stdcall;
  2740. function GetClientConfig(out pClientConfig: TDVClientConfig): HResult; stdcall;
  2741. function SetClientConfig(const pClientConfig: TDVClientConfig): HResult; stdcall;
  2742. function GetCaps(out pDVCaps: TDVCaps): HResult; stdcall;
  2743. function GetCompressionTypes(pData: Pointer; var pdwDataSize: DWORD;
  2744. out pdwNumElements: DWORD; dwFlags: DWORD): HResult; stdcall;
  2745. function SetTransmitTargets(pdvIDTargets: PDVID; dwNumTargets, dwFlags: DWORD): HResult; stdcall;
  2746. function GetTransmitTargets(pdvIDTargets: PDVID; var dwNumTargets: DWORD; dwFlags: DWORD): HResult; stdcall;
  2747. function Create3DSoundBuffer(dvID: TDVID; lpdsSourceBuffer: IDirectSoundBuffer;
  2748. dwPriority, dwFlags: DWORD; out lpUserBuffer: IDirectSound3DBuffer): HResult; stdcall;
  2749. function Delete3DSoundBuffer(dvID: TDVID; lpUserBuffer: IDirectSound3DBuffer): HResult; stdcall;
  2750. function SetNotifyMask(pdwMessageMask: PDWORD; dwMessageMaskElements: DWORD): HResult; stdcall;
  2751. function GetSoundDeviceConfig(pSoundDeviceConfig: PDVSoundDeviceConfig; var pdwSize: DWORD): HResult; stdcall;
  2752. end;
  2753. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlayVoiceServer);'}
  2754. {$EXTERNALSYM IDirectPlayVoiceServer}
  2755. IDirectPlayVoiceServer = interface(IUnknown)
  2756. ['{faa1c173-0468-43b6-8a2a-ea8a4f2076c9}']
  2757. (*** IDirectPlayVoiceServer methods ***)
  2758. function Initialize(pVoid: IUnknown; pMessageHandler: TDVMessageHandler;
  2759. pUserContext: Pointer; pdwMessageMask: PDWORD; dwMessageMaskElements: DWORD): HResult; stdcall;
  2760. function StartSession(const pSessionDesc: TDVSessionDesc; dwFlags: DWORD): HResult; stdcall;
  2761. function StopSession(dwFlags: DWORD): HResult; stdcall;
  2762. function GetSessionDesc(out pvSessionDesc: TDVSessionDesc): HResult; stdcall;
  2763. function SetSessionDesc(const pvSessionDesc: TDVSessionDesc): HResult; stdcall;
  2764. function GetCaps(out pDVCaps: TDVCaps): HResult; stdcall;
  2765. function GetCompressionTypes(pData: Pointer; var pdwDataSize: DWORD;
  2766. out pdwNumElements: DWORD; dwFlags: DWORD): HResult; stdcall;
  2767. function SetTransmitTargets(dvSource: TDVID; pdvIDTargets: PDVID;
  2768. dwNumTargets, dwFlags: DWORD): HResult; stdcall;
  2769. function GetTransmitTargets(dvSource: TDVID; pdvIDTargets: PDVID;
  2770. var dwNumTargets: DWORD; dwFlags: DWORD): HResult; stdcall;
  2771. function SetNotifyMask(pdwMessageMask: PDWORD; dwMessageMaskElements: DWORD): HResult; stdcall;
  2772. end;
  2773. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlayVoiceTest);'}
  2774. {$EXTERNALSYM IDirectPlayVoiceTest}
  2775. IDirectPlayVoiceTest = interface(IUnknown)
  2776. ['{d26af734-208b-41da-8224-e0ce79810be1}']
  2777. (*** IDirectPlayVoiceTest methods ***)
  2778. function CheckAudioSetup(pguidPlaybackDevice, pguidCaptureDevice: PGUID;
  2779. hwndParent: hWND; dwFlags: DWORD): HResult; stdcall;
  2780. end;
  2781. (****************************************************************************
  2782. *
  2783. * DirectPlayVoice Interface IIDs
  2784. *
  2785. ****************************************************************************)
  2786. // {1DFDC8EA-BCF7-41d6-B295-AB64B3B23306}
  2787. IID_IDirectPlayVoiceClient = IDirectPlayVoiceClient;
  2788. {$EXTERNALSYM IID_IDirectPlayVoiceClient}
  2789. // {FAA1C173-0468-43b6-8A2A-EA8A4F2076C9}
  2790. IID_IDirectPlayVoiceServer = IDirectPlayVoiceServer;
  2791. {$EXTERNALSYM IID_IDirectPlayVoiceServer}
  2792. // {D26AF734-208B-41da-8224-E0CE79810BE1}
  2793. IID_IDirectPlayVoiceTest = IDirectPlayVoiceTest;
  2794. {$EXTERNALSYM IID_IDirectPlayVoiceTest}
  2795. (****************************************************************************
  2796. *
  2797. * DIRECTPLAYVOICE ERRORS
  2798. *
  2799. * Errors are represented by negative values and cannot be combined.
  2800. *
  2801. ****************************************************************************)
  2802. const
  2803. _FACDPV = $15;
  2804. {$EXTERNALSYM _FACDPV}
  2805. //#define MAKE_DVHRESULT( code ) MAKE_HRESULT( 1, _FACDPV, code )
  2806. (*
  2807. #define DV_FULLDUPLEX MAKE_HRESULT( 0, _FACDPV, 0x0005 )
  2808. #define DV_HALFDUPLEX MAKE_HRESULT( 0, _FACDPV, 0x000A )
  2809. #define DV_PENDING MAKE_HRESULT( 0, _FACDPV, 0x0010 )
  2810. #define DVERR_BUFFERTOOSMALL MAKE_DVHRESULT( 0x001E )
  2811. #define DVERR_EXCEPTION MAKE_DVHRESULT( 0x004A )
  2812. #define DVERR_GENERIC E_FAIL
  2813. #define DVERR_INVALIDFLAGS MAKE_DVHRESULT( 0x0078 )
  2814. #define DVERR_INVALIDOBJECT MAKE_DVHRESULT( 0x0082 )
  2815. #define DVERR_INVALIDPARAM E_INVALIDARG
  2816. #define DVERR_INVALIDPLAYER MAKE_DVHRESULT( 0x0087 )
  2817. #define DVERR_INVALIDGROUP MAKE_DVHRESULT( 0x0091 )
  2818. #define DVERR_INVALIDHANDLE MAKE_DVHRESULT( 0x0096 )
  2819. #define DVERR_OUTOFMEMORY E_OUTOFMEMORY
  2820. #define DVERR_PENDING DV_PENDING
  2821. #define DVERR_NOTSUPPORTED E_NOTIMPL
  2822. #define DVERR_NOINTERFACE E_NOINTERFACE
  2823. #define DVERR_SESSIONLOST MAKE_DVHRESULT( 0x012C )
  2824. #define DVERR_NOVOICESESSION MAKE_DVHRESULT( 0x012E )
  2825. #define DVERR_CONNECTIONLOST MAKE_DVHRESULT( 0x0168 )
  2826. #define DVERR_NOTINITIALIZED MAKE_DVHRESULT( 0x0169 )
  2827. #define DVERR_CONNECTED MAKE_DVHRESULT( 0x016A )
  2828. #define DVERR_NOTCONNECTED MAKE_DVHRESULT( 0x016B )
  2829. #define DVERR_CONNECTABORTING MAKE_DVHRESULT( 0x016E )
  2830. #define DVERR_NOTALLOWED MAKE_DVHRESULT( 0x016F )
  2831. #define DVERR_INVALIDTARGET MAKE_DVHRESULT( 0x0170 )
  2832. #define DVERR_TRANSPORTNOTHOST MAKE_DVHRESULT( 0x0171 )
  2833. #define DVERR_COMPRESSIONNOTSUPPORTED MAKE_DVHRESULT( 0x0172 )
  2834. #define DVERR_ALREADYPENDING MAKE_DVHRESULT( 0x0173 )
  2835. #define DVERR_SOUNDINITFAILURE MAKE_DVHRESULT( 0x0174 )
  2836. #define DVERR_TIMEOUT MAKE_DVHRESULT( 0x0175 )
  2837. #define DVERR_CONNECTABORTED MAKE_DVHRESULT( 0x0176 )
  2838. #define DVERR_NO3DSOUND MAKE_DVHRESULT( 0x0177 )
  2839. #define DVERR_ALREADYBUFFERED MAKE_DVHRESULT( 0x0178 )
  2840. #define DVERR_NOTBUFFERED MAKE_DVHRESULT( 0x0179 )
  2841. #define DVERR_HOSTING MAKE_DVHRESULT( 0x017A )
  2842. #define DVERR_NOTHOSTING MAKE_DVHRESULT( 0x017B )
  2843. #define DVERR_INVALIDDEVICE MAKE_DVHRESULT( 0x017C )
  2844. #define DVERR_RECORDSYSTEMERROR MAKE_DVHRESULT( 0x017D )
  2845. #define DVERR_PLAYBACKSYSTEMERROR MAKE_DVHRESULT( 0x017E )
  2846. #define DVERR_SENDERROR MAKE_DVHRESULT( 0x017F )
  2847. #define DVERR_USERCANCEL MAKE_DVHRESULT( 0x0180 )
  2848. #define DVERR_RUNSETUP MAKE_DVHRESULT( 0x0183 )
  2849. #define DVERR_INCOMPATIBLEVERSION MAKE_DVHRESULT( 0x0184 )
  2850. #define DVERR_INITIALIZED MAKE_DVHRESULT( 0x0187 )
  2851. #define DVERR_INVALIDPOINTER E_POINTER
  2852. #define DVERR_NOTRANSPORT MAKE_DVHRESULT( 0x0188 )
  2853. #define DVERR_NOCALLBACK MAKE_DVHRESULT( 0x0189 )
  2854. #define DVERR_TRANSPORTNOTINIT MAKE_DVHRESULT( 0x018A )
  2855. #define DVERR_TRANSPORTNOSESSION MAKE_DVHRESULT( 0x018B )
  2856. #define DVERR_TRANSPORTNOPLAYER MAKE_DVHRESULT( 0x018C )
  2857. #define DVERR_USERBACK MAKE_DVHRESULT( 0x018D )
  2858. #define DVERR_NORECVOLAVAILABLE MAKE_DVHRESULT( 0x018E )
  2859. #define DVERR_INVALIDBUFFER MAKE_DVHRESULT( 0x018F )
  2860. #define DVERR_LOCKEDBUFFER MAKE_DVHRESULT( 0x0190 )
  2861. *)
  2862. MAKE_DVHRESULT_R = (1 shl 31) or (_FACDPV shl 16);
  2863. DV_OK = S_OK;
  2864. {$EXTERNALSYM DV_OK}
  2865. DV_FULLDUPLEX = (0 shl 31) or (_FACDPV shl 16) or $0005;
  2866. {$EXTERNALSYM DV_FULLDUPLEX}
  2867. DV_HALFDUPLEX = (0 shl 31) or (_FACDPV shl 16) or $000A;
  2868. {$EXTERNALSYM DV_HALFDUPLEX}
  2869. DV_PENDING = (0 shl 31) or (_FACDPV shl 16) or $0010;
  2870. {$EXTERNALSYM DV_PENDING}
  2871. DVERR_BUFFERTOOSMALL = MAKE_DVHRESULT_R + $001E ;
  2872. {$EXTERNALSYM DVERR_BUFFERTOOSMALL}
  2873. DVERR_EXCEPTION = MAKE_DVHRESULT_R + $004A ;
  2874. {$EXTERNALSYM DVERR_EXCEPTION}
  2875. DVERR_GENERIC = E_FAIL;
  2876. {$EXTERNALSYM DVERR_GENERIC}
  2877. DVERR_INVALIDFLAGS = MAKE_DVHRESULT_R + $0078 ;
  2878. {$EXTERNALSYM DVERR_INVALIDFLAGS}
  2879. DVERR_INVALIDOBJECT = MAKE_DVHRESULT_R + $0082 ;
  2880. {$EXTERNALSYM DVERR_INVALIDOBJECT}
  2881. DVERR_INVALIDPARAM = E_INVALIDARG;
  2882. {$EXTERNALSYM DVERR_INVALIDPARAM}
  2883. DVERR_INVALIDPLAYER = MAKE_DVHRESULT_R + $0087 ;
  2884. {$EXTERNALSYM DVERR_INVALIDPLAYER}
  2885. DVERR_INVALIDGROUP = MAKE_DVHRESULT_R + $0091 ;
  2886. {$EXTERNALSYM DVERR_INVALIDGROUP}
  2887. DVERR_INVALIDHANDLE = MAKE_DVHRESULT_R + $0096 ;
  2888. {$EXTERNALSYM DVERR_INVALIDHANDLE}
  2889. DVERR_OUTOFMEMORY = E_OUTOFMEMORY;
  2890. {$EXTERNALSYM DVERR_OUTOFMEMORY}
  2891. DVERR_PENDING = DV_PENDING;
  2892. {$EXTERNALSYM DVERR_PENDING}
  2893. DVERR_NOTSUPPORTED = E_NOTIMPL;
  2894. {$EXTERNALSYM DVERR_NOTSUPPORTED}
  2895. DVERR_NOINTERFACE = E_NOINTERFACE;
  2896. {$EXTERNALSYM DVERR_NOINTERFACE}
  2897. DVERR_SESSIONLOST = MAKE_DVHRESULT_R + $012C ;
  2898. {$EXTERNALSYM DVERR_SESSIONLOST}
  2899. DVERR_NOVOICESESSION = MAKE_DVHRESULT_R + $012E ;
  2900. {$EXTERNALSYM DVERR_NOVOICESESSION}
  2901. DVERR_CONNECTIONLOST = MAKE_DVHRESULT_R + $0168 ;
  2902. {$EXTERNALSYM DVERR_CONNECTIONLOST}
  2903. DVERR_NOTINITIALIZED = MAKE_DVHRESULT_R + $0169 ;
  2904. {$EXTERNALSYM DVERR_NOTINITIALIZED}
  2905. DVERR_CONNECTED = MAKE_DVHRESULT_R + $016A ;
  2906. {$EXTERNALSYM DVERR_CONNECTED}
  2907. DVERR_NOTCONNECTED = MAKE_DVHRESULT_R + $016B ;
  2908. {$EXTERNALSYM DVERR_NOTCONNECTED}
  2909. DVERR_CONNECTABORTING = MAKE_DVHRESULT_R + $016E ;
  2910. {$EXTERNALSYM DVERR_CONNECTABORTING}
  2911. DVERR_NOTALLOWED = MAKE_DVHRESULT_R + $016F ;
  2912. {$EXTERNALSYM DVERR_NOTALLOWED}
  2913. DVERR_INVALIDTARGET = MAKE_DVHRESULT_R + $0170 ;
  2914. {$EXTERNALSYM DVERR_INVALIDTARGET}
  2915. DVERR_TRANSPORTNOTHOST = MAKE_DVHRESULT_R + $0171 ;
  2916. {$EXTERNALSYM DVERR_TRANSPORTNOTHOST}
  2917. DVERR_COMPRESSIONNOTSUPPORTED = MAKE_DVHRESULT_R + $0172 ;
  2918. {$EXTERNALSYM DVERR_COMPRESSIONNOTSUPPORTED}
  2919. DVERR_ALREADYPENDING = MAKE_DVHRESULT_R + $0173 ;
  2920. {$EXTERNALSYM DVERR_ALREADYPENDING}
  2921. DVERR_SOUNDINITFAILURE = MAKE_DVHRESULT_R + $0174 ;
  2922. {$EXTERNALSYM DVERR_SOUNDINITFAILURE}
  2923. DVERR_TIMEOUT = MAKE_DVHRESULT_R + $0175 ;
  2924. {$EXTERNALSYM DVERR_TIMEOUT}
  2925. DVERR_CONNECTABORTED = MAKE_DVHRESULT_R + $0176 ;
  2926. {$EXTERNALSYM DVERR_CONNECTABORTED}
  2927. DVERR_NO3DSOUND = MAKE_DVHRESULT_R + $0177 ;
  2928. {$EXTERNALSYM DVERR_NO3DSOUND}
  2929. DVERR_ALREADYBUFFERED = MAKE_DVHRESULT_R + $0178 ;
  2930. {$EXTERNALSYM DVERR_ALREADYBUFFERED}
  2931. DVERR_NOTBUFFERED = MAKE_DVHRESULT_R + $0179 ;
  2932. {$EXTERNALSYM DVERR_NOTBUFFERED}
  2933. DVERR_HOSTING = MAKE_DVHRESULT_R + $017A ;
  2934. {$EXTERNALSYM DVERR_HOSTING}
  2935. DVERR_NOTHOSTING = MAKE_DVHRESULT_R + $017B ;
  2936. {$EXTERNALSYM DVERR_NOTHOSTING}
  2937. DVERR_INVALIDDEVICE = MAKE_DVHRESULT_R + $017C ;
  2938. {$EXTERNALSYM DVERR_INVALIDDEVICE}
  2939. DVERR_RECORDSYSTEMERROR = MAKE_DVHRESULT_R + $017D ;
  2940. {$EXTERNALSYM DVERR_RECORDSYSTEMERROR}
  2941. DVERR_PLAYBACKSYSTEMERROR = MAKE_DVHRESULT_R + $017E ;
  2942. {$EXTERNALSYM DVERR_PLAYBACKSYSTEMERROR}
  2943. DVERR_SENDERROR = MAKE_DVHRESULT_R + $017F ;
  2944. {$EXTERNALSYM DVERR_SENDERROR}
  2945. DVERR_USERCANCEL = MAKE_DVHRESULT_R + $0180 ;
  2946. {$EXTERNALSYM DVERR_USERCANCEL}
  2947. DVERR_RUNSETUP = MAKE_DVHRESULT_R + $0183 ;
  2948. {$EXTERNALSYM DVERR_RUNSETUP}
  2949. DVERR_INCOMPATIBLEVERSION = MAKE_DVHRESULT_R + $0184 ;
  2950. {$EXTERNALSYM DVERR_INCOMPATIBLEVERSION}
  2951. DVERR_INITIALIZED = MAKE_DVHRESULT_R + $0187 ;
  2952. {$EXTERNALSYM DVERR_INITIALIZED}
  2953. DVERR_INVALIDPOINTER = E_POINTER;
  2954. {$EXTERNALSYM DVERR_INVALIDPOINTER}
  2955. DVERR_NOTRANSPORT = MAKE_DVHRESULT_R + $0188 ;
  2956. {$EXTERNALSYM DVERR_NOTRANSPORT}
  2957. DVERR_NOCALLBACK = MAKE_DVHRESULT_R + $0189 ;
  2958. {$EXTERNALSYM DVERR_NOCALLBACK}
  2959. DVERR_TRANSPORTNOTINIT = MAKE_DVHRESULT_R + $018A ;
  2960. {$EXTERNALSYM DVERR_TRANSPORTNOTINIT}
  2961. DVERR_TRANSPORTNOSESSION = MAKE_DVHRESULT_R + $018B ;
  2962. {$EXTERNALSYM DVERR_TRANSPORTNOSESSION}
  2963. DVERR_TRANSPORTNOPLAYER = MAKE_DVHRESULT_R + $018C ;
  2964. {$EXTERNALSYM DVERR_TRANSPORTNOPLAYER}
  2965. DVERR_USERBACK = MAKE_DVHRESULT_R + $018D ;
  2966. {$EXTERNALSYM DVERR_USERBACK}
  2967. DVERR_NORECVOLAVAILABLE = MAKE_DVHRESULT_R + $018E ;
  2968. {$EXTERNALSYM DVERR_NORECVOLAVAILABLE}
  2969. DVERR_INVALIDBUFFER = MAKE_DVHRESULT_R + $018F ;
  2970. {$EXTERNALSYM DVERR_INVALIDBUFFER}
  2971. DVERR_LOCKEDBUFFER = MAKE_DVHRESULT_R + $0190 ;
  2972. {$EXTERNALSYM DVERR_LOCKEDBUFFER}
  2973. ///////////////////////////////////////////////////////////////////////////////
  2974. ///////////////////////////////////////////////////////////////////////////////
  2975. // Compatibility types for non-Borland compliant translations of DirectPlay8 //
  2976. ///////////////////////////////////////////////////////////////////////////////
  2977. ///////////////////////////////////////////////////////////////////////////////
  2978. type
  2979. PDvmsg_Connectresult = PDVMsgConnectResult;
  2980. TDvmsg_Connectresult = TDVMsgConnectResult;
  2981. PDvmsg_Createvoiceplayer = PDVMsgCreateVoicePlayer;
  2982. TDvmsg_Createvoiceplayer = TDVMsgCreateVoicePlayer;
  2983. PDvmsg_Deletevoiceplayer = PDVMsgDeleteVoicePlayer;
  2984. TDvmsg_Deletevoiceplayer = TDVMsgDeleteVoicePlayer;
  2985. PDvmsg_Disconnectresult = PDVMsgDisconnectResult;
  2986. TDvmsg_Disconnectresult = TDVMsgDisconnectResult;
  2987. PDvmsg_Hostmigrated = PDVMsgHostMigrated;
  2988. TDvmsg_Hostmigrated = TDVMsgHostMigrated;
  2989. PDvmsg_Inputlevel = PDVMsgInputlevel;
  2990. TDvmsg_Inputlevel = TDVMsgInputlevel;
  2991. PDvmsg_Localhostsetup = PDVMsgLocalHostSetup;
  2992. TDvmsg_Localhostsetup = TDVMsgLocalHostSetup;
  2993. PDvmsg_Outputlevel = PDVMsgOutputLevel;
  2994. TDvmsg_Outputlevel = TDVMsgOutputLevel;
  2995. PDvmsg_Playeroutputlevel = PDVMsgPlayerOutputLevel;
  2996. TDvmsg_Playeroutputlevel = TDVMsgPlayerOutputLevel;
  2997. PDvmsg_Playervoicestart = PDVMsgPlayerVoiceStart;
  2998. TDvmsg_Playervoicestart = TDVMsgPlayerVoiceStart;
  2999. PDvmsg_Playervoicestop = PDVMsgPlayerVoiceStop;
  3000. TDvmsg_Playervoicestop = TDVMsgPlayerVoiceStop;
  3001. PDvmsg_Recordstart = PDVMsgRecordStart;
  3002. TDvmsg_Recordstart = TDVMsgRecordStart;
  3003. PDvmsg_Recordstop = PDVMsgRecordStop;
  3004. TDvmsg_Recordstop = TDVMsgRecordStop;
  3005. PDvmsg_Sessionlost = PDVMsgSessionLost;
  3006. TDvmsg_Sessionlost = TDVMsgSessionLost;
  3007. PDvmsg_Settargets = PDVMsgSetTargets;
  3008. TDvmsg_Settargets = TDVMsgSetTargets;
  3009. PDPN_Application_Desc = PDPNApplicationDesc;
  3010. TDPN_Application_Desc = TDPNApplicationDesc;
  3011. PDPN_Caps = PDPNCaps;
  3012. TDPN_Caps = TDPNCaps;
  3013. PDPN_Caps_Ex = PDPNCapsEx;
  3014. TDPN_Caps_Ex = TDPNCapsEx;
  3015. PDPN_Connection_Info = PDPNConnectionInfo;
  3016. TDPN_Connection_Info = TDPNConnectionInfo;
  3017. PDPN_Group_Info = PDPNGroupInfo;
  3018. TDPN_Group_Info = TDPNGroupInfo;
  3019. PDPN_Player_Info = PDPNPlayerInfo;
  3020. TDPN_Player_Info = TDPNPlayerInfo;
  3021. PDPN_Security_Credentials = PDPNSecurityCredentials;
  3022. TDPN_Security_Credentials = TDPNSecurityCredentials;
  3023. PDPN_Security_Desc = PDPNSecurityDesc;
  3024. TDPN_Security_Desc = TDPNSecurityDesc;
  3025. PDPN_Service_Provider_Info = PDPNServiceProviderInfo;
  3026. TDPN_Service_Provider_Info = TDPNServiceProviderInfo;
  3027. PDPN_Sp_Caps = PDPNSpCaps;
  3028. TDPN_Sp_Caps = TDPNSpCaps;
  3029. PDPNMsg_Add_Player_To_Group = PDPNMsgAddPlayerToGroup;
  3030. TDPNMsg_Add_Player_To_Group = TDPNMsgAddPlayerToGroup;
  3031. PDPNMsg_Async_Op_Complete = PDPNMsgAsyncOpComplete;
  3032. TDPNMsg_Async_Op_Complete = TDPNMsgAsyncOpComplete;
  3033. PDPNMsg_Client_Info = PDPNMsgClientInfo;
  3034. TDPNMsg_Client_Info = TDPNMsgClientInfo;
  3035. PDPNMsg_Connect_Complete = PDPNMsgConnectComplete;
  3036. TDPNMsg_Connect_Complete = TDPNMsgConnectComplete;
  3037. PDPNMsg_Create_Group = PDPNMsgCreateGroup;
  3038. TDPNMsg_Create_Group = TDPNMsgCreateGroup;
  3039. PDPNMsg_Create_Player = PDPNMsgCreatePlayer;
  3040. TDPNMsg_Create_Player = TDPNMsgCreatePlayer;
  3041. PDPNMsg_Destroy_Group = PDPNMsgDestroyGroup;
  3042. TDPNMsg_Destroy_Group = TDPNMsgDestroyGroup;
  3043. PDPNMsg_Destroy_Player = PDPNMsgDestroyPlayer;
  3044. TDPNMsg_Destroy_Player = TDPNMsgDestroyPlayer;
  3045. PDPNMsg_Enum_Hosts_Query = PDPNMsgEnumHostsQuery;
  3046. TDPNMsg_Enum_Hosts_Query = TDPNMsgEnumHostsQuery;
  3047. PDPNMsg_Enum_Hosts_Response = PDPNMsgEnumHostsResponse;
  3048. TDPNMsg_Enum_Hosts_Response = TDPNMsgEnumHostsResponse;
  3049. PDPNMsg_Group_Info = PDPNMsgGroupInfo;
  3050. TDPNMsg_Group_Info = TDPNMsgGroupInfo;
  3051. PDPNMsg_Host_Migrate = PDPNMsgHostMigrate;
  3052. TDPNMsg_Host_Migrate = TDPNMsgHostMigrate;
  3053. PDPNMsg_Indicate_Connect = PDPNMsgIndicateConnect;
  3054. TDPNMsg_Indicate_Connect = TDPNMsgIndicateConnect;
  3055. PDPNMsg_Indicated_Connect_Aborted = PDPNMsgIndicatedConnectAborted;
  3056. TDPNMsg_Indicated_Connect_Aborted = TDPNMsgIndicatedConnectAborted;
  3057. PDPNMsg_Peer_Info = PDPNMsgPeerInfo;
  3058. TDPNMsg_Peer_Info = TDPNMsgPeerInfo;
  3059. PDPNMsg_Receive = PDPNMsgReceive;
  3060. TDPNMsg_Receive = TDPNMsgReceive;
  3061. PDPNMsg_Remove_Player_From_Group = PDPNMsgRemovePlayerFromGroup;
  3062. TDPNMsg_Remove_Player_From_Group = TDPNMsgRemovePlayerFromGroup;
  3063. PDPNMsg_Return_Buffer = PDPNMsgReturnBuffer;
  3064. TDPNMsg_Return_Buffer = TDPNMsgReturnBuffer;
  3065. PDPNMsg_Send_Complete = PDPNMsgSendComplete;
  3066. TDPNMsg_Send_Complete = TDPNMsgSendComplete;
  3067. PDPNMsg_Server_Info = PDPNMsgServerInfo;
  3068. TDPNMsg_Server_Info = TDPNMsgServerInfo;
  3069. PDPNMsg_Terminate_Session = PDPNMsgTerminateSession;
  3070. TDPNMsg_Terminate_Session = TDPNMsgTerminateSession;
  3071. PDPNMsg_Create_Thread = PDPNMsgCreateThread;
  3072. TDPNMsg_Create_Thread = TDPNMsgCreateThread;
  3073. PDPNMsg_Destroy_Thread = PDPNMsgDestroyThread;
  3074. TDPNMsg_Destroy_Thread = TDPNMsgDestroyThread;
  3075. PDPNMsg_Nat_Resolver_Query = PDPNMsgNatResolverQuery;
  3076. TDPNMsg_Nat_Resolver_Query = TDPNMsgNatResolverQuery;
  3077. implementation
  3078. // #define MAKE_DPNHRESULT( code ) MAKE_HRESULT( 1, _DPN_FACILITY_CODE, ( code + _DPNHRESULT_BASE ) )
  3079. function MAKE_DPNHRESULT(Code: DWORD): DWORD;
  3080. begin
  3081. Result:= DWord((1 shl 31) or (_DPN_FACILITY_CODE shl 16)) or (Code + _DPNHRESULT_BASE);
  3082. end;
  3083. end.