mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2024-11-23 11:15:34 +08:00
* change return type of all client functions from bool
to steam_bool
to avoid inconsistency problem in the client library
* implement missing client functions - `Breakpad_SteamSendMiniDump()` - `Steam_IsKnownInterface()` - `Steam_NotifyMissingInterface()`
This commit is contained in:
parent
f8c18b52e2
commit
4b9f88d8ec
228
dll/client_known_interfaces.cpp
Normal file
228
dll/client_known_interfaces.cpp
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
#include "dll/client_known_interfaces.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
the client function Steam_IsKnownInterface() accesses a structure which has this layout:
|
||||||
|
|
||||||
|
typedef struct struct_known_interfaces {
|
||||||
|
void *unknown_function_ptr;
|
||||||
|
const char *name; // ex: "STEAMAPPLIST_INTERFACE_VERSION001"
|
||||||
|
const char *family; // ex: "AppList"
|
||||||
|
struct_known_interfaces *previous_node;
|
||||||
|
};
|
||||||
|
|
||||||
|
this is a dump of the `name` field when running this function from a debugger
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern const std::unordered_set<std::string> client_known_interfaces = {
|
||||||
|
"SteamAppDisableUpdate001",
|
||||||
|
"STEAMAPPLIST_INTERFACE_VERSION001",
|
||||||
|
"SteamApps001",
|
||||||
|
"STEAMAPPS_INTERFACE_VERSION001",
|
||||||
|
"STEAMAPPS_INTERFACE_VERSION002",
|
||||||
|
"STEAMAPPS_INTERFACE_VERSION003",
|
||||||
|
"STEAMAPPS_INTERFACE_VERSION004",
|
||||||
|
"STEAMAPPS_INTERFACE_VERSION005",
|
||||||
|
"STEAMAPPS_INTERFACE_VERSION006",
|
||||||
|
"STEAMAPPS_INTERFACE_VERSION007",
|
||||||
|
"STEAMAPPS_INTERFACE_VERSION008",
|
||||||
|
"STEAMAPPTICKET_INTERFACE_VERSION001",
|
||||||
|
"SteamBilling002",
|
||||||
|
"STEAMCHAT_INTERFACE_VERSION003",
|
||||||
|
"SteamController003",
|
||||||
|
"SteamController004",
|
||||||
|
"SteamController005",
|
||||||
|
"SteamController006",
|
||||||
|
"SteamController007",
|
||||||
|
"SteamController008",
|
||||||
|
"STEAMCONTROLLER_INTERFACE_VERSION",
|
||||||
|
"SteamFriends001",
|
||||||
|
"SteamFriends002",
|
||||||
|
"SteamFriends003",
|
||||||
|
"SteamFriends004",
|
||||||
|
"SteamFriends005",
|
||||||
|
"SteamFriends006",
|
||||||
|
"SteamFriends007",
|
||||||
|
"SteamFriends008",
|
||||||
|
"SteamFriends009",
|
||||||
|
"SteamFriends010",
|
||||||
|
"SteamFriends011",
|
||||||
|
"SteamFriends012",
|
||||||
|
"SteamFriends013",
|
||||||
|
"SteamFriends014",
|
||||||
|
"SteamFriends015",
|
||||||
|
"SteamFriends016",
|
||||||
|
"SteamFriends017",
|
||||||
|
"SteamGameCoordinator001",
|
||||||
|
"SteamGameServer002",
|
||||||
|
"SteamGameServer003",
|
||||||
|
"SteamGameServer004",
|
||||||
|
"SteamGameServer005",
|
||||||
|
"SteamGameServer006",
|
||||||
|
"SteamGameServer007",
|
||||||
|
"SteamGameServer008",
|
||||||
|
"SteamGameServer009",
|
||||||
|
"SteamGameServer010",
|
||||||
|
"SteamGameServer011",
|
||||||
|
"SteamGameServer012",
|
||||||
|
"SteamGameServer013",
|
||||||
|
"SteamGameServer014",
|
||||||
|
"SteamGameServer015",
|
||||||
|
"SteamGameServerStats001",
|
||||||
|
"SteamGameStats001",
|
||||||
|
"STEAMHTMLSURFACE_INTERFACE_VERSION_001",
|
||||||
|
"STEAMHTMLSURFACE_INTERFACE_VERSION_002",
|
||||||
|
"STEAMHTMLSURFACE_INTERFACE_VERSION_003",
|
||||||
|
"STEAMHTMLSURFACE_INTERFACE_VERSION_004",
|
||||||
|
"STEAMHTMLSURFACE_INTERFACE_VERSION_005",
|
||||||
|
"STEAMHTTP_INTERFACE_VERSION001",
|
||||||
|
"STEAMHTTP_INTERFACE_VERSION002",
|
||||||
|
"STEAMHTTP_INTERFACE_VERSION003",
|
||||||
|
"SteamInput001",
|
||||||
|
"SteamInput002",
|
||||||
|
"SteamInput003",
|
||||||
|
"SteamInput004",
|
||||||
|
"SteamInput005",
|
||||||
|
"SteamInput006",
|
||||||
|
"STEAMINVENTORY_INTERFACE_V001",
|
||||||
|
"STEAMINVENTORY_INTERFACE_V002",
|
||||||
|
"STEAMINVENTORY_INTERFACE_V003",
|
||||||
|
"SteamMasterServerUpdater001",
|
||||||
|
"SteamMatchGameSearch001",
|
||||||
|
"SteamMatchMaking001",
|
||||||
|
"SteamMatchMaking002",
|
||||||
|
"SteamMatchMaking003",
|
||||||
|
"SteamMatchMaking004",
|
||||||
|
"SteamMatchMaking005",
|
||||||
|
"SteamMatchMaking006",
|
||||||
|
"SteamMatchMaking007",
|
||||||
|
"SteamMatchMaking008",
|
||||||
|
"SteamMatchMaking009",
|
||||||
|
"SteamMatchMakingServers001",
|
||||||
|
"SteamMatchMakingServers002",
|
||||||
|
"STEAMMUSIC_INTERFACE_VERSION001",
|
||||||
|
"STEAMMUSICREMOTE_INTERFACE_VERSION001",
|
||||||
|
"SteamNetworking001",
|
||||||
|
"SteamNetworking002",
|
||||||
|
"SteamNetworking003",
|
||||||
|
"SteamNetworking004",
|
||||||
|
"SteamNetworking005",
|
||||||
|
"SteamNetworking006",
|
||||||
|
"SteamNetworkingMessages002",
|
||||||
|
"SteamNetworkingSockets002",
|
||||||
|
"SteamNetworkingSockets003",
|
||||||
|
"SteamNetworkingSockets004",
|
||||||
|
"SteamNetworkingSockets005",
|
||||||
|
"SteamNetworkingSockets006",
|
||||||
|
"SteamNetworkingSockets008",
|
||||||
|
"SteamNetworkingSockets009",
|
||||||
|
"SteamNetworkingSockets010",
|
||||||
|
"SteamNetworkingSockets011",
|
||||||
|
"SteamNetworkingSockets012",
|
||||||
|
"SteamNetworkingSocketsSerialized001",
|
||||||
|
"SteamNetworkingSocketsSerialized002",
|
||||||
|
"SteamNetworkingSocketsSerialized003",
|
||||||
|
"SteamNetworkingSocketsSerialized004",
|
||||||
|
"SteamNetworkingSocketsSerialized005",
|
||||||
|
"SteamNetworkingUtils001",
|
||||||
|
"SteamNetworkingUtils002",
|
||||||
|
"SteamNetworkingUtils003",
|
||||||
|
"SteamNetworkingUtils004",
|
||||||
|
"STEAMPARENTALSETTINGS_INTERFACE_VERSION001",
|
||||||
|
"SteamParties001",
|
||||||
|
"SteamParties002",
|
||||||
|
"STEAMREMOTEPLAY_INTERFACE_VERSION001",
|
||||||
|
"STEAMREMOTEPLAY_INTERFACE_VERSION002",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION001",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION002",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION003",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION004",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION005",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION006",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION007",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION008",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION009",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION010",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION011",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION012",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION013",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION014",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION015",
|
||||||
|
"STEAMREMOTESTORAGE_INTERFACE_VERSION016",
|
||||||
|
"STEAMSCREENSHOTS_INTERFACE_VERSION001",
|
||||||
|
"STEAMSCREENSHOTS_INTERFACE_VERSION002",
|
||||||
|
"STEAMSCREENSHOTS_INTERFACE_VERSION003",
|
||||||
|
"SteamStreamLauncher001",
|
||||||
|
"STEAMTIMELINE_INTERFACE_V001",
|
||||||
|
"STEAMTV_INTERFACE_V001",
|
||||||
|
"STEAMTV_INTERFACE_V002",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION001",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION002",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION003",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION004",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION005",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION006",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION007",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION008",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION009",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION010",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION011",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION012",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION013",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION014",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION015",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION016",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION017",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION018",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION019",
|
||||||
|
"STEAMUGC_INTERFACE_VERSION020",
|
||||||
|
"STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001",
|
||||||
|
"SteamUser004",
|
||||||
|
"SteamUser005",
|
||||||
|
"SteamUser006",
|
||||||
|
"SteamUser007",
|
||||||
|
"SteamUser008",
|
||||||
|
"SteamUser009",
|
||||||
|
"SteamUser010",
|
||||||
|
"SteamUser011",
|
||||||
|
"SteamUser012",
|
||||||
|
"SteamUser013",
|
||||||
|
"SteamUser014",
|
||||||
|
"SteamUser015",
|
||||||
|
"SteamUser016",
|
||||||
|
"SteamUser017",
|
||||||
|
"SteamUser018",
|
||||||
|
"SteamUser019",
|
||||||
|
"SteamUser020",
|
||||||
|
"SteamUser021",
|
||||||
|
"SteamUser022",
|
||||||
|
"SteamUser023",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION001",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION002",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION003",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION004",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION005",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION006",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION007",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION008",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION009",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION010",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION011",
|
||||||
|
"STEAMUSERSTATS_INTERFACE_VERSION012",
|
||||||
|
"SteamUtils001",
|
||||||
|
"SteamUtils002",
|
||||||
|
"SteamUtils003",
|
||||||
|
"SteamUtils004",
|
||||||
|
"SteamUtils005",
|
||||||
|
"SteamUtils006",
|
||||||
|
"SteamUtils007",
|
||||||
|
"SteamUtils008",
|
||||||
|
"SteamUtils009",
|
||||||
|
"SteamUtils010",
|
||||||
|
"STEAMVIDEO_INTERFACE_V001",
|
||||||
|
"STEAMVIDEO_INTERFACE_V002",
|
||||||
|
"STEAMVIDEO_INTERFACE_V003",
|
||||||
|
"STEAMVIDEO_INTERFACE_V004",
|
||||||
|
"STEAMVIDEO_INTERFACE_V005",
|
||||||
|
"STEAMVIDEO_INTERFACE_V006",
|
||||||
|
"STEAMVIDEO_INTERFACE_V007",
|
||||||
|
};
|
63
dll/dll.cpp
63
dll/dll.cpp
@ -18,6 +18,7 @@
|
|||||||
#define STEAM_API_FUNCTIONS_IMPL
|
#define STEAM_API_FUNCTIONS_IMPL
|
||||||
#include "dll/dll.h"
|
#include "dll/dll.h"
|
||||||
#include "dll/settings_parser.h"
|
#include "dll/settings_parser.h"
|
||||||
|
#include "dll/client_known_interfaces.h"
|
||||||
|
|
||||||
|
|
||||||
static char old_client[128] = STEAMCLIENT_INTERFACE_VERSION; //"SteamClient017";
|
static char old_client[128] = STEAMCLIENT_INTERFACE_VERSION; //"SteamClient017";
|
||||||
@ -1320,7 +1321,7 @@ STEAMCLIENT_API steam_bool Steam_BGetCallback( HSteamPipe hSteamPipe, CallbackMs
|
|||||||
|
|
||||||
STEAMCLIENT_API void Steam_FreeLastCallback( HSteamPipe hSteamPipe )
|
STEAMCLIENT_API void Steam_FreeLastCallback( HSteamPipe hSteamPipe )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG("Steam_FreeLastCallback %i", hSteamPipe);
|
PRINT_DEBUG("%i", hSteamPipe);
|
||||||
SteamAPI_ManualDispatch_FreeLastCallback( hSteamPipe );
|
SteamAPI_ManualDispatch_FreeLastCallback( hSteamPipe );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1330,7 +1331,7 @@ STEAMCLIENT_API steam_bool Steam_GetAPICallResult( HSteamPipe hSteamPipe, SteamA
|
|||||||
return SteamAPI_ManualDispatch_GetAPICallResult(hSteamPipe, hSteamAPICall, pCallback, cubCallback, iCallbackExpected, pbFailed);
|
return SteamAPI_ManualDispatch_GetAPICallResult(hSteamPipe, hSteamAPICall, pCallback, cubCallback, iCallbackExpected, pbFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API void *CreateInterface( const char *pName, int *pReturnCode )
|
STEAMCLIENT_API void* CreateInterface( const char *pName, int *pReturnCode )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG("%s %p", pName, pReturnCode);
|
PRINT_DEBUG("%s %p", pName, pReturnCode);
|
||||||
auto ptr = create_client_interface(pName);
|
auto ptr = create_client_interface(pName);
|
||||||
@ -1347,6 +1348,11 @@ STEAMCLIENT_API void Breakpad_SteamMiniDumpInit( uint32 a, const char *b, const
|
|||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STEAMCLIENT_API void Breakpad_SteamSendMiniDump( void *a, uint32 b )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API void Breakpad_SteamSetAppID( uint32 unAppID )
|
STEAMCLIENT_API void Breakpad_SteamSetAppID( uint32 unAppID )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
@ -1369,19 +1375,19 @@ STEAMCLIENT_API void Breakpad_SteamWriteMiniDumpUsingExceptionInfoWithBuildId( i
|
|||||||
PRINT_DEBUG(" app is writing a crash dump! [XXXXXXXXXXXXXXXXXXXXXXXXXXX]");
|
PRINT_DEBUG(" app is writing a crash dump! [XXXXXXXXXXXXXXXXXXXXXXXXXXX]");
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_BConnected( HSteamUser hUser, HSteamPipe hSteamPipe )
|
STEAMCLIENT_API steam_bool Steam_BConnected( HSteamUser hUser, HSteamPipe hSteamPipe )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_ENTRY();
|
PRINT_DEBUG_ENTRY();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_BLoggedOn( HSteamUser hUser, HSteamPipe hSteamPipe )
|
STEAMCLIENT_API steam_bool Steam_BLoggedOn( HSteamUser hUser, HSteamPipe hSteamPipe )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_ENTRY();
|
PRINT_DEBUG_ENTRY();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_BReleaseSteamPipe( HSteamPipe hSteamPipe )
|
STEAMCLIENT_API steam_bool Steam_BReleaseSteamPipe( HSteamPipe hSteamPipe )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
@ -1411,19 +1417,19 @@ STEAMCLIENT_API HSteamPipe Steam_CreateSteamPipe()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_GSBLoggedOn( void *phSteamHandle )
|
STEAMCLIENT_API steam_bool Steam_GSBLoggedOn( void *phSteamHandle )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_GSBSecure( void *phSteamHandle)
|
STEAMCLIENT_API steam_bool Steam_GSBSecure( void *phSteamHandle)
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_GSGetSteam2GetEncryptionKeyToSendToNewClient( void *phSteamHandle, void *pvEncryptionKey, uint32 *pcbEncryptionKey, uint32 cbMaxEncryptionKey )
|
STEAMCLIENT_API steam_bool Steam_GSGetSteam2GetEncryptionKeyToSendToNewClient( void *phSteamHandle, void *pvEncryptionKey, uint32 *pcbEncryptionKey, uint32 cbMaxEncryptionKey )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
@ -1445,37 +1451,37 @@ STEAMCLIENT_API void Steam_GSLogOn( void *phSteamHandle )
|
|||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_GSRemoveUserConnect( void *phSteamHandle, uint32 unUserID )
|
STEAMCLIENT_API steam_bool Steam_GSRemoveUserConnect( void *phSteamHandle, uint32 unUserID )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_GSSendSteam2UserConnect( void *phSteamHandle, uint32 unUserID, const void *pvRawKey, uint32 unKeyLen, uint32 unIPPublic, uint16 usPort, const void *pvCookie, uint32 cubCookie )
|
STEAMCLIENT_API steam_bool Steam_GSSendSteam2UserConnect( void *phSteamHandle, uint32 unUserID, const void *pvRawKey, uint32 unKeyLen, uint32 unIPPublic, uint16 usPort, const void *pvCookie, uint32 cubCookie )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_GSSendSteam3UserConnect( void *phSteamHandle, uint64 steamID, uint32 unIPPublic, const void *pvCookie, uint32 cubCookie )
|
STEAMCLIENT_API steam_bool Steam_GSSendSteam3UserConnect( void *phSteamHandle, uint64 steamID, uint32 unIPPublic, const void *pvCookie, uint32 cubCookie )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_GSSendUserDisconnect( void *phSteamHandle, uint64 ulSteamID, uint32 unUserID )
|
STEAMCLIENT_API steam_bool Steam_GSSendUserDisconnect( void *phSteamHandle, uint64 ulSteamID, uint32 unUserID )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_GSSendUserStatusResponse( void *phSteamHandle, uint64 ulSteamID, int nSecondsConnected, int nSecondsSinceLast )
|
STEAMCLIENT_API steam_bool Steam_GSSendUserStatusResponse( void *phSteamHandle, uint64 ulSteamID, int nSecondsConnected, int nSecondsSinceLast )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_GSSetServerType( void *phSteamHandle, int32 nAppIdServed, uint32 unServerFlags, uint32 unGameIP, uint32 unGamePort, const char *pchGameDir, const char *pchVersion )
|
STEAMCLIENT_API steam_bool Steam_GSSetServerType( void *phSteamHandle, int32 nAppIdServed, uint32 unServerFlags, uint32 unGameIP, uint32 unGamePort, const char *pchGameDir, const char *pchVersion )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
@ -1486,7 +1492,7 @@ STEAMCLIENT_API void Steam_GSSetSpawnCount( void *phSteamHandle, uint32 ucSpawn
|
|||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API bool Steam_GSUpdateStatus( void *phSteamHandle, int cPlayers, int cPlayersMax, int cBotPlayers, const char *pchServerName, const char *pchMapName )
|
STEAMCLIENT_API steam_bool Steam_GSUpdateStatus( void *phSteamHandle, int cPlayers, int cPlayersMax, int cBotPlayers, const char *pchServerName, const char *pchMapName )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return false;
|
return false;
|
||||||
@ -1495,7 +1501,7 @@ STEAMCLIENT_API bool Steam_GSUpdateStatus( void *phSteamHandle, int cPlayers, in
|
|||||||
STEAMCLIENT_API void* Steam_GetGSHandle( HSteamUser hUser, HSteamPipe hSteamPipe )
|
STEAMCLIENT_API void* Steam_GetGSHandle( HSteamUser hUser, HSteamPipe hSteamPipe )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
return NULL;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API int Steam_InitiateGameConnection( HSteamUser hUser, HSteamPipe hSteamPipe, void *pBlob, int cbMaxBlob, uint64 steamID, int nGameAppID, uint32 unIPServer, uint16 usPortServer, bool bSecure )
|
STEAMCLIENT_API int Steam_InitiateGameConnection( HSteamUser hUser, HSteamPipe hSteamPipe, void *pBlob, int cbMaxBlob, uint64 steamID, int nGameAppID, uint32 unIPServer, uint16 usPortServer, bool bSecure )
|
||||||
@ -1504,6 +1510,24 @@ STEAMCLIENT_API int Steam_InitiateGameConnection( HSteamUser hUser, HSteamPipe h
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://github.com/ValveSoftware/Proton/blob/962bbc4e74dde0643a6edab7c845bc628601f23f/lsteamclient/steamclient_main.c#L579-L586
|
||||||
|
STEAMCLIENT_API steam_bool Steam_IsKnownInterface( const char *pchVersion )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG("'%s'", pchVersion);
|
||||||
|
|
||||||
|
// real client doesn't validate if the arg was null
|
||||||
|
if (!pchVersion) return false;
|
||||||
|
|
||||||
|
bool found = client_known_interfaces.count(pchVersion);
|
||||||
|
|
||||||
|
PRINT_DEBUG(" result=%i", (int)found);
|
||||||
|
if (!found) {
|
||||||
|
get_steam_client()->report_missing_impl(pchVersion, EMU_FUNC_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API void Steam_LogOff( HSteamUser hUser, HSteamPipe hSteamPipe )
|
STEAMCLIENT_API void Steam_LogOff( HSteamUser hUser, HSteamPipe hSteamPipe )
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
@ -1514,6 +1538,13 @@ STEAMCLIENT_API void Steam_LogOn( HSteamUser hUser, HSteamPipe hSteamPipe, uint6
|
|||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://github.com/ValveSoftware/Proton/blob/962bbc4e74dde0643a6edab7c845bc628601f23f/lsteamclient/steamclient_main.c#L588-L594
|
||||||
|
STEAMCLIENT_API void Steam_NotifyMissingInterface(HSteamPipe hSteamPipe, const char *pchVersion )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG("XXXXXXXXXXXXX '%s' %i", pchVersion, hSteamPipe);
|
||||||
|
get_steam_client()->report_missing_impl(pchVersion, EMU_FUNC_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
STEAMCLIENT_API void Steam_ReleaseThreadLocalMemory(bool thread_exit)
|
STEAMCLIENT_API void Steam_ReleaseThreadLocalMemory(bool thread_exit)
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
|
9
dll/dll/client_known_interfaces.h
Normal file
9
dll/dll/client_known_interfaces.h
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#ifndef _CLIENT_KNOWN_INTERFACES_H_
|
||||||
|
#define _CLIENT_KNOWN_INTERFACES_H_
|
||||||
|
|
||||||
|
#include <unordered_set>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
extern const std::unordered_set<std::string> client_known_interfaces;
|
||||||
|
|
||||||
|
#endif // _CLIENT_KNOWN_INTERFACES_H_
|
@ -338,6 +338,7 @@ public:
|
|||||||
|
|
||||||
void DestroyAllInterfaces();
|
void DestroyAllInterfaces();
|
||||||
|
|
||||||
|
void report_missing_impl(std::string_view itf, std::string_view caller);
|
||||||
[[noreturn]] void report_missing_impl_and_exit(std::string_view itf, std::string_view caller);
|
[[noreturn]] void report_missing_impl_and_exit(std::string_view itf, std::string_view caller);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// https://developer.valvesoftware.com/wiki/Steam_Application_IDs
|
// https://developer.valvesoftware.com/wiki/Steam_Application_IDs
|
||||||
// https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
|
// https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
|
||||||
// they're not really accurate
|
// they're not really accurate
|
||||||
const std::map<uint32, std::string> steam_preowned_app_ids = {
|
extern const std::map<uint32, std::string> steam_preowned_app_ids = {
|
||||||
|
|
||||||
// { 0, "Base Goldsource Shared Binaries" },
|
// { 0, "Base Goldsource Shared Binaries" },
|
||||||
// { 1, "Base Goldsource Shared Content" },
|
// { 1, "Base Goldsource Shared Content" },
|
||||||
|
@ -938,7 +938,7 @@ ISteamAppTicket *Steam_Client::GetAppTicket( HSteamUser hSteamUser, HSteamPipe h
|
|||||||
report_missing_impl_and_exit(pchVersion, EMU_FUNC_NAME);
|
report_missing_impl_and_exit(pchVersion, EMU_FUNC_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Steam_Client::report_missing_impl_and_exit(std::string_view itf, std::string_view caller)
|
void Steam_Client::report_missing_impl(std::string_view itf, std::string_view caller)
|
||||||
{
|
{
|
||||||
PRINT_DEBUG("'%s' '%s'", itf.data(), caller.data());
|
PRINT_DEBUG("'%s' '%s'", itf.data(), caller.data());
|
||||||
std::lock_guard lck(global_mutex);
|
std::lock_guard lck(global_mutex);
|
||||||
@ -947,18 +947,27 @@ void Steam_Client::report_missing_impl_and_exit(std::string_view itf, std::strin
|
|||||||
try {
|
try {
|
||||||
ss << "INTERFACE=" << itf << "\n";
|
ss << "INTERFACE=" << itf << "\n";
|
||||||
ss << "CALLER FN=" << caller << "\n";
|
ss << "CALLER FN=" << caller << "\n";
|
||||||
|
}
|
||||||
|
catch(...) { }
|
||||||
|
|
||||||
|
try {
|
||||||
if (settings_client) {
|
if (settings_client) {
|
||||||
ss << "APPID=" << settings_client->get_local_game_id().AppID() << "\n";
|
ss << "APPID=" << settings_client->get_local_game_id().AppID() << "\n";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch(...) { }
|
||||||
|
|
||||||
|
try {
|
||||||
std::string time(common_helpers::get_utc_time());
|
std::string time(common_helpers::get_utc_time());
|
||||||
if (time.size()) {
|
if (time.size()) {
|
||||||
ss << "TIME=" << time << "\n";
|
ss << "TIME=" << time << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
ss << "--------------------\n" << std::endl;
|
ss << "--------------------\n" << std::endl;
|
||||||
|
}
|
||||||
|
catch(...) { }
|
||||||
|
|
||||||
|
try {
|
||||||
std::ofstream report(std::filesystem::u8path(get_full_program_path() + "EMU_MISSING_INTERFACE.txt"), std::ios::out | std::ios::app);
|
std::ofstream report(std::filesystem::u8path(get_full_program_path() + "EMU_MISSING_INTERFACE.txt"), std::ios::out | std::ios::app);
|
||||||
if (report.is_open()) {
|
if (report.is_open()) {
|
||||||
report << ss.str();
|
report << ss.str();
|
||||||
@ -969,6 +978,10 @@ void Steam_Client::report_missing_impl_and_exit(std::string_view itf, std::strin
|
|||||||
#if defined(__WINDOWS__)
|
#if defined(__WINDOWS__)
|
||||||
MessageBoxA(nullptr, ss.str().c_str(), "Missing interface", MB_OK);
|
MessageBoxA(nullptr, ss.str().c_str(), "Missing interface", MB_OK);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void Steam_Client::report_missing_impl_and_exit(std::string_view itf, std::string_view caller)
|
||||||
|
{
|
||||||
|
report_missing_impl(itf, caller);
|
||||||
std::exit(0x4155149); // MISSING :)
|
std::exit(0x4155149); // MISSING :)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user