dpnet: Add stubbed interface IDirectPlay8Server

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Tue Jan 7 23:26:27 CST 2014


Hi,


Changelog:
     dpnet: Add stubbed interface IDirectPlay8Server


Best Regards
  Alistair Leslie-Hughes
-------------- next part --------------
>From 730216f83ea5bdcbb9bfc6f2410cb59d83c7145c Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Wed, 8 Jan 2014 13:19:47 +1100
Subject: [PATCH] Add stubbed interface IDirectPlay8Server
To: wine-patches <wine-patches at winehq.org>

---
 dlls/dpnet/dpnet_private.h |  10 ++
 dlls/dpnet/server.c        | 347 ++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 354 insertions(+), 3 deletions(-)

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;
 
 /* ------------------ */
 /* IDirectPlay8Client */
@@ -95,6 +96,15 @@ struct IDirectPlay8ThreadPoolImpl
   LONG ref;
 };
 
+/*****************************************************************************
+ * IDirectPlay8Server implementation structure
+ */
+struct IDirectPlay8ServerImpl
+{
+    IDirectPlay8Server IDirectPlay8Server_iface;
+    LONG ref;
+};
+
 /**
  * factories
  */
diff --git a/dlls/dpnet/server.c b/dlls/dpnet/server.c
index 085b15f..4bcdb9f 100644
--- a/dlls/dpnet/server.c
+++ b/dlls/dpnet/server.c
@@ -35,7 +35,348 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(dpnet);
 
