Hello Alistair,
On 01/08/2014 06:26 AM, Alistair Leslie-Hughes wrote:
Changelog: dpnet: Add stubbed interface IDirectPlay8Server
diff --git a/dlls/dpnet/dpnet_private.h b/dlls/dpnet/dpnet_private.h index 72012cd..5195d51 100644 --- a/dlls/dpnet/dpnet_private.h +++ b/dlls/dpnet/dpnet_private.h @@ -37,6 +37,7 @@ typedef struct IDirectPlay8AddressImpl IDirectPlay8AddressImpl; typedef struct IDirectPlay8LobbiedApplicationImpl IDirectPlay8LobbiedApplicationImpl; typedef struct IDirectPlay8PeerImpl IDirectPlay8PeerImpl; typedef struct IDirectPlay8ThreadPoolImpl IDirectPlay8ThreadPoolImpl; +typedef struct IDirectPlay8ServerImpl IDirectPlay8ServerImpl;
please add the struct directly to server.c as it is used only there.
+static ULONG WINAPI IDirectPlay8ServerImpl_AddRef(IDirectPlay8Server *iface) +{
- IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
- ULONG refCount = InterlockedIncrement(&This->ref);
- TRACE("(%p)->(ref before=%u)\n", This, refCount - 1);
The standard to which Wine moves is to print the current refcount. See http://wiki.winehq.org/COMGuideline under "COM aggregation" for sample AddRef / Release functions.
+HRESULT DPNET_CreateDirectPlay8Server(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, REFIID riid, LPVOID *ppobj)
IClassFactory* and IUnknown* are much nicer.
+{
- IDirectPlay8ServerImpl *server;
- TRACE("(%p, %s, %p)\n", punkOuter, debugstr_guid(riid), ppobj);
- server = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectPlay8ServerImpl));
- if (!server)
- {
*ppobj = NULL;
return E_OUTOFMEMORY;
- }
- server->IDirectPlay8Server_iface.lpVtbl = &DirectPlay8ServerVtbl;
- server->ref = 1;
- *ppobj = (LPVOID*)&server->IDirectPlay8Server_iface;
This will fail to fail for an unsupported riid. I have added the correct way to the COMGuideline wiki page.
thanks bye michael