Merge documentation/status/directplay into the code.

diff --git a/dlls/dplayx/dpclassfactory.c b/dlls/dplayx/dpclassfactory.c
index 7eb68cd..e9523a7 100644
--- a/dlls/dplayx/dpclassfactory.c
+++ b/dlls/dplayx/dpclassfactory.c
@@ -1,4 +1,5 @@
-/*
+/* COM class factory for direct play lobby interfaces.
+ *
  * Copyright 1999, 2000 Peter Hunnisett
  *
  * This library is free software; you can redistribute it and/or
diff --git a/dlls/dplayx/dplay.c b/dlls/dplayx/dplay.c
index a67616e..9533af2 100644
--- a/dlls/dplayx/dplay.c
+++ b/dlls/dplayx/dplay.c
@@ -2,8 +2,6 @@
  *
  * Copyright 1998,1999,2000,2001 - Peter Hunnisett
  *
- * <presently under construction - contact hunnise@nortelnetworks.com>
- *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
diff --git a/dlls/dplayx/dplayx_global.c b/dlls/dplayx/dplayx_global.c
index d344285..909253e 100644
--- a/dlls/dplayx/dplayx_global.c
+++ b/dlls/dplayx/dplayx_global.c
@@ -17,10 +17,17 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-/* NOTE: Methods that begin with DPLAYX_ are used for dealing with
- *       dplayx.dll data which is accessible from all processes.
+ *
+ *
+ * NOTES: 
+ *  o Implementation of all things which are associated with dplay on
+ *    the computer - ie shared resources and such. Methods in this
+ *    compilation unit should not call anything out side this unit
+ *    excepting base windows services and an interface to start the
+ *    messaging thread.
+ *  o Methods that begin with DPLAYX_ are used for dealing with
+ *    dplayx.dll data which is accessible from all processes.
+ *
  */
 
 #include <stdarg.h>
diff --git a/dlls/dplayx/dplayx_main.c b/dlls/dplayx/dplayx_main.c
index 84d5903..d79e535 100644
--- a/dlls/dplayx/dplayx_main.c
+++ b/dlls/dplayx/dplayx_main.c
@@ -18,6 +18,44 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * NOTES
+ *  o DPMSGCMD_ENUMSESSIONSREPLY & DPMSGCMD_ENUMSESSIONSREQUEST
+ *    Have most fields understood, but not all.  Everything seems to work.
+ *  o DPMSGCMD_REQUESTNEWPLAYERID & DPMSGCMD_NEWPLAYERIDREPLY
+ *    Barely work. This needs to be completed for sessions to start.
+ *  o A small issue will be the fact that DirectX 6.1(ie. DirectPlay4)
+ *    introduces a layer of functionality inside the DP objects which 
+ *    provide guaranteed protocol delivery.  This is even if the native
+ *    protocol, IPX or modem for instance, doesn't guarantee it. I'm going
+ *    to leave this kind of implementation to as close to the end as 
+ *    possible. However, I will implement an abstraction layer, where 
+ *    possible, for this functionality. It will do nothing to start, but 
+ *    will require only the implementation of the guaranteness to give 
+ *    final implementation.
+ *
+ * TODO:
+ *  - Implement mutual exclusion on object data for existing functions
+ *  - Ensure that all dll stubs are present and the ordinals are correct
+ *  - Addition of DirectX 7.0 functionality for direct play
+ *  - Implement some WineLib test programs using sdk programs as a skeleton
+ *  - Change RegEnumKeyEx enumeration pattern to allow error handling and to
+ *    share registry implementation (or at least simplify).
+ *  - Add in appropriate RegCloseKey calls for all the opening we're doing...
+ *  - Fix all the buffer sizes for registry calls. They're off by one - 
+ *    but in a safe direction.
+ *  - Fix race condition on interface destruction
+ *  - Handles need to be correctly reference counted
+ *  - Check if we need to deallocate any list objects when destroying 
+ *    a dplay interface
+ *  - RunApplication process spawning needs to have correct syncronization.
+ *  - Need to get inter lobby messages working.
+ *  - Decypher dplay messages between applications and implement...
+ *  - Need to implement lobby session spawning.
+ *  - Improve footprint and realtime blocking by setting up a separate data share
+ *    between lobby application and client since there can be multiple apps per
+ *    client. Also get rid of offset dependency by making data offset independent
+ *    somehow.
  */
 #include <stdarg.h>
 
