HRESULT DPNET_CreateDirectPlay8Client(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppv) { IDirectPlay8ClientImpl* client; HRESULT hr; TRACE("(%p, %s, %p)\n", pUnkOuter, debugstr_guid(riid), ppv); *ppv = NULL; if(pUnkOuter) return CLASS_E_NOAGGREGATION; client = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectPlay8ClientImpl)); if (!client) return E_OUTOFMEMORY; client->IDirectPlay8Client_iface.lpVtbl = &DirectPlay8Client_Vtbl; client->ref = 1; init_dpn_sp_caps(&client->spcaps); hr = IDirectPlay8ClientImpl_QueryInterface(&client->IDirectPlay8Client_iface, riid, ppv); IDirectPlay8ClientImpl_Release(&client->IDirectPlay8Client_iface); return hr; }
HRESULT DPNET_CreateDirectPlay8Peer(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, LPVOID *ppobj) { IDirectPlay8PeerImpl* Client; HRESULT ret; Client = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectPlay8PeerImpl)); *ppobj = NULL; if(Client == NULL) { WARN("Not enough memory\n"); return E_OUTOFMEMORY; } Client->IDirectPlay8Peer_iface.lpVtbl = &DirectPlay8Peer_Vtbl; Client->ref = 1; Client->usercontext = NULL; Client->msghandler = NULL; Client->flags = 0; init_dpn_sp_caps(&Client->spcaps); ret = IDirectPlay8Peer_QueryInterface(&Client->IDirectPlay8Peer_iface, riid, ppobj); IDirectPlay8Peer_Release(&Client->IDirectPlay8Peer_iface); return ret; }