ive got the peer working but it wont enum the service providers.
i found this on msdn http://msdn.microsoft.com/archive/de...numeratesp.asp
and came up with this
[pascal] Peer: IDirectPlay8Peer;
function DirectPlayMessageHandler(pvUserContext: Pointer; dwMessageType: DWORD; pMessage: Pointer): HRESULT; stdcall;
implementation
{$R *.dfm}
function DirectPlayMessageHandler(pvUserContext: Pointer; dwMessageType: DWORD; pMessage: Pointer): HRESULT;
Begin
end;
procedure TForm1.FormCreate(Sender: TObject);
var
pdnSPInfo: PDPN_SERVICE_PROVIDER_INFO;
pdnSPInfoEnum: PDPN_SERVICE_PROVIDER_INFO;
dwItems: DWord;
dwSize: DWord;
i: DWord;
strBuf: PAnsiChar;
begin
pdnSPInfo := nil;
pdnSPInfoEnum := nil;
dwItems := 0;
dwSize := 0;
i := 0;
strBuf := nil;
CoCreateInstance(CLSID_DirectPlay8Peer, nil, CLSCTX_INPROC_SERVER, IID_IDirectPlay8Peer, peer);
Peer.Initialize(nil, @DirectPlayMessageHandler, 0);
//Determine the required buffer size
Peer.EnumServiceProviders(nil, nil, nil, dwSize, dwItems, 0);
//pdnSPInfo = (DPN_SERVICE_PROVIDER_INFO*) new BYTE[dwSize]; ??
//Fill the buffer with service provider information
Peer.EnumServiceProviders(nil, nil, pdnSPInfo, dwSize, dwItems, 0);
// Print the provider descriptions
pdnSPInfoEnum := pdnSPInfo;
for i:=0 to dwItems {-1} do
Begin
try
DXUtil_ConvertAnsiStringToGenericCch(strBuf, @pdnSPInfoEnum.pwszName, 256);
ListBox1.Items.Add(strBuf);
Inc(pdnSPInfoEnum);
except
Break;
end;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Peer.Close(0);
Peer._Release;
end;[/pascal]
but it doesnt work also causes access violations on closing the app
Bookmarks