diff --git a/dlls/dplayx/dplayx_messages.c b/dlls/dplayx/dplayx_messages.c
index 6d5d442..8be8ea9 100644
--- a/dlls/dplayx/dplayx_messages.c
+++ b/dlls/dplayx/dplayx_messages.c
@@ -2,8 +2,6 @@
  *
  * Copyright 2000,2001 - Peter Hunnisett
  *
- * <presently under construction - contact hunnise@nortelnetworks.com>
- *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
@@ -17,6 +15,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * NOTES
+ *  o Messaging interface required for both DirectPlay and DirectPlayLobby.
  */
 
 #include <stdarg.h>
@@ -509,4 +510,3 @@
        wCommandId, DPLAYX_HresultToString( lpcErrorMsg->errorCode) );
   DebugBreak();
 }
-
diff --git a/dlls/dplayx/dplayx_queue.h b/dlls/dplayx/dplayx_queue.h
index 9ca3abd..814f684 100644
--- a/dlls/dplayx/dplayx_queue.h
+++ b/dlls/dplayx/dplayx_queue.h
@@ -15,6 +15,12 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * NOTES
+ *  o Linked list implementation for dplay/dplobby. Based off of the BSD
+ *    version found in <sys/queue.h>
+ *  o Port it to <wine/list.h> ?
+ *
  */
 
 #ifndef __WINE_DPLAYX_QUEUE_H
