Steam SDK - Init
Please note: Valve, the Valve logo, Steam and the Steam logo are trademarks and/or registered trademarks of Valve Corporation. Please have a look at the homepage to read about and download the SDK.
This is the init file for the Steam header.
Code date: 1st September 2021, SDK date: 8th January 2021
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | unit SteamAPINewInit; interface uses SteamAPI; type THSteamUser = int32; THSteamPipe = int32; {$IFDEF Win32} { Aufruf unter 32bit jeweils: myself: pointer; asm mov ECX, myself; end; GetISteamUser(bla); } TGetISteamXYZ = function(a,b: byte; self: pointer; pchVersion: PAnsiChar; hSteamPipe: THSteamPipe; hSteamUser: THSteamUser): pointer; register; TGetISteamUtils = function(a,b: byte; self: pointer; pchVersion: PAnsiChar; hSteamPipe: THSteamPipe): pointer; register; {$ENDIF} {$IFDEF Win64} TGetISteamXYZ = function(self: pointer; hSteamUser: THSteamUser; hSteamPipe: THSteamPipe; pchVersion: PAnsiChar): pointer; pascal; TGetISteamUtils = function(self: pointer; hSteamPipe: THSteamPipe; pchVersion: PAnsiChar): pointer; pascal; {$ENDIF} PSteamClientVTable = ^TSteamClientVTable; TSteamClientVTable = record CreateSteamPipe: pointer; BReleaseSteamPipe: pointer; ConnectToGlobalUser: pointer; CreateLocalUser: pointer; ReleaseUser: pointer; GetISteamUser: TGetISteamXYZ; GetISteamGameServer: TGetISteamXYZ; SetLocalIPBinding: pointer; GetISteamFriends: TGetISteamXYZ; GetISteamUtils: TGetISteamUtils; GetISteamMatchmaking: pointer; GetISteamMatchmakingServers: pointer; GetISteamGenericInterface: TGetISteamXYZ; GetISteamUserStats: TGetISteamXYZ; GetISteamGameServerStats: TGetISteamXYZ; GetISteamApps: TGetISteamXYZ; GetISteamNetworking: TGetISteamXYZ; GetISteamRemoteStorage: TGetISteamXYZ; GetISteamScreenshots: TGetISteamXYZ; RunFrame: pointer; // valide?? GetIPCCallCount: pointer; SetWarningMessageHook: pointer; BShutdownIfAllPipesClosed: pointer; GetISteamHTTP: TGetISteamXYZ; GetISteamUnifiedMessages: TGetISteamXYZ; GetISteamController: TGetISteamXYZ; GetISteamUGC: TGetISteamXYZ; GetISteamAppList: TGetISteamXYZ; GetISteamMusic: TGetISteamXYZ; GetISteamMusicRemote: TGetISteamXYZ; GetISteamHTMLSurface: TGetISteamXYZ; { // Helper functions for internal Steam usage STEAM_PRIVATE_API( virtual void DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) STEAM_PRIVATE_API( virtual void DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) STEAM_PRIVATE_API( virtual void Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) = 0; ) // inventory virtual ISteamInventory *GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; // Video virtual ISteamVideo *GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; } end; PSteamClient = ^TSteamClient; TSteamClient = record vtable: PSteamClientVTable; end; PCSteamAPIContext = ^TCSteamAPIContext; TCSteamAPIContext = record user: THSteamUser; pipe: THSteamPipe; m_pSteamClient: PSteamClient; m_pSteamUser: TSteamUser; m_pSteamFriends: TSteamFriends; m_pSteamUtils: TSteamUtils; m_pSteamApps: TSteamApps; m_pSteamUGC: TSteamUGC; function Init: boolean; end; function SteamAPI_GetHSteamUser: THSteamUser; cdecl; external STEAM_DLL_FILENAME; function SteamAPI_GetHSteamPipe: THSteamPipe; cdecl; external STEAM_DLL_FILENAME; function SteamInternal_CreateInterface(ver: PAnsiChar): pointer; cdecl; external STEAM_DLL_FILENAME; var SteamContext: TCSteamAPIContext; implementation { TCSteamAPIContext } function TCSteamAPIContext.Init: boolean; begin result := false; user := SteamAPI_GetHSteamUser; pipe := SteamAPI_GetHSteamPipe; if pipe = 0 then exit; m_pSteamClient := PSteamClient(SteamInternal_CreateInterface('SteamClient017')); {$IFDEF Win32} SteamUser := m_pSteamClient.vtable.GetISteamUser(0,0,m_pSteamClient,'SteamUser021', pipe, user); SteamUserStats := m_pSteamClient.vtable.GetISteamUserStats(0,0,m_pSteamClient,'STEAMUSERSTATS_INTERFACE_VERSION012', pipe, user); SteamFriends := m_pSteamClient.vtable.GetISteamFriends(0,0,m_pSteamClient,'SteamFriends017', pipe, user); SteamUtils := m_pSteamClient.vtable.GetISteamUtils(0,0,m_pSteamClient,'SteamUtils010', pipe); SteamUGC := m_pSteamClient.vtable.GetISteamUGC(0,0,m_pSteamClient,'STEAMUGC_INTERFACE_VERSION015', pipe, user); SteamApps := m_pSteamClient.vtable.GetISteamApps(0,0,m_pSteamClient,'STEAMAPPS_INTERFACE_VERSION008', pipe, user); SteamNetworking := m_pSteamClient.vtable.GetISteamNetworking(0,0,m_pSteamClient,'SteamNetworking006', pipe, user); {$ENDIF} {$IFDEF Win64} SteamUser := m_pSteamClient.vtable.GetISteamUser(m_pSteamClient, user, pipe, 'SteamUser021'); SteamUserStats := m_pSteamClient.vtable.GetISteamUserStats(m_pSteamClient, user, pipe, 'STEAMUSERSTATS_INTERFACE_VERSION012'); SteamFriends := m_pSteamClient.vtable.GetISteamFriends(m_pSteamClient, user, pipe, 'SteamFriends017'); SteamUtils := m_pSteamClient.vtable.GetISteamUtils(m_pSteamClient, pipe, 'SteamUtils010'); SteamUGC := m_pSteamClient.vtable.GetISteamUGC(m_pSteamClient, user, pipe, 'STEAMUGC_INTERFACE_VERSION015'); SteamApps := m_pSteamClient.vtable.GetISteamApps(m_pSteamClient, user, pipe, 'STEAMAPPS_INTERFACE_VERSION008'); SteamNetworking := m_pSteamClient.vtable.GetISteamNetworking(m_pSteamClient, user, pipe, 'SteamNetworking006'); {$ENDIF} result := true; end; end. |