-HRESULT DPNET_CreateDirectPlay8Server(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, REFIID riid, LPVOID *ppobj) {
-  WARN("(%p, %s, %p): stub.\n", punkOuter, debugstr_guid(riid), ppobj);
-  return CLASS_E_CLASSNOTAVAILABLE;
+static inline IDirectPlay8ServerImpl *impl_from_IDirectPlay8Server(IDirectPlay8Server *iface)
+{
+    return CONTAINING_RECORD(iface, IDirectPlay8ServerImpl, IDirectPlay8Server_iface);
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_QueryInterface(IDirectPlay8Server *iface, REFIID riid, void**ppv)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+
+    TRACE("%p %s %p\n", This, debugstr_guid(riid), ppv);
+
+    if (IsEqualGUID(riid, &IID_IUnknown) ||
+        IsEqualGUID(riid, &IID_IDirectPlay8Server))
+    {
+        IDirectPlay8Server_AddRef(iface);
+        *ppv = iface;
+        return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n", iface, debugstr_guid(riid), ppv);
+    return E_NOINTERFACE;
+}
+
+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);
+
+    return refCount;
+}
+
+static ULONG WINAPI IDirectPlay8ServerImpl_Release(IDirectPlay8Server *iface)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    ULONG refCount = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p)->(ref before=%u)\n", This, refCount + 1);
+
+    if (!refCount) {
+        HeapFree(GetProcessHeap(), 0, This);
+    }
+
+    return refCount;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_Initialize(IDirectPlay8Server *iface, PVOID pvUserContext,
+                                            PFNDPNMESSAGEHANDLER pfn, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %p %d)\n", This, pvUserContext, pfn, dwFlags);
+    return S_OK;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_EnumServiceProviders(IDirectPlay8Server *iface, const GUID *pguidServiceProvider,
+                                            const GUID *pguidApplication, DPN_SERVICE_PROVIDER_INFO *pSPInfoBuffer, PDWORD pcbEnumData,
+                                            PDWORD pcReturned, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%s %s %p %p %p %d)\n", This, debugstr_guid(pguidServiceProvider), debugstr_guid(pguidApplication),
+                pSPInfoBuffer, pcbEnumData, pcReturned, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_CancelAsyncOperation(IDirectPlay8Server *iface, DPNHANDLE hAsyncHandle, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %d)\n", This, hAsyncHandle, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetSendQueueInfo(IDirectPlay8Server *iface, DPNID dpnid, DWORD *pdwNumMsgs,
+                                            DWORD *pdwNumBytes, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %p %d)\n", This, dpnid, pdwNumMsgs, pdwNumBytes, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetApplicationDesc(IDirectPlay8Server *iface, DPN_APPLICATION_DESC *pAppDescBuffer,
+                                            DWORD *pcbDataSize, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %p %d)\n", This, pAppDescBuffer, pcbDataSize, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_SetServerInfo(IDirectPlay8Server *iface, const DPN_PLAYER_INFO *pdpnPlayerInfo,
+                                            PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %p %p %d)\n", This, pdpnPlayerInfo, pvAsyncContext, phAsyncHandle, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetClientInfo(IDirectPlay8Server *iface, DPNID dpnid, DPN_PLAYER_INFO *pdpnPlayerInfo,
+                                            DWORD *pdwSize, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %p %d)\n", This, dpnid, pdpnPlayerInfo, pdwSize, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetClientAddress(IDirectPlay8Server *iface, DPNID dpnid, IDirectPlay8Address **pAddress,
+                                            DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %d)\n", This, dpnid, pAddress, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetLocalHostAddresses(IDirectPlay8Server *iface, IDirectPlay8Address **prgpAddress,
+                                            DWORD *pcAddress, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %p %d)\n", This, prgpAddress, pcAddress, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_SetApplicationDesc(IDirectPlay8Server *iface, const DPN_APPLICATION_DESC *pad, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %d)\n", This, pad, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_Host(IDirectPlay8Server *iface, const DPN_APPLICATION_DESC *pdnAppDesc,
+                                            IDirectPlay8Address **prgpDeviceInfo, DWORD cDeviceInfo, const DPN_SECURITY_DESC *pdnSecurity,
+                                            const DPN_SECURITY_CREDENTIALS *pdnCredentials, void *pvPlayerContext, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %p %d %p %p %p %d)\n", This, pdnAppDesc, prgpDeviceInfo, cDeviceInfo, pdnSecurity, pdnCredentials,
+                    pvPlayerContext, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_SendTo(IDirectPlay8Server *iface, DPNID dpnid, const DPN_BUFFER_DESC *prgBufferDesc,
+                                             DWORD cBufferDesc, DWORD dwTimeOut, void *pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %d %d %p %p %d)\n", This, dpnid, prgBufferDesc, cBufferDesc, dwTimeOut, pvAsyncContext, phAsyncHandle,
+                    dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_CreateGroup(IDirectPlay8Server *iface, const DPN_GROUP_INFO *pdpnGroupInfo,
+                                             void *pvGroupContext, void *pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %p %p %p %d)\n", This, pdpnGroupInfo, pvGroupContext, pvAsyncContext, phAsyncHandle, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_DestroyGroup(IDirectPlay8Server *iface, DPNID idGroup, PVOID pvAsyncContext,
+                                            DPNHANDLE *phAsyncHandle, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %p %d)\n", This, idGroup, pvAsyncContext, phAsyncHandle, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_AddPlayerToGroup(IDirectPlay8Server *iface, DPNID idGroup, DPNID idClient,
+                                            PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %d %p %p %d)\n", This, idGroup, idClient, pvAsyncContext, phAsyncHandle, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_RemovePlayerFromGroup(IDirectPlay8Server *iface, DPNID idGroup, DPNID idClient,
+                                            PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %d %p %p %d)\n", This, idGroup, idClient, pvAsyncContext, phAsyncHandle, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_SetGroupInfo(IDirectPlay8Server *iface, DPNID dpnid, DPN_GROUP_INFO *pdpnGroupInfo,
+                                            PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %p %p %d)\n", This, dpnid, pdpnGroupInfo, pvAsyncContext, phAsyncHandle, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetGroupInfo(IDirectPlay8Server *iface, DPNID dpnid, DPN_GROUP_INFO *pdpnGroupInfo,
+                                            DWORD *pdwSize, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %p %d)\n", This, dpnid, pdpnGroupInfo, pdwSize, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_EnumPlayersAndGroups(IDirectPlay8Server *iface, DPNID *prgdpnid, DWORD *pcdpnid, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %p %d)\n", This, prgdpnid, pcdpnid, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_EnumGroupMembers(IDirectPlay8Server *iface, DPNID dpnid, DPNID *prgdpnid, DWORD *pcdpnid, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %p %d)\n", This, dpnid, prgdpnid, pcdpnid, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_Close(IDirectPlay8Server *iface, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d)\n", This, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_DestroyClient(IDirectPlay8Server *iface, DPNID dpnidClient, const void *pvDestroyData,
+                                                    DWORD dwDestroyDataSize, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %d %d)\n", This, dpnidClient, pvDestroyData, dwDestroyDataSize, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_ReturnBuffer(IDirectPlay8Server *iface, DPNHANDLE hBufferHandle, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %d)\n", This, hBufferHandle, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetPlayerContext(IDirectPlay8Server *iface, DPNID dpnid, PVOID *ppvPlayerContext, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %d)\n", This, dpnid, ppvPlayerContext, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetGroupContext(IDirectPlay8Server *iface, DPNID dpnid, PVOID *ppvGroupContext, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %d)\n", This, dpnid, ppvGroupContext, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetCaps(IDirectPlay8Server *iface, DPN_CAPS *pdpCaps, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %d)\n", This, pdpCaps, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_SetCaps(IDirectPlay8Server *iface, const DPN_CAPS *pdpCaps, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %d)\n", This, pdpCaps, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_SetSPCaps(IDirectPlay8Server *iface, const GUID *pguidSP, const DPN_SP_CAPS *pdpspCaps, DWORD dwFlags )
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %p %d)\n", This, pguidSP, pdpspCaps, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetSPCaps(IDirectPlay8Server *iface, const GUID *pguidSP, DPN_SP_CAPS *pdpspCaps, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%p %p %d)\n", This, pguidSP, pdpspCaps, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_GetConnectionInfo(IDirectPlay8Server *iface, DPNID dpnid,
+                                            DPN_CONNECTION_INFO *pdpConnectionInfo, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %d)\n", This, dpnid, pdpConnectionInfo, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI IDirectPlay8ServerImpl_RegisterLobby(IDirectPlay8Server *iface, DPNHANDLE dpnHandle,
+                                            struct IDirectPlay8LobbiedApplication *pIDP8LobbiedApplication, DWORD dwFlags)
+{
+    IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
+    FIXME("(%p)->(%d %p %d)\n", This, dpnHandle, pIDP8LobbiedApplication, dwFlags);
+    return E_NOTIMPL;
+}
+
+static const IDirectPlay8ServerVtbl DirectPlay8ServerVtbl =
+{
+    IDirectPlay8ServerImpl_QueryInterface,
+    IDirectPlay8ServerImpl_AddRef,
+    IDirectPlay8ServerImpl_Release,
+    IDirectPlay8ServerImpl_Initialize,
+    IDirectPlay8ServerImpl_EnumServiceProviders,
+    IDirectPlay8ServerImpl_CancelAsyncOperation,
+    IDirectPlay8ServerImpl_GetSendQueueInfo,
+    IDirectPlay8ServerImpl_GetApplicationDesc,
+    IDirectPlay8ServerImpl_SetServerInfo,
+    IDirectPlay8ServerImpl_GetClientInfo,
+    IDirectPlay8ServerImpl_GetClientAddress,
+    IDirectPlay8ServerImpl_GetLocalHostAddresses,
+    IDirectPlay8ServerImpl_SetApplicationDesc,
+    IDirectPlay8ServerImpl_Host,
+    IDirectPlay8ServerImpl_SendTo,
+    IDirectPlay8ServerImpl_CreateGroup,
+    IDirectPlay8ServerImpl_DestroyGroup,
+    IDirectPlay8ServerImpl_AddPlayerToGroup,
+    IDirectPlay8ServerImpl_RemovePlayerFromGroup,
+    IDirectPlay8ServerImpl_SetGroupInfo,
+    IDirectPlay8ServerImpl_GetGroupInfo,
+    IDirectPlay8ServerImpl_EnumPlayersAndGroups,
+    IDirectPlay8ServerImpl_EnumGroupMembers,
+    IDirectPlay8ServerImpl_Close,
+    IDirectPlay8ServerImpl_DestroyClient,
+    IDirectPlay8ServerImpl_ReturnBuffer,
+    IDirectPlay8ServerImpl_GetPlayerContext,
+    IDirectPlay8ServerImpl_GetGroupContext,
+    IDirectPlay8ServerImpl_GetCaps,
+    IDirectPlay8ServerImpl_SetCaps,
+    IDirectPlay8ServerImpl_SetSPCaps,
+    IDirectPlay8ServerImpl_GetSPCaps,
+    IDirectPlay8ServerImpl_GetConnectionInfo,
+    IDirectPlay8ServerImpl_RegisterLobby
+};
+
+HRESULT DPNET_CreateDirectPlay8Server(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, REFIID riid, LPVOID *ppobj)
+{
+    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;
+
+    return S_OK;
 }
-- 
1.8.3.2



More information about the wine-patches mailing list