diff --git a/documentation/status/directplay b/documentation/status/directplay
deleted file mode 100644
index 1933a80..0000000
--- a/documentation/status/directplay
+++ /dev/null
@@ -1,172 +0,0 @@
-This file contains information on the implementation of the direct play
-and direct play lobby features. There's lots to do and I'm not exactly
-implementing it overnight! Please lend a hand.
-
-Most methods and APIs are but stubs at this point. Examine the code
-to see what has been implemented. Use -debugmsg +dplay to get a 
-reasonably thourough description of what's going on.
-
-Associated DirectX user header files are include/dplay.h, include/dplobby.h.
-
-Implementation of the DPLAY and DPLAYX dlls are both in the dlls/dplayx
-directory. Here's a brief description of the function of each of the files in that
-directory:
-
-dplay.c: Implementation of all the direct play object interfaces.
-
-dplobby.c: Implementation of all the direct play lobby interfaces.
-
-dpclassfactory.c: Implementation of the COM class factory which can create either
-                  direct play lobby or direct play lobby interfaces.
-
-dpinit.h: Header file so that dpclassfactory.c can access dplay and dplobby query 
-          functions. Shouldn't be included by anything else.
-
-dplayx_global.h,
-dplayx_global.c: Implementation of all things which are associated with dplay on
-                 the computer - ie shared resources and such. Methods in this
-                 compilation unit should not call anything out side this unit
-                 excepting base windows services and an interface to start the
-                 messaging thread.
-
-name_server.h,
-name_server.c: Implementation of all things which are associated with the name
-               server functionality
-
-dplayx_main.c: LibMain executed for loading and unloading the dll. This will make
-               the call to dplayx_global.c to request initialization and destruction
-               of any global data.
-
-dplayx_queue.h: Linked list implementation for dplay/dplobby. Based off of the BSD
-                version found in <sys/queue.h>
-
-dplayx_messages.h,
-dplayx_messages.c: Messaging interface required for both DirectPlay and 
-                   DirectPlayLobby.
-
-dplaysp.c,
-dplaysp.h: COM interface between DPLAYX and the service provider dlls. dplaysp.h is
-           something that should be included into any service provider. Basically 
-           the COM interface is partially documented but is generally lacking in the
-           finer points.
-
-Presently the architectural relationship between this files is a little shakey, but
-isn't so sufficiently bad that it needs fixing yet.
-
-I think I can safely say that any application which requires direct play
-or direct play lobby will not work at this point. Priority will be to get
-examples from the sdk running. Once they're at least partially working, I can
-get down to trying to get some of the games working.
-
-However, now that address separation is a reality, all binary samples provided 
-in the sdk can be used. I have had success spawning processes and one
-directx7 example will allow creation of an app and allow another to join it.
-Unfortunately, there isn't much for it to be able to do give the state of
-inter directlobby or directplay messaging.
-
-Messages which work:
-
-For session enumeration: DPMSGCMD_ENUMSESSIONSREPLY & DPMSGCMD_ENUMSESSIONSREQUEST
-                         have most fields understood, but not all. Everything _seems_
-                         to work.
-
-For playerid requesting: DPMSGCMD_REQUESTNEWPLAYERID & DPMSGCMD_NEWPLAYERIDREPLY
-                         barely work. This needs to be completed for sessions to be
-                         able to actually start.
-
-A small issue will be the fact that DirectX 6.1(ie. DirectPlay4) introduces a layer of functionality
-inside the DP objects which provide guaranteed protocol delivery. This is
-even if the native protocol, IPX or modem for instance, doesn't guarantee it. I'm going to leave
-this kind of implementation to as close to the end as possible. However, I
-will implement an abstraction layer, where possible, for this functionality. 
-It will do nothing to start, but will require only the implementation of the 
-guaranteness to give final implementation.
-
-
-TODO:
-  - (done) Header files for DP4 and DPL3 
-  - (done) Add stub functions for all DP4 and DPL3 interfaces
-  - (done) Correct naming of the parameters for DP3 and DPL2
-  - (done) Separate out DP and DPL into multiple .c files
-  - (done) Allow CoCreateInstance to create the new interfaces
-  - (started)Implement mutual exclusion on object data for existing functions
-  - (done) Create and move to correct dll directories (dplay and dplayx)
-  - (done) Implement dplay in terms of dplayx
-  - (done) Need a better internal implementation for the objects which scales and 
-    preferably doesn't involve casting structures. Solution is a crude ctor/dtor
-    which can actually trap some runtime errors.
-  - (done) More generic initialization and destruction helper methods based off
-    the chosen internal implementation. Solution is a crude ctor/dtor.
-  - Use only windows routines where an equivalent is available
-  - (done) Fix wine dplay.h and dplobby.h header files to allow apps to create the ansi versions
-  - (started) Port some WineLib test programs using sdk programs (both C and C++ progs)  
-  - (done) Implement a lib main for the dplayx dll (required for RunApplication, etc.)
-  - (done)Figure out how to share the global memory correctly
-  - Ensure that all dll stubs are present and the ordinals are correct
-  - (started) Implementation of functionality
-  - Addition of DirectX 7.0 functionality for direct play (try to catch that moving train)
-  - bug fixes ;)
-  - Implement some WineLib test programs using sdk programs as a skeleton
-  - (done) Change all RegEnumKey calls to RegEnumKeyEx.
-  - Change RegEnumKeyEx enumeration pattern to allow error handling and to
-    share registry implementation (or at least simplify).
-  - Add in appropriate RegCloseKey calls for all the opening we're doing...
-  - Fix all the buffer sizes for registry calls. They're off by one - but in a safe direction.
-  - (done) Find out how to call the service provider dlls - they don't have a published interface!
-  - Fix race condition on interface destruction
-  - Handles need to be correctly reference counted
-  - Need to check if we need to deallocate any list objects when destroying 
-    dplay interface
-  - RunApplication process spawning needs to have correct syncronization.
-  - Need to get inter lobby messages working.
-  - Decypher dplay messages between applications and implement...
-  - Need to implement lobby session spawning.
-
-ENHANCEMENTS:
-  - Improve footprint and realtime blocking by setting up a separate data share
-    between lobby application and client since there can be multiple apps per 
-    client. Also get rid of offset dependency by making data offset independent 
-    somehow.
-  - Handle everything in UNICODE (as server does) and do conversions for ANSI 
-    interfaces. Should cut down on dplayx code base and maintanability (marginally)
-    and could be used to improve efficiency of dialog with the server (it wouldn't
-    have to do ANSI<->UNICODE transformations).
-
-
-
-Programs to make work:
-  - lserver.exe (from sdk)
-  - override.exe (from sdk)
-  - dpchat.exe (from sdk)
-  - duel.exe (from sdk)
-  - dplaunch.exe (from sdk)
-
-Next API to implement on a per SDK program basis:
-  override.exe
-  - (calls dpserial so basic problems with that remain)
-  - after that ?
-
-  dplaunch.exe
-  - I think that everything is basically working. The launched app may not
-    work on the other hand.
-
-  lserver.exe
-  - Missing messaging portion. Everything else works.
- 
-  bellhop.exe
-  - Need to implement lobby server support.
-  - ?
-
-  dpslots.exe
-  - Works as host except for message stuff
-  - Missing correct handling of receipt of playerid
-
-Other TODO:
-
-- look at problem with parsing the resource file for dplaunch. wrc problem?
-- I should be getting the dialog box to come up for dpchat when something is selected
-Call OLE32.7: CoCreateInstance(010017f0,00000000,00000001,010017e0,010094b4) ret=01002f38 fs=0237
-Call ADVAPI32.188: RegOpenKeyExA(80000002,5e08dd90 "Software\\Microsoft\\DirectPlay\\Compatibility",00000000,00020019,40e7f49c) ret=5e0b6e5a fs=0237
-
-   
-Peter Hunnisett  -  hunnise@nortelnetworks.com