Added a configuration hint for the CD-ROM "unhide" option.
[wine/testsucceed.git] / documentation / status / directplay
blob13f5703222ec0b85bbf66e38cf84a97e5decb17e
1 This file contains information on the implementation of the direct play
2 and direct play lobby features. There's lots to do and I'm not exactly
3 implementing it overnight! Please lend a hand.
5 Most methods and APIs are but stubs at this point. Examine the code
6 to see what has been implemented. Use -debugmsg +dplay to get a 
7 reasonably thourough description of what's going on.
9 Associated header files are include/dplay.h, include/dplobby.h.
11 Implementation of the DPLAY and DPLAYX dlls are both in the dlls/dplayx
12 directory.
14 dplay.c: Implementation of all the direct play object interfaces.
15 dplobby.c: Implementation of all the direct play lobby interfaces.
16 dpclassfactory.c: Implementation of the COM class factory which can create either
17                   direct play lobby or direct play lobby interfaces.
18 dplayx_global.c: Implementation of all things which are associated with dplay on
19                  the computer - ie shared resources and such. Methods in this
20                  compilation unit should not call anything out side this unit.
21 name_server.c: Implementation of all things which are associated with the name
22                server functionality
23 dplayx_main.c: LibMain executed for loading and unloading the dll. This will make
24                the call to dplayx_global.c to request initialization and destruction
25                of any global data.
27 Presently the architectural relationship between this files is a little shakey, but
28 isn't so sufficiently bad that it needs fixing yet.
30 Everything right now will run in the context of the calling thread, but at some
31 point in the future the code will actually be far enough along to create a thread
32 for session management.
34 I think I can safely say that any application which requires direct play
35 or direct play lobby will not work at this point. Priority will be to get
36 examples from the sdk running. Once they're at least partially working, I can
37 get down to trying to get some of the games working.
39 A small issue will be the fact that DirectX 6.1(ie. DirectPlay4) introduces a layer of functionality
40 inside the DP objects which provide guaranteed protocol delivery. This is
41 even if the native protocol, IPX or modem for instance, doesn't guarantee it. I'm going to leave
42 this kind of implementation to as close to the end as possible. However, I
43 will implement an abstraction layer, where possible, for this functionality. 
44 It will do nothing to start, but will require only the implementation of the 
45 guaranteness to give final implementation.
48 TODO:
49   - (done) Header files for DP4 and DPL3 
50   - (done) Add stub functions for all DP4 and DPL3 interfaces
51   - (done) Correct naming of the parameters for DP3 and DPL2
52   - (done) Seperate out DP and DPL into multiple .c files
53   - (done) Allow CoCreateInstance to create the new interfaces
54   - (started)Implement mutual exclusion on object data for existing functions
55   - (done) Create and move to correct dll directories (dplay and dplayx)
56   - (done) Implement dplay in terms of dplayx
57   - (done) Need a better internal implementation for the objects which scales and 
58     preferably doesn't involve casting structures. Solution is a crude ctor/dtor
59     which can actually trap some runtime errors.
60   - (done) More generic initialization and destruction helper methods based off
61     the chosen internal implementation. Solution is a crude ctor/dtor.
62   - Use only windows routines where an equivalent is available
63   - (done) Fix wine dplay.h and dplobby.h header files to allow apps to create the ansi versions
64   - (started) Port some WineLib test programs using sdk programs (both C and C++ progs)  
65   - (done) Implement a lib main for the dplayx dll (required for RunApplication, etc.)
66   - Figure out how to share the global memory correctly
67   - Ensure that all dll stubs are present and the ordinals are correct
68   - (started) Implementation of functionality
69   - Addition of DirectX 7.0 functionality for direct play (try to catch that moving train)
70   - bug fixes ;)
71   - Implement some WineLib test programs using sdk programs as a skeleton
72   - (done) Change all RegEnumKey calls to RegEnumKeyEx.
73   - Change RegEnumKeyEx enumeration pattern to allow error handling.
74   - Add in appropriate RegCloseKey calls for all the opening we're doing...
75   - Fix all the buffer sizes for registry calls. They're off by one - but in a safe direction.
76   - Find out how to call the service provider dlls - they don't have a published interface!
77   - Fix race condition on interface destruction
79 Programs to make work:
80   - lserver.exe (from sdk)
81   - override.exe (from sdk)
82   - dpchat.exe (from sdk)
83   - duel.exe (from sdk)
84   - dplaunch.exe (from sdk)
86 Next API to implement on a per program basis:
87   override.exe
88   - fixme:dplay:DirectPlayCreate Modem binding not supported yet
89   - DirectPlay3AImpl_InitializeConnection
90   - DirectPlay2AImpl_Open
91   - ?
93   dplaunch.exe
94   - IDirectPlayLobby2AImpl_CreateCompoundAddress
95   - IDirectPlayLobbyAImpl_RunApplication
96   - ?
98   lserver.exe
99   - IDirectPlayLobby2WImpl_Connect 
100   - fixme:dplay:DirectPlayCreate Modem binding not supported yet
101   - IDirectPlay3WImpl_CreatePlayer 
102   - IDirectPlay3WImpl_CreateGroup
103   - IDirectPlay3WImpl_SetGroupData
104   - IDirectPlay3WImpl_Send
105   - ?
107   bellhop.exe
108   - DirectPlay3AImpl_EnumConnections (lobby applications)
109   - ?
111   dpslots.exe
112   - IDirectPlayLobby3AImpl_ConnectEx
113   - ?
115 Other TODO:
117 - look at problem with parsing the resource file for dplaunch. wrc problem?
118 - I should be getting the dialog box to come up for dpchat when something is selected
119 Call OLE32.7: CoCreateInstance(010017f0,00000000,00000001,010017e0,010094b4) ret=01002f38 fs=0237
120 Call ADVAPI32.188: RegOpenKeyExA(80000002,5e08dd90 "Software\\Microsoft\\DirectPlay\\Compatibility",00000000,00020019,40e7f49c) ret=5e0b6e5a fs=0237
122    
123 Peter Hunnisett  -  hunnise@nortelnetworks.com