88 FIXME(
"Should kill the msg thread\n" );
91 obj->lock.DebugInfo->Spare[0] = 0;
114 *
ppv = &
This->IDirectPlayLobby3_iface;
120 TRACE(
"(%p)->(IID_IDirectPlayLobby3A %p)\n",
This,
ppv );
121 *
ppv = &
This->IDirectPlayLobby3A_iface;
193 DWORD dwOpenFlags = 0;
194 DWORD dwConnSize = 0;
212 ERR(
"error creating interface for %s:%s.\n",
219 0,
NULL, &dwConnSize );
225 lpConn =
calloc( 1, dwConnSize );
234 0, lpConn, &dwConnSize );
257 dwOpenFlags |= lpConn->
dwFlags;
292 REFGUID guidSP,
REFGUID guidDataType,
const void *lpData,
DWORD dwDataSize,
void *lpAddress,
293 DWORD *lpdwAddressSize )
296 lpAddress, lpdwAddressSize,
TRUE );
300 REFGUID guidDataType,
const void *lpData,
DWORD dwDataSize,
void *lpAddress,
301 DWORD *lpdwAddressSize )
304 lpAddress, lpdwAddressSize,
FALSE );
314 BOOL bAnsiInterface )
316 const DWORD dwNumAddElements = 2;
319 TRACE(
"(%p)->(%p,%p,0x%08lx,%p,%p,%d)\n", guidSP, guidDataType, lpData, dwDataSize,
320 lpAddress, lpdwAddressSize, bAnsiInterface );
322 addressElements[ 0 ].
guidDataType = DPAID_ServiceProvider;
333 lpAddress, lpdwAddressSize, bAnsiInterface );
350 TRACE(
"(%p)->(%p,%p,0x%08lx,%p)\n",
This, lpEnumAddressCallback, lpAddress,
351 dwAddressSize, lpContext );
353 return DPL_EnumAddress( lpEnumAddressCallback, lpAddress, dwAddressSize, lpContext );
362 TRACE(
"(%p)->(%p,%p,0x%08lx,%p)\n",
This, lpEnumAddressCallback, lpAddress,
363 dwAddressSize, lpContext );
365 return DPL_EnumAddress( lpEnumAddressCallback, lpAddress, dwAddressSize, lpContext );
371 DWORD dwTotalSizeEnumerated = 0;
375 while ( dwTotalSizeEnumerated < dwAddressSize )
378 DWORD dwSizeThisEnumeration;
390 lpAddress = (
const BYTE*) lpAddress + dwSizeThisEnumeration;
391 dwTotalSizeEnumerated += dwSizeThisEnumeration;
410 LPCSTR searchSubKey =
"SOFTWARE\\Microsoft\\DirectPlay\\Service Providers";
411 DWORD dwIndex, sizeOfSubKeyName=50;
415 TRACE(
" (%p)->(%p,%p,%p,0x%08lx)\n",
This, lpEnumAddressTypeCallback, guidSP, lpContext,
dwFlags );
422 if( !lpEnumAddressTypeCallback )
437 ERR(
": no service providers?\n");
443 RegEnumKeyExA( hkResult, dwIndex, subKeyName, &sizeOfSubKeyName,
445 ++dwIndex, sizeOfSubKeyName=50 )
448 HKEY hkServiceProvider, hkServiceProviderAt;
449 GUID serviceProviderGUID;
450 DWORD returnTypeGUID, sizeOfReturnBuffer = 50;
452 char returnBuffer[51];
455 LPCSTR atKey =
"Address Types";
456 LPCSTR guidDataSubKey =
"Guid";
458 TRACE(
" this time through: %s\n", subKeyName );
464 ERR(
": what the heck is going on?\n" );
472 ERR(
": missing GUID registry data members\n" );
491 TRACE(
": No Address Types registry data sub key/members\n" );
497 RegEnumKeyExA( hkServiceProviderAt, dwAtIndex, atSubKey, &sizeOfSubKeyName,
499 ++dwAtIndex, sizeOfSubKeyName=50 )
501 TRACE(
"Found Address Type GUID %s\n", atSubKey );
509 if( !lpEnumAddressTypeCallback( &serviceProviderGUID, lpContext, 0 ) )
511 WARN(
"lpEnumCallback returning FALSE\n" );
543 FIXME(
"(%p)->(%p,%p,0x%08lx):stub\n",
This, lpEnumLocalAppCallback, lpContext,
dwFlags );
554 LPCSTR searchSubKey =
"SOFTWARE\\Microsoft\\DirectPlay\\Applications";
555 LPCSTR guidDataSubKey =
"Guid";
556 DWORD dwIndex, sizeOfSubKeyName=50;
560 TRACE(
"(%p)->(%p,%p,0x%08lx)\n",
This, lpEnumLocalAppCallback, lpContext,
dwFlags );
567 if( !lpEnumLocalAppCallback )
577 ERR(
": no service providers?\n");
584 ++dwIndex, sizeOfSubKeyName=50 )
587 HKEY hkServiceProvider;
588 GUID serviceProviderGUID;
589 DWORD returnTypeGUID, sizeOfReturnBuffer = 50;
590 char returnBuffer[51];
594 TRACE(
" this time through: %s\n", subKeyName );
600 ERR(
": what the heck is going on?\n" );
608 ERR(
": missing GUID registry data members\n" );
617 dplAppInfo.
dwSize =
sizeof( dplAppInfo );
623 memcpy( &
This->cbkeyhack, &hkServiceProvider,
sizeof( hkServiceProvider ) );
625 if( !lpEnumLocalAppCallback( &dplAppInfo, lpContext,
dwFlags ) )
649 DWORD dwAppID,
void *lpData,
DWORD *lpdwDataSize )
654 TRACE(
"(%p)->(0x%08lx,%p,%p)\n",
This, dwAppID, lpData, lpdwDataSize );
669 DWORD dwAppID,
void *lpData,
DWORD *lpdwDataSize )
674 TRACE(
"(%p)->(0x%08lx,%p,%p)\n",
This, dwAppID, lpData, lpdwDataSize );
697 DWORD *lpdwDataSize )
700 FIXME(
":stub %p %08lx %08lx %p %p %p\n",
This,
dwFlags, dwAppID, lpdwMessageFlags, lpData,
707 DWORD *lpdwDataSize )
710 FIXME(
":stub %p %08lx %08lx %p %p %p\n",
This,
dwFlags, dwAppID, lpdwMessageFlags, lpData,
736 char returnBuffer[200];
737 DWORD returnType, sizeOfReturnBuffer;
738 LPCSTR clSubKey =
"CommandLine";
739 LPCSTR cdSubKey =
"CurrentDirectory";
740 LPCSTR fileSubKey =
"File";
741 LPCSTR pathSubKey =
"Path";
745 sizeOfReturnBuffer = 200;
752 ERR(
": missing CommandLine registry data member\n" );
759 sizeOfReturnBuffer = 200;
765 ERR(
": missing CurrentDirectory registry data member\n" );
772 sizeOfReturnBuffer = 200;
778 ERR(
": missing File registry data member\n" );
785 sizeOfReturnBuffer = 200;
791 ERR(
": missing Path registry data member\n" );
809 HANDLE hAppStart = 0, hAppDeath = 0, hAppRead = 0;
812 s_attrib.
nLength =
sizeof( s_attrib );
821 hDestProcess, &hAppStart,
824 hDestProcess, &hAppDeath,
827 hDestProcess, &hAppRead,
831 if (*lphStart) {
CloseHandle(*lphStart); *lphStart = 0; }
832 if (*lphDeath) {
CloseHandle(*lphDeath); *lphDeath = 0; }
833 if (*lphRead) {
CloseHandle(*lphRead); *lphRead = 0; }
835 ERR(
"Unable to dup handles\n" );
840 hAppStart, hAppDeath, hAppRead ) )
866 DWORD dwSuspendCount;
867 HANDLE hStart, hDeath, hSettingRead;
869 TRACE(
"(%p)->(0x%08lx,%p,%p,%p)\n",
879 FIXME(
"Waiting lobby not being handled correctly\n" );
907 ZeroMemory( &startupInfo,
sizeof( startupInfo ) );
908 startupInfo.
cb =
sizeof( startupInfo );
911 ZeroMemory( &newProcessInfo,
sizeof( newProcessInfo ) );
926 ERR(
"Failed to create process for app %s\n",
appName );
943 ERR(
"Unable to create global application data for 0x%08lx\n",
959 &hStart, &hDeath, &hSettingRead );
974 ERR(
"ResumeThread failed with 0x%08lx\n", dwSuspendCount );
984 FIXME(
"(%p)->(0x%08lx,%p,%p,%p):stub\n",
This,
dwFlags, lpdwAppID, lpConn, hReceiveEvent );
1032 FIXME(
"Unlobbied app setting connections. Is this correct behavior?\n" );
1064 FIXME(
"Unlobbied app setting connections. Is this correct behavior?\n" );
1096 DWORD *lpdwAddressSize )
1103 DWORD *lpdwAddressSize )
1110 DWORD dwElementCount,
1113 BOOL bAnsiInterface )
1115 DWORD dwSizeRequired = 0;
1119 TRACE(
"(%p,0x%08lx,%p,%p)\n", lpElements, dwElementCount, lpAddress, lpdwAddressSize );
1122 if( ( lpElements ==
NULL ) ||
1123 ( dwElementCount == 0 )
1133 for ( dwElements = dwElementCount; dwElements > 0; --dwElements, ++lpElements )
1146 if( !bAnsiInterface )
1148 ERR(
"Ansi GUIDs used for unicode interface\n" );
1159 if( bAnsiInterface )
1161 ERR(
"Unicode GUIDs used for ansi interface\n" );
1165 FIXME(
"Right size for unicode interface?\n" );
1174 FIXME(
"Right size for unicode interface?\n" );
1184 if( ( lpAddress ==
NULL ) ||
1185 ( *lpdwAddressSize < dwSizeRequired )
1188 *lpdwAddressSize = dwSizeRequired;
1198 lpAddress = (
char *) lpAddress +
sizeof(
DPADDRESS );
1200 *(
LPDWORD)lpAddress = dwSizeRequired;
1201 lpAddress = (
char *) lpAddress +
sizeof(
DWORD );
1205 for( dwElements = dwElementCount, lpElements = lpOrigElements;
1207 --dwElements, ++lpElements )
1217 lpAddress = (
char *) lpAddress +
sizeof(
DPADDRESS );
1220 lpAddress = (
char *) lpAddress +
sizeof(
GUID );
1231 lpAddress = (
char *) lpAddress +
sizeof(
DPADDRESS );
1234 lpAddress = (
char *) lpAddress + lpElements->
dwDataSize;
1245 lpAddress = (
char *) lpAddress +
sizeof(
DPADDRESS );
1248 lpAddress = (
char *) lpAddress + lpElements->
dwDataSize *
sizeof(
WCHAR );
1256 lpAddress = (
char *) lpAddress +
sizeof(
DPADDRESS );
1259 lpAddress = (
char *) lpAddress +
sizeof(
WORD );
1267 lpAddress = (
char *) lpAddress +
sizeof(
DPADDRESS );
1270 lpAddress = (
char *) lpAddress +
sizeof(
DPADDRESS );
1413 obj->IDirectPlayLobby3_iface.lpVtbl = &
dpl3_vt;
1419 obj->lock.DebugInfo->Spare[0] = (
DWORD_PTR)(__FILE__
": IDirectPlayLobbyImpl.lock");
1437 TRACE(
"lpGUIDDSP=%p lplpDPL=%p lpUnk=%p lpData=%p dwDataSize=%08lx\n",
1438 lpGUIDDSP,lplpDPL,lpUnk,lpData,dwDataSize);
1443 if ( lpGUIDDSP || lpData || dwDataSize )
1452 ERR(
"Bad parameters!\n" );
1456 return dplobby_create( &IID_IDirectPlayLobbyA, (
void**)lplpDPL );
1466 TRACE(
"lpGUIDDSP=%p lplpDPL=%p lpUnk=%p lpData=%p dwDataSize=%08lx\n",
1467 lpGUIDDSP,lplpDPL,lpUnk,lpData,dwDataSize);
1472 if ( lpGUIDDSP || lpData || dwDataSize )
1475 ERR(
"Bad parameters!\n" );
1482 ERR(
"Bad parameters!\n" );
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
LONG WINAPI RegEnumKeyExA(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
#define GetCurrentProcess()
#define ERROR_NO_MORE_ITEMS
#define MultiByteToWideChar
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
DWORD WINAPI ResumeThread(IN HANDLE hThread)
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(const char *app_name, char *cmd_line, SECURITY_ATTRIBUTES *process_attr, SECURITY_ATTRIBUTES *thread_attr, BOOL inherit, DWORD flags, void *env, const char *cur_dir, STARTUPINFOA *startup_info, PROCESS_INFORMATION *info)
static char * strdup(const char *buf)
HRESULT dplay_create(REFIID riid, void **ppv)
#define DPERR_INVALIDOBJECT
#define IDirectPlayX_Open(p, a, b)
#define DPERR_BUFFERTOOSMALL
#define DPOPEN_RETURNSTATUS
#define DPERR_INVALIDFLAGS
struct IDirectPlay2 * LPDIRECTPLAY2
#define DPCONNECT_RETURNSTATUS
#define IDirectPlayX_InitializeConnection(p, a, b)
#define DPERR_INVALIDPARAMS
#define DPERR_OUTOFMEMORY
struct IDirectPlay2 IDirectPlay2A
#define DPERR_CANTCREATEPROCESS
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
static void *static void *static LPDIRECTPLAY * lplpDP
HRESULT DPLAYX_GetConnectionSettingsA(DWORD dwAppID, LPVOID lpData, LPDWORD lpdwDataSize)
BOOL DPLAYX_SetLobbyHandles(DWORD dwAppID, HANDLE hStart, HANDLE hDeath, HANDLE hConnRead)
BOOL DPLAYX_AnyLobbiesWaitingForConnSettings(void)
HRESULT DPLAYX_SetConnectionSettingsA(DWORD dwFlags, DWORD dwAppID, const DPLCONNECTION *lpConn)
BOOL DPLAYX_SetLobbyMsgThreadId(DWORD dwAppId, DWORD dwThreadId)
BOOL DPLAYX_CreateLobbyApplication(DWORD dwAppID)
BOOL DPLAYX_WaitForConnectionSettings(BOOL bWait)
HRESULT DPLAYX_SetConnectionSettingsW(DWORD dwFlags, DWORD dwAppID, const DPLCONNECTION *lpConn)
LPCSTR DPLAYX_HresultToString(HRESULT hr)
HRESULT DPLAYX_GetConnectionSettingsW(DWORD dwAppID, LPVOID lpData, LPDWORD lpdwDataSize)
DWORD CreateLobbyMessageReceptionThread(HANDLE hNotifyEvent, HANDLE hStart, HANDLE hDeath, HANDLE hConnRead)
#define DPQ_DELETEQ(head, field, type, df)
static HRESULT DPL_ConnectEx(IDirectPlayLobbyImpl *This, DWORD dwFlags, REFIID riid, void **lplpDP, IUnknown *pUnk)
static HRESULT WINAPI IDirectPlayLobby3Impl_QueryInterface(IDirectPlayLobby3 *iface, REFIID riid, void **ppv)
static ULONG WINAPI IDirectPlayLobby3AImpl_Release(IDirectPlayLobby3A *iface)
static const IDirectPlayLobby3Vtbl dpl3_vt
static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumAddressTypes(IDirectPlayLobby3A *iface, LPDPLENUMADDRESSTYPESCALLBACK lpEnumAddressTypeCallback, REFGUID guidSP, void *lpContext, DWORD dwFlags)
HRESULT WINAPI DirectPlayLobbyCreateW(GUID *lpGUIDDSP, IDirectPlayLobby **lplpDPL, IUnknown *lpUnk, void *lpData, DWORD dwDataSize)
static HRESULT WINAPI IDirectPlayLobby3AImpl_QueryInterface(IDirectPlayLobby3A *iface, REFIID riid, void **ppv)
static HRESULT WINAPI IDirectPlayLobby3Impl_EnumAddress(IDirectPlayLobby3 *iface, LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, const void *lpAddress, DWORD dwAddressSize, void *lpContext)
struct tagRunApplicationEnumStruct RunApplicationEnumStruct
static HRESULT WINAPI IDirectPlayLobby3AImpl_CreateAddress(IDirectPlayLobby3A *iface, REFGUID guidSP, REFGUID guidDataType, const void *lpData, DWORD dwDataSize, void *lpAddress, DWORD *lpdwAddressSize)
static HRESULT WINAPI IDirectPlayLobby3AImpl_RegisterApplication(IDirectPlayLobby3A *iface, DWORD flags, DPAPPLICATIONDESC *appdesc)
static HRESULT WINAPI IDirectPlayLobby3Impl_SetConnectionSettings(IDirectPlayLobby3 *iface, DWORD dwFlags, DWORD dwAppID, DPLCONNECTION *lpConn)
static HRESULT WINAPI IDirectPlayLobby3Impl_Connect(IDirectPlayLobby3 *iface, DWORD flags, IDirectPlay2 **dp, IUnknown *unk)
static HRESULT WINAPI IDirectPlayLobby3Impl_GetConnectionSettings(IDirectPlayLobby3 *iface, DWORD dwAppID, void *lpData, DWORD *lpdwDataSize)
static HRESULT WINAPI IDirectPlayLobby3AImpl_ConnectEx(IDirectPlayLobby3A *iface, DWORD dwFlags, REFIID riid, void **lplpDP, IUnknown *pUnk)
static HRESULT WINAPI IDirectPlayLobby3Impl_EnumAddressTypes(IDirectPlayLobby3 *iface, LPDPLENUMADDRESSTYPESCALLBACK enumaddrtypecb, REFGUID sp, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlayLobby3AImpl_UnregisterApplication(IDirectPlayLobby3A *iface, DWORD flags, REFGUID appdesc)
static HRESULT WINAPI IDirectPlayLobby3Impl_ConnectEx(IDirectPlayLobby3 *iface, DWORD dwFlags, REFIID riid, LPVOID *lplpDP, IUnknown *pUnk)
static HRESULT WINAPI IDirectPlayLobby3Impl_CreateAddress(IDirectPlayLobby3 *iface, REFGUID guidSP, REFGUID guidDataType, const void *lpData, DWORD dwDataSize, void *lpAddress, DWORD *lpdwAddressSize)
static ULONG WINAPI IDirectPlayLobby3Impl_AddRef(IDirectPlayLobby3 *iface)
static HRESULT WINAPI IDirectPlayLobby3AImpl_ReceiveLobbyMessage(IDirectPlayLobby3A *iface, DWORD dwFlags, DWORD dwAppID, DWORD *lpdwMessageFlags, void *lpData, DWORD *lpdwDataSize)
static HRESULT WINAPI IDirectPlayLobby3AImpl_SetLobbyMessageEvent(IDirectPlayLobby3A *iface, DWORD flags, DWORD appid, HANDLE event)
static ULONG WINAPI IDirectPlayLobby3AImpl_AddRef(IDirectPlayLobby3A *iface)
static BOOL CALLBACK RunApplicationA_EnumLocalApplications(LPCDPLAPPINFO lpAppInfo, LPVOID lpContext, DWORD dwFlags)
static HRESULT WINAPI IDirectPlayLobby3Impl_WaitForConnectionSettings(IDirectPlayLobby3 *iface, DWORD dwFlags)
static HRESULT WINAPI IDirectPlayLobby3AImpl_SetConnectionSettings(IDirectPlayLobby3A *iface, DWORD dwFlags, DWORD dwAppID, DPLCONNECTION *lpConn)
static HRESULT WINAPI IDirectPlayLobby3AImpl_CreateCompoundAddress(IDirectPlayLobby3A *iface, const DPCOMPOUNDADDRESSELEMENT *lpElements, DWORD dwElementCount, void *lpAddress, DWORD *lpdwAddressSize)
static IDirectPlayLobbyImpl * impl_from_IDirectPlayLobby3A(IDirectPlayLobby3A *iface)
HRESULT DPL_CreateCompoundAddress(LPCDPCOMPOUNDADDRESSELEMENT lpElements, DWORD dwElementCount, LPVOID lpAddress, LPDWORD lpdwAddressSize, BOOL bAnsiInterface)
static HRESULT WINAPI IDirectPlayLobby3Impl_EnumLocalApplications(IDirectPlayLobby3 *iface, LPDPLENUMLOCALAPPLICATIONSCALLBACK lpEnumLocalAppCallback, void *lpContext, DWORD dwFlags)
HRESULT DPL_EnumAddress(LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, LPCVOID lpAddress, DWORD dwAddressSize, LPVOID lpContext)
static HRESULT WINAPI IDirectPlayLobby3Impl_ReceiveLobbyMessage(IDirectPlayLobby3 *iface, DWORD dwFlags, DWORD dwAppID, DWORD *lpdwMessageFlags, void *lpData, DWORD *lpdwDataSize)
static HRESULT WINAPI IDirectPlayLobby3AImpl_GetConnectionSettings(IDirectPlayLobby3A *iface, DWORD dwAppID, void *lpData, DWORD *lpdwDataSize)
static HRESULT DPL_CreateAddress(REFGUID guidSP, REFGUID guidDataType, LPCVOID lpData, DWORD dwDataSize, LPVOID lpAddress, LPDWORD lpdwAddressSize, BOOL bAnsiInterface)
static HRESULT WINAPI IDirectPlayLobby3Impl_UnregisterApplication(IDirectPlayLobby3 *iface, DWORD flags, REFGUID appdesc)
static HRESULT WINAPI IDirectPlayLobby3Impl_CreateCompoundAddress(IDirectPlayLobby3 *iface, const DPCOMPOUNDADDRESSELEMENT *lpElements, DWORD dwElementCount, void *lpAddress, DWORD *lpdwAddressSize)
static HRESULT WINAPI IDirectPlayLobby3AImpl_RunApplication(IDirectPlayLobby3A *iface, DWORD dwFlags, DWORD *lpdwAppID, DPLCONNECTION *lpConn, HANDLE hReceiveEvent)
static IDirectPlayLobbyImpl * impl_from_IDirectPlayLobby3(IDirectPlayLobby3 *iface)
static HRESULT WINAPI IDirectPlayLobby3AImpl_Connect(IDirectPlayLobby3A *iface, DWORD flags, IDirectPlay2A **dp, IUnknown *unk)
static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumAddress(IDirectPlayLobby3A *iface, LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, const void *lpAddress, DWORD dwAddressSize, void *lpContext)
static HRESULT WINAPI IDirectPlayLobby3Impl_SendLobbyMessage(IDirectPlayLobby3 *iface, DWORD flags, DWORD appid, void *data, DWORD size)
HRESULT WINAPI DirectPlayLobbyCreateA(GUID *lpGUIDDSP, IDirectPlayLobbyA **lplpDPL, IUnknown *lpUnk, void *lpData, DWORD dwDataSize)
static HRESULT WINAPI IDirectPlayLobby3AImpl_EnumLocalApplications(IDirectPlayLobby3A *iface, LPDPLENUMLOCALAPPLICATIONSCALLBACK lpEnumLocalAppCallback, void *lpContext, DWORD dwFlags)
static const IDirectPlayLobby3Vtbl dpl3A_vt
static HRESULT WINAPI IDirectPlayLobby3Impl_RegisterApplication(IDirectPlayLobby3 *iface, DWORD flags, DPAPPLICATIONDESC *appdesc)
static HRESULT WINAPI IDirectPlayLobby3AImpl_WaitForConnectionSettings(IDirectPlayLobby3A *iface, DWORD dwFlags)
static void dplobby_destroy(IDirectPlayLobbyImpl *obj)
static BOOL DPL_CreateAndSetLobbyHandles(DWORD dwDestProcessId, HANDLE hDestProcess, LPHANDLE lphStart, LPHANDLE lphDeath, LPHANDLE lphRead)
static HRESULT WINAPI IDirectPlayLobby3Impl_SetLobbyMessageEvent(IDirectPlayLobby3 *iface, DWORD flags, DWORD appid, HANDLE event)
struct tagRunApplicationEnumStruct * lpRunApplicationEnumStruct
static HRESULT WINAPI IDirectPlayLobby3Impl_RunApplication(IDirectPlayLobby3 *iface, DWORD dwFlags, DWORD *lpdwAppID, DPLCONNECTION *lpConn, HANDLE hReceiveEvent)
static ULONG WINAPI IDirectPlayLobby3Impl_Release(IDirectPlayLobby3 *iface)
static HRESULT WINAPI IDirectPlayLobby3AImpl_SendLobbyMessage(IDirectPlayLobby3A *iface, DWORD flags, DWORD appid, void *data, DWORD size)
HRESULT dplobby_create(REFIID riid, void **ppv)
struct tagDPADDRESS DPADDRESS
#define IDirectPlayLobby_Release(p)
BOOL(CALLBACK * LPDPLENUMADDRESSTYPESCALLBACK)(REFGUID guidDataType, LPVOID lpContext, DWORD dwFlags)
#define IDirectPlayLobby_QueryInterface(p, a, b)
#define IDirectPlayLobby_GetConnectionSettings(p, a, b, c)
BOOL(CALLBACK * LPDPLENUMLOCALAPPLICATIONSCALLBACK)(LPCDPLAPPINFO lpAppInfo, LPVOID lpContext, DWORD dwFlags)
BOOL(CALLBACK * LPDPENUMADDRESSCALLBACK)(REFGUID guidDataType, DWORD dwDataSize, LPCVOID lpData, LPVOID lpContext)
#define IDirectPlayLobby_EnumLocalApplications(p, a, b, c)
struct IDirectPlayLobby3 IDirectPlayLobby3A
#define IDirectPlayLobby_SetConnectionSettings(p, a, b, c)
#define IDirectPlayLobby_EnumAddressTypes(p, a, b, c, d)
#define IDirectPlayLobby_ConnectEx(p, a, b, c, d)
struct IDirectPlayLobby IDirectPlayLobbyA
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
const char * appName(const char *argv0)
#define memcpy(s1, s2, n)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define IsEqualGUID(rguid1, rguid2)
static const char *static const char const char DWORD void DWORD *static const char const char DWORD void DWORD *static const char DWORD DWORD void * buff
IDirectPlayLobby3 IDirectPlayLobby3_iface
IDirectPlayLobby3A IDirectPlayLobby3A_iface
LPVOID lpSecurityDescriptor
LPDPSESSIONDESC2 lpSessionDesc
IDirectPlayLobbyImpl * This
LPSTR lpszCurrentDirectory
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
#define CONTAINING_RECORD(address, type, field)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
DWORD WINAPI GetCurrentProcessId(void)
#define CREATE_DEFAULT_ERROR_MODE
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define CREATE_NEW_CONSOLE
#define CLASS_E_NOAGGREGATION
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
#define HKEY_LOCAL_MACHINE
#define DUPLICATE_SAME_ACCESS