hr = IDirectPlay8Address_SetSP(localaddr, &GUID_NULL);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IDirectPlay8Address_SetSP(localaddr, &IID_Random);
ok(hr == S_OK, "got 0x%08x\n", hr);
That’s a step forward, but I also meant that you should call GetSP after setting GUID_NULL manually.
+DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
Why do you have to define this? (I really don’t know; It may be correct, or maybe you just need #define INITGUID, or something else.)
static HRESULT WINAPI IDirectPlay8AddressImpl_SetUserData(IDirectPlay8Address *iface, @@ -313,6 +323,8 @@ HRESULT DPNET_CreateDirectPlay8Address(LPCLASSFACTORY iface, LPUNKNOWN punkOuter return E_OUTOFMEMORY; } client->IDirectPlay8Address_iface.lpVtbl = &DirectPlay8Address_Vtbl;
- client->SP_guid = GUID_NULL;
- client->init = FALSE; client->ref = 0; /* will be inited with QueryInterface */ return IDirectPlay8AddressImpl_QueryInterface (&client->IDirectPlay8Address_iface, riid, ppobj);
}
You shouldn’t have to set client->init = FALSE because you allocate client with HEAP_ZERO_MEMORY. If you prefer to set it for clarity that’s ok with me.
The same applies to SP_guid, for two reasons: First, it’s already initialized to zeroes, and you’re not reading it unless client->init is set to TRUE, which only happens after a successful SetSP call.
IMHO you can also correct the indentation in this function, but I’ll leave the decision up to you.
Cheers, Stefan