41 if(
This->comp_count ==
This->comp_array_size)
51 This->comp_array_size *= 2;
71 IUnknown_AddRef(iface);
102 for(
i=0;
i <
This->comp_count;
i++)
134 GE(CLSID_DP8SP_TCPIP),
135 GE(CLSID_DP8SP_SERIAL),
136 GE(CLSID_DP8SP_MODEM)
140 if (!
id)
return "(null)";
153 WCHAR *pwszSourceURL)
164 TRACE(
"(%p, %s): stub\n",
This, pszSourceURL);
169 IDirectPlay8Address **ppdpaNewAddress)
172 IDirectPlay8Address *
dup;
175 TRACE(
"(%p, %p)\n",
This, ppdpaNewAddress);
189 for(
i=0;
i <
This->comp_count;
i++)
221 *ppdpaNewAddress =
dup;
228 IDirectPlay8Address *pdpaAddress)
231 TRACE(
"(%p, %p): stub\n",
This, pdpaAddress);
236 IDirectPlay8Address *pdpaAddress)
239 TRACE(
"(%p, %p): stub\n",
This, pdpaAddress);
263 for(
i=0;
i <
This->comp_count;
i++)
267 if (position)
buffer[position++] =
';';
273 L"%s=%%7B%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X%%7D",
275 entry->data.guid.Data4[0],
entry->data.guid.Data4[1],
entry->data.guid.Data4[2],
276 entry->data.guid.Data4[3],
entry->data.guid.Data4[4],
entry->data.guid.Data4[5],
277 entry->data.guid.Data4[6],
entry->data.guid.Data4[7] );
343 TRACE(
"(%p, %p)\n", iface, pguidSP);
351 *pguidSP =
This->SP_guid;
356 void *pvUserData,
DWORD *pdwBufferSize)
364 const GUID *
const pguidSP)
374 This->SP_guid = *pguidSP;
382 const void *
const pvUserData,
const DWORD dwDataSize)
390 DWORD *pdwNumComponents)
395 if(!pdwNumComponents)
398 *pdwNumComponents =
This->comp_count;
404 const WCHAR *
const pwszName,
void *pvBuffer,
DWORD *pdwBufferSize,
DWORD *pdwDataType)
410 TRACE(
"(%p)->(%s %p %p %p)\n",
This,
debugstr_w(pwszName), pvBuffer, pdwBufferSize, pdwDataType);
412 if(!pwszName || !pdwBufferSize || !pdwDataType || (!pvBuffer && *pdwBufferSize))
415 for(
i=0;
i <
This->comp_count;
i++)
423 if(*pdwBufferSize < entry->
size)
425 *pdwBufferSize =
entry->size;
429 *pdwBufferSize =
entry->size;
430 *pdwDataType =
entry->type;
459 const DWORD dwComponentID,
WCHAR *pwszName,
DWORD *pdwNameLen,
void *pvBuffer,
466 TRACE(
"(%p)->(%lu %p %p %p %p %p)\n",
This, dwComponentID, pwszName, pdwNameLen, pvBuffer, pdwBufferSize, pdwDataType);
468 if(!pdwNameLen || !pdwBufferSize || !pdwDataType)
470 WARN(
"Invalid buffer (%p, %p, %p)\n", pdwNameLen, pdwBufferSize, pdwDataType);
474 if(dwComponentID >
This->comp_count)
476 WARN(
"dwComponentID out of range\n");
483 if(*pdwBufferSize < entry->
size || *pdwNameLen < namesize)
485 WARN(
"Buffer too small\n");
487 *pdwNameLen = namesize + 1;
488 *pdwBufferSize =
entry->size;
489 *pdwDataType =
entry->type;
493 if(!pwszName || !pvBuffer)
495 WARN(
"Invalid buffer (%p, %p)\n", pwszName, pvBuffer);
501 *pdwNameLen = namesize + 1;
502 *pdwBufferSize =
entry->size;
503 *pdwDataType =
entry->type;
528 const WCHAR *
const pwszName,
const void*
const lpvData,
const DWORD dwDataSize,
529 const DWORD dwDataType)
536 TRACE(
"(%p, %s, %p, %lu, %lx)\n",
This,
debugstr_w(pwszName), lpvData, dwDataSize, dwDataType);
544 if (
sizeof(
DWORD) != dwDataSize)
546 WARN(
"Invalid DWORD size, returning DPNERR_INVALIDPARAM\n");
551 if (
sizeof(
GUID) != dwDataSize)
553 WARN(
"Invalid GUID size, returning DPNERR_INVALIDPARAM\n");
560 WARN(
"Invalid STRING size, returning DPNERR_INVALIDPARAM\n");
565 if ((
strlen((
const CHAR*)lpvData)+1) != dwDataSize)
567 WARN(
"Invalid ANSI size, returning DPNERR_INVALIDPARAM\n");
573 for(
i=0;
i <
This->comp_count;
i++)
619 TRACE(
"(%p, %lu): DWORD Type -> %lu\n", lpvData, dwDataSize, *(
const DWORD*) lpvData);
631 TRACE(
"(%p, %lu): ANSI STRING Type -> %s\n", lpvData, dwDataSize, (
const CHAR*) lpvData);
636 TRACE(
"(%p, %lu): BINARY Type\n", lpvData, dwDataSize);
640 entry->type = dwDataType;
641 entry->size = dwDataSize;
653 const GUID *
const devGuid)
661 void *pvAddress,
DWORD dwDataSize)
709 client->comp_array_size = 4;
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static HRESULT WINAPI IDirectPlay8AddressImpl_SetSP(IDirectPlay8Address *iface, const GUID *const pguidSP)
static HRESULT WINAPI IDirectPlay8AddressImpl_Duplicate(IDirectPlay8Address *iface, IDirectPlay8Address **ppdpaNewAddress)
static IDirectPlay8AddressImpl * impl_from_IDirectPlay8Address(IDirectPlay8Address *iface)
static HRESULT WINAPI IDirectPlay8AddressImpl_BuildFromURLW(IDirectPlay8Address *iface, WCHAR *pwszSourceURL)
static const IDirectPlay8AddressVtbl DirectPlay8Address_Vtbl
static ULONG WINAPI IDirectPlay8AddressImpl_AddRef(IDirectPlay8Address *iface)
static const char * debugstr_SP(const GUID *id)
static HRESULT WINAPI IDirectPlay8AddressImpl_GetUserData(IDirectPlay8Address *iface, void *pvUserData, DWORD *pdwBufferSize)
static ULONG WINAPI IDirectPlay8AddressImpl_Release(IDirectPlay8Address *iface)
static BOOL add_component(IDirectPlay8AddressImpl *This, struct component *item)
static HRESULT WINAPI IDirectPlay8AddressImpl_GetComponentByName(IDirectPlay8Address *iface, const WCHAR *const pwszName, void *pvBuffer, DWORD *pdwBufferSize, DWORD *pdwDataType)
static HRESULT WINAPI IDirectPlay8AddressImpl_IsEqual(IDirectPlay8Address *iface, IDirectPlay8Address *pdpaAddress)
static HRESULT WINAPI IDirectPlay8AddressImpl_AddComponent(IDirectPlay8Address *iface, const WCHAR *const pwszName, const void *const lpvData, const DWORD dwDataSize, const DWORD dwDataType)
static HRESULT WINAPI IDirectPlay8AddressImpl_SetEqual(IDirectPlay8Address *iface, IDirectPlay8Address *pdpaAddress)
static HRESULT WINAPI IDirectPlay8AddressImpl_SetDevice(IDirectPlay8Address *iface, const GUID *const devGuid)
static HRESULT WINAPI IDirectPlay8AddressImpl_QueryInterface(IDirectPlay8Address *iface, REFIID riid, void **ppv)
static HRESULT WINAPI IDirectPlay8AddressImpl_GetDevice(IDirectPlay8Address *iface, GUID *pDevGuid)
static HRESULT WINAPI IDirectPlay8AddressImpl_BuildFromDirectPlay4Address(IDirectPlay8Address *iface, void *pvAddress, DWORD dwDataSize)
static HRESULT WINAPI IDirectPlay8AddressImpl_GetComponentByIndex(IDirectPlay8Address *iface, const DWORD dwComponentID, WCHAR *pwszName, DWORD *pdwNameLen, void *pvBuffer, DWORD *pdwBufferSize, DWORD *pdwDataType)
static HRESULT WINAPI IDirectPlay8AddressImpl_GetSP(IDirectPlay8Address *iface, GUID *pguidSP)
static HRESULT WINAPI IDirectPlay8AddressImpl_GetURLA(IDirectPlay8Address *iface, char *url, DWORD *length)
static HRESULT WINAPI IDirectPlay8AddressImpl_SetUserData(IDirectPlay8Address *iface, const void *const pvUserData, const DWORD dwDataSize)
static HRESULT WINAPI IDirectPlay8AddressImpl_Clear(IDirectPlay8Address *iface)
static HRESULT WINAPI IDirectPlay8AddressImpl_GetURLW(IDirectPlay8Address *iface, WCHAR *url, DWORD *length)
static HRESULT WINAPI IDirectPlay8AddressImpl_GetNumComponents(IDirectPlay8Address *iface, DWORD *pdwNumComponents)
static HRESULT WINAPI IDirectPlay8AddressImpl_BuildFromURLA(IDirectPlay8Address *iface, CHAR *pszSourceURL)
HRESULT DPNET_CreateDirectPlay8Address(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, LPVOID *ppobj)
#define WideCharToMultiByte
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
const struct sortguid * guids
_ACRTIMP size_t __cdecl strlen(const char *)
static char * strdup(const char *buf)
static wchar_t * wcsdup(const wchar_t *str)
#define DPNA_DATATYPE_STRING_ANSI
static const WCHAR DPNA_KEY_PROVIDER[]
#define DPNA_DATATYPE_GUID
#define IDirectPlay8Address_Release(p)
#define IDirectPlay8Address_GetURLW(p, a, b)
#define DPNA_DATATYPE_BINARY
#define IDirectPlay8Address_AddComponent(p, a, b, c, d)
#define DPNA_DATATYPE_DWORD
static const WCHAR DPNA_HEADER[]
#define DPNA_DATATYPE_STRING
#define DPNERR_INVALIDPARAM
#define DPNERR_INVALIDPOINTER
#define DPNERR_DOESNOTEXIST
#define DPNERR_BUFFERTOOSMALL
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
#define IsEqualGUID(rguid1, rguid2)
#define CONTAINING_RECORD(address, type, field)