B
Danke für den Tipp, aber mit Threads hantiere ich noch gar nicht rum. Dennoch hab ich meinen Fehler gefunden.
Scheinbar darf man bei EnumHosts() dem Parameter pdpaddrDeviceInfo keinen Port mitgeben. Da man ein entsprechendes IDirectPlay8Address Object sowohl für Host() als auch für EnumHosts() braucht biete es sich ja an, dieses in einer Create-Funktion zu erzeugen. Dabei muss man aber Unterscheiden, ob das Object für Host() oder EnumHosts() erszeugt werden soll:
IDirectPlay8Address * dp8DeviceAddress=NULL;
...
HRESULT CreateDeviceAddress(bool isHost)
{
HRESULT hr;
if (dp8DeviceAddress)
{
dp8DeviceAddress->Release();
dp8DeviceAddress=NULL;
}
if(FAILED(hr=CoCreateInstance(CLSID_DirectPlay8Address, NULL, CLSCTX_INPROC_SERVER, IID_IDirectPlay8Address, (LPVOID*) &dp8DeviceAddress)))
{
MessageBox(0, L"Failed Creating the IDirectPlay8DeviceAddress Object", L"CreateDeviceAddress()", 0);
return hr;
}
if(FAILED(hr=dp8DeviceAddress->SetSP(&CLSID_DP8SP_TCPIP )))
{
MessageBox(0, L"Failed Setting the SP for dp8DeviceAddress", L"CreateDeviceAddress()",0);
return hr;
}
if(isHost)
{
if(FAILED(hr=dp8DeviceAddress->AddComponent(DPNA_KEY_PORT, &LocalPort, sizeof(DWORD), DPNA_DATATYPE_DWORD)))
{
MessageBox(0, L"Failed Setting the Port Numberfor dp8DeviceAdress", L"CreateDeviceAddress()", 0);
return hr;
}
}
return S_OK;
}
Mann, was ein sch**ss Fehler,...
Biff