static HRESULT WINAPI IDirectPlay8ClientImpl_GetSendQueueInfo(IDirectPlay8Client *iface, DWORD * const pdwNumMsgs, DWORD * const pdwNumBytes, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_Initialize(IDirectPlay8Client *iface, void * const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%p,%p,%x): Stub\n", This, pvUserContext, pfn, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_GetServerInfo(IDirectPlay8Client *iface, DPN_PLAYER_INFO * const pdpnPlayerInfo, DWORD * const pdwSize, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_GetServerAddress(IDirectPlay8Client *iface, IDirectPlay8Address ** const pAddress, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_CancelAsyncOperation(IDirectPlay8Client *iface, const DPNHANDLE hAsyncHandle, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%u,%x): Stub\n", This, hAsyncHandle, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_ReturnBuffer(IDirectPlay8Client *iface, const DPNHANDLE hBufferHandle, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_SetSPCaps(IDirectPlay8Client *iface, const GUID * const pguidSP, const DPN_SP_CAPS * const pdpspCaps, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_GetCaps(IDirectPlay8Client *iface, DPN_CAPS * const pdpCaps, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_GetConnectionInfo(IDirectPlay8Client *iface, DPN_CONNECTION_INFO * const pdpConnectionInfo, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_GetApplicationDesc(IDirectPlay8Client *iface, DPN_APPLICATION_DESC * const pAppDescBuffer, DWORD * const pcbDataSize, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_Send(IDirectPlay8Client *iface, const DPN_BUFFER_DESC * const prgBufferDesc, const DWORD cBufferDesc, const DWORD dwTimeOut, void * const pvAsyncContext, DPNHANDLE * const phAsyncHandle, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%p,%p,%x): Stub\n", This, pvAsyncContext, phAsyncHandle, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_RegisterLobby(IDirectPlay8Client *iface, const DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication * const pIDP8LobbiedApplication, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_SetClientInfo(IDirectPlay8Client *iface, const DPN_PLAYER_INFO * const pdpnPlayerInfo, void * const pvAsyncContext, DPNHANDLE * const phAsyncHandle, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%p,%p,%x): Stub\n", This, pvAsyncContext, phAsyncHandle, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_EnumServiceProviders(IDirectPlay8Client *iface, const GUID * const pguidServiceProvider, const GUID * const pguidApplication, DPN_SERVICE_PROVIDER_INFO * const pSPInfoBuffer, PDWORD const pcbEnumData, PDWORD const pcReturned, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_Close(IDirectPlay8Client *iface, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%x): Stub\n", This, dwFlags); This->msghandler = NULL; return DPN_OK; }
static ULONG WINAPI IDirectPlay8ClientImpl_AddRef(IDirectPlay8Client *iface) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); ULONG refCount = InterlockedIncrement(&This->ref); TRACE("(%p)->(ref before=%u)\n", This, refCount - 1); return refCount; }
static ULONG WINAPI IDirectPlay8ClientImpl_AddRef(IDirectPlay8Client *iface) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); ULONG ref = InterlockedIncrement(&This->ref); TRACE("(%p) ref=%u\n", This, ref); return ref; }
static HRESULT WINAPI IDirectPlay8ClientImpl_EnumHosts(IDirectPlay8Client *iface, PDPN_APPLICATION_DESC const pApplicationDesc, IDirectPlay8Address * const pAddrHost, IDirectPlay8Address * const pDeviceInfo, void * const pUserEnumData, const DWORD dwUserEnumDataSize, const DWORD dwEnumCount, const DWORD dwRetryInterval, const DWORD dwTimeOut, void * const pvUserContext, DPNHANDLE * const pAsyncHandle, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%p,%p,%x): Stub\n", This, pvUserContext, pAsyncHandle, dwFlags); return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_Connect(IDirectPlay8Client *iface, const DPN_APPLICATION_DESC * const pdnAppDesc, IDirectPlay8Address * const pHostAddr, IDirectPlay8Address * const pDeviceInfo, const DPN_SECURITY_DESC * const pdnSecurity, const DPN_SECURITY_CREDENTIALS * const pdnCredentials, const void * const pvUserConnectData, const DWORD dwUserConnectDataSize, void * const pvAsyncContext, DPNHANDLE * const phAsyncHandle, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%p,%p,%x): Stub\n", This, pvAsyncContext, phAsyncHandle, dwFlags); return DPN_OK; }
static ULONG WINAPI IDirectPlay8ClientImpl_Release(IDirectPlay8Client *iface) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p) ref=%u\n", This, ref); if (!ref) { HeapFree(GetProcessHeap(), 0, This); } return ref; }
static HRESULT WINAPI IDirectPlay8ClientImpl_SetClientInfo(IDirectPlay8Client *iface, const DPN_PLAYER_INFO * const pdpnPlayerInfo, void * const pvAsyncContext, DPNHANDLE * const phAsyncHandle, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%p,%p,%x): Semi-stub.\n", This, pvAsyncContext, phAsyncHandle, dwFlags); if(!pdpnPlayerInfo) return E_POINTER; if(phAsyncHandle) FIXME("Async handle currently not supported.\n"); if (pdpnPlayerInfo->dwInfoFlags & DPNINFO_NAME) { heap_free(This->username); This->username = NULL; if(pdpnPlayerInfo->pwszName) { This->username = heap_strdupW(pdpnPlayerInfo->pwszName); if (!This->username) return E_OUTOFMEMORY; } } if (pdpnPlayerInfo->dwInfoFlags & DPNINFO_DATA) { heap_free(This->data); This->data = NULL; This->datasize = 0; if(!pdpnPlayerInfo->pvData && pdpnPlayerInfo->dwDataSize) return E_POINTER; if(pdpnPlayerInfo->dwDataSize && pdpnPlayerInfo->pvData) { This->data = heap_alloc(pdpnPlayerInfo->dwDataSize); if (!This->data) return E_OUTOFMEMORY; This->datasize = pdpnPlayerInfo->dwDataSize; memcpy(This->data, pdpnPlayerInfo->pvData, pdpnPlayerInfo->dwDataSize); } } return DPN_OK; }
/* IDirectPlay8Client IUnknown parts follow: */ static HRESULT WINAPI IDirectPlay8ClientImpl_QueryInterface(IDirectPlay8Client *iface, REFIID riid, void **ppobj) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectPlay8Client)) { IUnknown_AddRef(iface); *ppobj = This; return DPN_OK; } WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj); return E_NOINTERFACE; }
static HRESULT WINAPI IDirectPlay8ClientImpl_SetSPCaps(IDirectPlay8Client *iface, const GUID * const pguidSP, const DPN_SP_CAPS * const pdpspCaps, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); TRACE("(%p)->(%p,%p,%x): stub\n", iface, pguidSP, pdpspCaps, dwFlags); if(!This->msghandler || pdpspCaps->dwSize != sizeof(DPN_SP_CAPS)) return DPNERR_INVALIDPARAM; /* Only dwSystemBufferSize is set by this call. */ This->spcaps.dwSystemBufferSize = pdpspCaps->dwSystemBufferSize; return DPN_OK; }
static ULONG WINAPI IDirectPlay8ClientImpl_Release(IDirectPlay8Client *iface) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p) ref=%u\n", This, ref); if (!ref) { heap_free(This->username); heap_free(This->data); heap_free(This); } return ref; }
static HRESULT WINAPI IDirectPlay8ClientImpl_Initialize(IDirectPlay8Client *iface, void * const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); TRACE("(%p):(%p,%p,%x)\n", This, pvUserContext, pfn, dwFlags); if(!pfn) return DPNERR_INVALIDPARAM; This->usercontext = pvUserContext; This->msghandler = pfn; This->flags = dwFlags; return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_EnumServiceProviders(IDirectPlay8Client *iface, const GUID * const pguidServiceProvider, const GUID * const pguidApplication, DPN_SERVICE_PROVIDER_INFO * const pSPInfoBuffer, PDWORD const pcbEnumData, PDWORD const pcReturned, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); TRACE("(%p)->(%s,%s,%p,%p,%p,%x)\n", This, debugstr_guid(pguidServiceProvider), debugstr_guid(pguidApplication), pSPInfoBuffer, pcbEnumData, pcReturned, dwFlags); if(dwFlags) FIXME("Unhandled flags %x\n", dwFlags); if(pguidApplication) FIXME("Application guid %s is currently being ignored\n", debugstr_guid(pguidApplication)); return enum_services_providers(pguidServiceProvider, pSPInfoBuffer, pcbEnumData, pcReturned); }
static HRESULT WINAPI IDirectPlay8ClientImpl_GetSPCaps(IDirectPlay8Client *iface, const GUID * const pguidSP, DPN_SP_CAPS * const pdpspCaps, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); TRACE("(%p)->(%p,%p,%x)\n", This, pguidSP, pdpspCaps, dwFlags); if(!This->msghandler) return DPNERR_UNINITIALIZED; if(pdpspCaps->dwSize != sizeof(DPN_SP_CAPS)) { return DPNERR_INVALIDPARAM; } *pdpspCaps = This->spcaps; return DPN_OK; }
static HRESULT WINAPI IDirectPlay8ClientImpl_EnumHosts(IDirectPlay8Client *iface, PDPN_APPLICATION_DESC const pApplicationDesc, IDirectPlay8Address * const pAddrHost, IDirectPlay8Address * const pDeviceInfo, void * const pUserEnumData, const DWORD dwUserEnumDataSize, const DWORD dwEnumCount, const DWORD dwRetryInterval, const DWORD dwTimeOut, void * const pvUserContext, DPNHANDLE * const pAsyncHandle, const DWORD dwFlags) { IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface); FIXME("(%p):(%p,%p,%p,%p,%u,%u,%u,%u,%p,%p,%x)\n", This, pApplicationDesc, pAddrHost, pDeviceInfo, pUserEnumData, dwUserEnumDataSize, dwEnumCount, dwRetryInterval, dwTimeOut, pvUserContext, pAsyncHandle, dwFlags); if(!This->msghandler) return DPNERR_UNINITIALIZED; if((dwFlags & DPNENUMHOSTS_SYNC) && pAsyncHandle) return DPNERR_INVALIDPARAM; if(dwUserEnumDataSize > This->spcaps.dwMaxEnumPayloadSize) return DPNERR_ENUMQUERYTOOLARGE; return (dwFlags & DPNENUMHOSTS_SYNC) ? DPN_OK : DPNSUCCESS_PENDING; }