mirror of
https://github.com/solemnwarning/directplay-lite
synced 2024-12-30 16:45:37 +01:00
Implement IDirectPlay8Peer::EnumServiceProviders()
This commit is contained in:
parent
2b1a0fb687
commit
c2a3b51c9d
@ -130,7 +130,57 @@ HRESULT DirectPlay8Peer::Initialize(PVOID CONST pvUserContext, CONST PFNDPNMESSA
|
|||||||
|
|
||||||
HRESULT DirectPlay8Peer::EnumServiceProviders(CONST GUID* CONST pguidServiceProvider, CONST GUID* CONST pguidApplication, DPN_SERVICE_PROVIDER_INFO* CONST pSPInfoBuffer, DWORD* CONST pcbEnumData, DWORD* CONST pcReturned, CONST DWORD dwFlags)
|
HRESULT DirectPlay8Peer::EnumServiceProviders(CONST GUID* CONST pguidServiceProvider, CONST GUID* CONST pguidApplication, DPN_SERVICE_PROVIDER_INFO* CONST pSPInfoBuffer, DWORD* CONST pcbEnumData, DWORD* CONST pcReturned, CONST DWORD dwFlags)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED("DirectPlay8Peer::EnumServiceProviders");
|
static const DPN_SERVICE_PROVIDER_INFO IP_INFO = { 0, CLSID_DP8SP_TCPIP, L"DirectPlay8 TCP/IP Service Provider", 0, 0 };
|
||||||
|
static const DPN_SERVICE_PROVIDER_INFO IPX_INFO = { 0, CLSID_DP8SP_IPX, L"DirectPlay8 IPX Service Provider", 0, 0 };
|
||||||
|
|
||||||
|
std::unique_lock<std::mutex> l(lock);
|
||||||
|
|
||||||
|
if(state == STATE_NEW)
|
||||||
|
{
|
||||||
|
return DPNERR_UNINITIALIZED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pguidServiceProvider == NULL)
|
||||||
|
{
|
||||||
|
if(*pcbEnumData < (sizeof(DPN_SERVICE_PROVIDER_INFO) * 2))
|
||||||
|
{
|
||||||
|
*pcbEnumData = sizeof(DPN_SERVICE_PROVIDER_INFO) * 2;
|
||||||
|
return DPNERR_BUFFERTOOSMALL;
|
||||||
|
}
|
||||||
|
|
||||||
|
pSPInfoBuffer[0] = IPX_INFO;
|
||||||
|
pSPInfoBuffer[1] = IP_INFO;
|
||||||
|
|
||||||
|
*pcbEnumData = sizeof(DPN_SERVICE_PROVIDER_INFO) * 2;
|
||||||
|
*pcReturned = 2;
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
else if(*pguidServiceProvider == CLSID_DP8SP_TCPIP || *pguidServiceProvider == CLSID_DP8SP_IPX)
|
||||||
|
{
|
||||||
|
if(*pcbEnumData < sizeof(DPN_SERVICE_PROVIDER_INFO))
|
||||||
|
{
|
||||||
|
*pcbEnumData = sizeof(DPN_SERVICE_PROVIDER_INFO);
|
||||||
|
return DPNERR_BUFFERTOOSMALL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(*pguidServiceProvider == CLSID_DP8SP_TCPIP)
|
||||||
|
{
|
||||||
|
pSPInfoBuffer[0] = IP_INFO;
|
||||||
|
}
|
||||||
|
else if(*pguidServiceProvider == CLSID_DP8SP_IPX)
|
||||||
|
{
|
||||||
|
pSPInfoBuffer[0] = IPX_INFO;
|
||||||
|
}
|
||||||
|
|
||||||
|
*pcbEnumData = sizeof(DPN_SERVICE_PROVIDER_INFO);
|
||||||
|
*pcReturned = 1;
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return DPNERR_DOESNOTEXIST;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT DirectPlay8Peer::CancelAsyncOperation(CONST DPNHANDLE hAsyncHandle, CONST DWORD dwFlags)
|
HRESULT DirectPlay8Peer::CancelAsyncOperation(CONST DPNHANDLE hAsyncHandle, CONST DWORD dwFlags)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user