Steamworks 文献库
steam_api.h
提供初始化和访问 Steamworks API 的核心基础框架。

这里列出的所有类型为全局定义,不与任何特定 API 相关联。

函数


以下是不需要设置接口的全局函数。 您可以在 Steamworks API 概览中,对这些函数了解更多。

SteamAPI_Init

S_API bool S_CALLTYPE SteamAPI_Init();
初始化 Steamworks API。

参见初始化与关闭,了解更多信息。

返回: bool
true 表示所有所需接口均已获得且可访问。
false 表示存在下列情况之一:
  • Steam 客户端未运行。 需要有运行的 Steam 客户端才能提供各种 Steamworks 接口的实现。
  • Steam 客户端无法判定游戏的 App ID。 如果您直接通过可执行文件或调试器运行您的应用程序,那么您的游戏目录中的可执行文件旁,必须有一个 steam_appid.txt,其中只记录了您的应用 ID,此外不含有任何其他内容。 Steam 将在当前工作目录中查找此文件。 如果您从不同的目录中运行可执行文件,您也许需要重新定位 steam_appid.txt 文件。
  • 您的应用程序运行的 OS 用户上下文,与 Steam 客户端并不相同,比如用户或管理员访问权限级别不同。
  • 确定您在当前活跃的 Steam 帐户中拥有该 App ID 的许可。 您的游戏必须显示在您的 Steam 库中。
  • 您的 AppID 未完全设置,如 发行状态:不可用,或缺失默认程序包。

示例:
int main() { if ( SteamAPI_RestartAppIfNecessary( k_uAppIdInvalid ) ) // Replace with your App ID { return 1; } if ( !SteamAPI_Init() ) { printf( "Fatal Error - Steam must be running to play this game (SteamAPI_Init() failed).\n" ); return 1; } return 0; }

SteamAPI_ReleaseCurrentThreadMemory

S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory();
将与调用线程相关联的内部 Steamworks API 内存释放出。

多数 Steamworks API 函数分配少量的线程本地内存,供存储参数。调用此函数将手动释放这些存储。 此函数由 SteamAPI_RunCallbacks 自动调用,因此始终只通过单线程访问 Steamworks API 的程序完全不需要显式调用此函数。

SteamAPI_RestartAppIfNecessary

S_API bool S_CALLTYPE SteamAPI_RestartAppIfNecessary( uint32 unOwnAppID );
名称类型描述
unOwnAppIDuint32此产品的 App ID。

检查您的可执行文件是否通过 Steam 启动,如果不是,则通过 Steam 重新启动。

参见初始化与关闭,了解更多信息。

返回: bool
如果返回 true,则在必须时启动 Steam 客户端,然后通过客户端再次启动您的游戏,而您应尽快退出进程。 此举将有效地运行 steam://run/<AppId>,可能不会重启调用此函数的确切可执行文件,因为它将始终重启您 Steam 库文件夹中安装的版本。

而如果返回 false,则您的游戏是由 Steam 客户端启动,无需进行任何操作。 一个例外是,如果存在 steam_appid.txt 文件,则无论何种情况都会返回 false。 这让您不必通过 Steam 客户端启动您的游戏,便能进行开发与测试。 将游戏上传至您的 Steam depot 时,务必删除 steam_appid.txt

示例:
int main() { if ( SteamAPI_RestartAppIfNecessary( k_uAppIdInvalid ) ) // Replace with your App ID { return 1; } if ( !SteamAPI_Init() ) { printf( "Fatal Error - Steam must be running to play this game (SteamAPI_Init() failed).\n" ); return 1; } return 0; }

SteamAPI_RunCallbacks

S_API void S_CALLTYPE SteamAPI_RunCallbacks();
调度回调,并调用结果至所有注册侦听器。

最好以 >10Hz 的频率调用此函数,调用间隔时间超长,从 Steamworks API 接收事件或结果越可能有延迟。 多数游戏在每个渲染帧调用此函数。 所有注册侦听器函数将在此项调用期间,在调用方线程上下文中调用。

SteamAPI_RunCallbacks 可同时从多线程安全调用,但是如果您选择这样做,回调代码可以在任何线程上执行。 一种替代方案是只在主线程调用 SteamGameServer_RunCallbacks,并在其他线程上定期调用 SteamAPI_ReleaseCurrentThreadMemory

SteamAPI_SetMiniDumpComment

S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg );
名称类型描述
pchMsgconst char *附于 minidump 上的消息, 必须以 null 结尾。

附上任意评论,嵌入 minidump。

比如,您也许会想要附上这样一些内容:玩家在玩哪个关卡,服务器上有多少玩家,有多少可用内存等。
此函数必须在调用 SteamAPI_WriteMiniDump 之前调用。
注意:仅在 32bit 的 Windows 上可用!

SteamAPI_Shutdown

S_API void S_CALLTYPE SteamAPI_Shutdown();
关闭 Steamworks API,释放指针和内存。

若可能,您应该在进程关闭时调用此函数。

由于无法保证您的渲染 API 已使用完毕,这将不会从您的游戏取消 Steam 界面 的挂钩。

SteamAPI_WriteMiniDump

S_API void S_CALLTYPE SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID );
名称类型描述
uStructuredExceptionCodeuint32结构化异常代码。
pvExceptionInfovoid*含有具体的异常信息的 EXCEPTION_POINTERS。
uBuildIDuint32记录提交此 minidump 的应用版本的 Build ID。 这与 Steam build ID 不同,仅用于报告故障。

写入并上传 minidump 以报告故障。

参见 Steam 错误报告,了解更多信息。

您可以在调用此函数前,调用 SteamAPI_SetMiniDumpComment 添加可选用的注释。
注意:仅支持 32bit 的 Windows。

示例:
#ifdef _WIN32 #include <Windows.h> void MiniDumpFunction( unsigned int nExceptionCode, EXCEPTION_POINTERS *pException ) { // 您可以生成并设置任意注释,嵌入这里的 minidump。 // 也许您想要纳入玩家在玩的关卡、服务器上的玩家数、 // 有多少可用内存等…… SteamAPI_SetMiniDumpComment( "Minidump comment: SteamworksExample.exe/n" ); // 这里的 0 是 生成版本 ID,而非由我们设置。 SteamAPI_WriteMiniDump( nExceptionCode, pException, 0 ); } int RealMain( HINSTANCE hInstance, LPSTR lpCmdLine, int nCmdShow ) { __debugbreak(); return 0; } int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // 我们在这里所做的就是在设置好我们的 SE 转换器后,调用真正的主函数。 // 这让我们捕获异常并将错误报告给 Steam。 // //注意您必须正确设置您的编译器标记,以启用结构化异常处理, // 以保证此特定设置方法有效。 if ( IsDebuggerPresent() ) { // 我们不想在调试时屏蔽异常(或将异常报告给 Steam!)。 // 如果您想要调试异常处理器的内部, // 不带调试器运行游戏后再添加调试器。 return RealMain( lpCmdLine, hInstance, nCmdShow ); } _set_se_translator( MiniDumpFunction ); try // 此试块允许 SE 转换器工作。 { return RealMain( hInstance, lpCmdLine, nCmdShow ); } catch( ... ) { return -1; } } #endif

结构

这些是 steam_api 中的函数可能返回和/或与之交互的结构。

CGameID

Steam 游戏在全局中的唯一标识符。

CSteamID

所有 Steam 帐户、Steam 组、大厅和聊天室的全局唯一标识符。
请参见 EAccountTypeEUniverse

枚举

以下是经过定义来与 steam_api 一起使用的枚举。

EAccountType

Steam 帐户类型, 在 CSteamID 内部使用。

名称描述
k_EAccountTypeInvalid0用于无效 Steam ID。
k_EAccountTypeIndividual1普通用户帐户。
k_EAccountTypeMultiseat2多座位(如网吧)帐户。
k_EAccountTypeGameServer3持久(非匿名)游戏服务器帐户。
k_EAccountTypeAnonGameServer4匿名游戏服务器帐户。
k_EAccountTypePending5待处理。
k_EAccountTypeContentServer6Valve 内部内容服务器帐户。
k_EAccountTypeClan7Steam 组(群组)。
k_EAccountTypeChat8Steam 组聊天或大厅。
k_EAccountTypeConsoleUser9虚假 Steam ID,用于 PS3 本地 PSN 帐户或 360 Live 帐户等。
k_EAccountTypeAnonUser10匿名用户帐户 (用来创建帐户或重置密码)。
k_EAccountTypeMax11此字段最多 16 项。

EAppOwnershipFlags

表示 App ID 的所有权信息的标记 (仅供 Steam 内部使用)。

名称描述
k_EAppOwnershipFlags_None0x0000未知。
k_EAppOwnershipFlags_OwnsLicense0x0001拥有此应用的许可。
k_EAppOwnershipFlags_FreeLicense0x0002用户尚未为应用付费。
k_EAppOwnershipFlags_RegionRestricted0x0004拥有应用,但不可在当前地区运行。
k_EAppOwnershipFlags_LowViolence0x0008仅拥有低暴力版本。
k_EAppOwnershipFlags_InvalidPlatform0x0010应用不支持当前平台。
k_EAppOwnershipFlags_SharedLicense0x0020许可由授权设备通过 Steam 家庭共享获得。
k_EAppOwnershipFlags_FreeWeekend0x0040因免费周末许可而拥有。
k_EAppOwnershipFlags_RetailLicense0x0080有游戏的零售许可(序列号等)(已弃用)。
k_EAppOwnershipFlags_LicenseLocked0x0100共享的许可被其他用户锁定(在使用中)。
k_EAppOwnershipFlags_LicensePending0x0200拥有应用,但交易仍在处理中。 尚不能安装或运行。
k_EAppOwnershipFlags_LicenseExpired0x0400由于许可过期,已不再拥有应用。
k_EAppOwnershipFlags_LicensePermanent0x0800永久许可,而不是共享、玩家通行证、或免费周末许可等。
k_EAppOwnershipFlags_LicenseRecurring0x1000定期许可,向用户定期收费。
k_EAppOwnershipFlags_LicenseCanceled0x2000标记为取消,但若为循环许可,也许仍有效。
k_EAppOwnershipFlags_AutoGrant0x4000所有权基于任一类型的自动授予许可。
k_EAppOwnershipFlags_PendingGift0x8000用户有礼物待兑换。
k_EAppOwnershipFlags_RentalNotActivated0x10000租赁尚未激活。
k_EAppOwnershipFlags_Rental0x20000通过租赁获得。
k_EAppOwnershipFlags_SiteLicense0x40000来自站点许可。

EAppReleaseState

一个 App ID 的发行状态。 (仅供 Steam 内部使用)。

名称描述
k_EAppReleaseState_Unknown0未知。不能获得应用程序信息,或者许可信息遗失。
k_EAppReleaseState_Unavailable1即使用户拥有许可,也完全不能看到游戏。
k_EAppReleaseState_Prerelease2可购买并在游戏列表中可见,仅此而已。
k_EAppReleaseState_PreloadOnly3所有者可以预载应用,但不能游玩。
k_EAppReleaseState_Released4所有者可以下载并运行应用。

EAppType

App ID 类型,更多信息参见应用程序的类型(仅供 Steam 内部使用)。

名称描述
k_EAppType_Invalid0x000未知/无效。
k_EAppType_Game0x001可玩的游戏。默认类型。
k_EAppType_Application0x002软件应用程序。
k_EAppType_Tool0x004SDK、编辑器和专用服务器。
k_EAppType_Demo0x008游戏试用版。
k_EAppType_Media_DEPRECATED0x010遗留程序,过去用于游戏宣传片。这些宣传片现在仅为网上的视频。
k_EAppType_DLC0x020可下载内容。
k_EAppType_Guide0x040游戏指南、PDF 等。
k_EAppType_Driver0x080硬件驱动程序更新程序(ATI、Razor 等)。
k_EAppType_Config0x100隐藏应用,用于配置 Steam 功能(背包、特卖等)。
k_EAppType_Hardware0x200Steam 硬件设备(Steam 主机、Steam 控制器、Steam 流式盒等)。
k_EAppType_Franchise0x400如电影、剧集、游戏等多个应用集合的中心。
k_EAppType_Video0x800电影或剧集的视频部分(可能是电影正片、剧集内容、预览、花絮等)。
k_EAppType_Plugin0x1000其他应用的插件类型。
k_EAppType_Music0x2000音乐文件。
k_EAppType_Series0x4000视频系列的容器应用。
k_EAppType_Shortcut0x40000000只是快捷方式,仅用于客户端。
k_EAppType_DepotOnly0x80000000由于 depot 和应用共享相同的命名空间,此为占位之用。

EAuthSessionResponse

ValidateAuthTicketResponse_t 回调的返回值,作为对 ISteamUser::BeginAuthSessionISteamGameServer::BeginAuthSession 的响应进行发送。

名称描述
k_EAuthSessionResponseOK0Steam 已验证用户在线,票证有效且尚未重复使用。
k_EAuthSessionResponseUserNotConnectedToSteam1所提及的用户未连接至 Steam。
k_EAuthSessionResponseNoLicenseOrExpired2用户无此 App ID 的许可或票证已过期。
k_EAuthSessionResponseVACBanned3用户受到此游戏的 VAC 封禁。
k_EAuthSessionResponseLoggedInElseWhere4用户帐户在他处登录,带有游戏实例的会话已断开连接。
k_EAuthSessionResponseVACCheckTimedOut5VAC 无法对此用户执行反作弊检查。
k_EAuthSessionResponseAuthTicketCanceled6票证发行方已取消票证。
k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed7此票证已使用过,不再有效。
k_EAuthSessionResponseAuthTicketInvalid8此票证并非来自于当前连接到 Steam 的用户实例。
k_EAuthSessionResponsePublisherIssuedBan9此用户受到此游戏的封禁。 是通过 web api 封禁,而非 VAC 封禁。

EBeginAuthSessionResult

ISteamUser::BeginAuthSessionISteamGameServer::BeginAuthSession 返回的结果。

名称描述
k_EBeginAuthSessionResultOK0票证对此游戏和此 Steam ID 有效。
k_EBeginAuthSessionResultInvalidTicket1票证无效。
k_EBeginAuthSessionResultDuplicateRequest2已为此 Steam ID 提交了一个票证。
k_EBeginAuthSessionResultInvalidVersion3票证来自不兼容接口版本。
k_EBeginAuthSessionResultGameMismatch4不是此游戏的票证。
k_EBeginAuthSessionResultExpiredTicket5票证已过期。

EBroadcastUploadResult

BroadcastUploadStop_t 的直播上传结果。

名称描述
k_EBroadcastUploadResultNone0直播状态未知。
k_EBroadcastUploadResultOK1直播良好无故障。
k_EBroadcastUploadResultInitFailed2直播初始化失败。
k_EBroadcastUploadResultFrameFailed3直播帧上传失败。
k_EBroadcastUploadResultTimeout4直播上传超时。
k_EBroadcastUploadResultBandwidthExceeded5直播发送过多数据。
k_EBroadcastUploadResultLowFPS6直播 FPS 过低。
k_EBroadcastUploadResultMissingKeyFrames7直播发送关键帧不足。
k_EBroadcastUploadResultNoConnection8直播客户端未能成功连接至中继。
k_EBroadcastUploadResultRelayFailed9中继丢失上传内容。
k_EBroadcastUploadResultSettingsChanged10客户端更改了直播设置。
k_EBroadcastUploadResultMissingAudio11客户端发送音频数据失败。
k_EBroadcastUploadResultTooFarBehind12客户端上传过慢。
k_EBroadcastUploadResultTranscodeBehind13服务器未能跟上转码。

EChatEntryType

聊天条目类型。

ISteamFriends::GetFriendMessageISteamFriends::GetClanChatMessageISteamMatchmaking::GetLobbyChatEntry 返回。

名称描述
k_EChatEntryTypeInvalid0无效。
k_EChatEntryTypeChatMsg1来自其他用户的普通文本消息。
k_EChatEntryTypeTyping2另一用户正在输入,不用于多用户群聊。
k_EChatEntryTypeInviteGame3其他用户邀请进入当前进行的游戏。
k_EChatEntryTypeEmote4文本表情包(已弃用,应视作 ChatMsg 处理)。
k_EChatEntryTypeLeftConversation6一名用户离开了对话(关闭了对话窗口)。
k_EChatEntryTypeEntered7用户加入聊天,用于多用户群聊与组聊天。
k_EChatEntryTypeWasKicked8用户被踢出(数据:执行踢出操作的用户的 Steam ID)。
k_EChatEntryTypeWasBanned9用户被封(数据:执行封禁操作的用户的 Steam ID)。
k_EChatEntryTypeDisconnected10用户掉线。
k_EChatEntryTypeHistoricalChat11来自用户的聊天历史记录的聊天消息或离线消息。
k_EChatEntryTypeLinkBlocked14聊天过滤器移除了一个链接。

EChatRoomEnterResponse

聊天室进入响应。

名称描述
k_EChatRoomEnterResponseSuccess1成功。
k_EChatRoomEnterResponseDoesntExist2聊天室不存在(可能已关闭)。
k_EChatRoomEnterResponseNotAllowed3一般性拒绝:您没有加入该聊天的权限。
k_EChatRoomEnterResponseFull4聊天室已达到最大规模。
k_EChatRoomEnterResponseError5意外错误。
k_EChatRoomEnterResponseBanned6您被此聊天室封禁,不能加入。
k_EChatRoomEnterResponseLimited7您是受限用户(帐户无值),不能加入此聊天。
k_EChatRoomEnterResponseClanDisabled8在组锁定或禁用时试图加入组聊天。
k_EChatRoomEnterResponseCommunityBan9用户在被社区封禁时试图加入聊天。
k_EChatRoomEnterResponseMemberBlockedYou10加入失败。此聊天室中的一个用户阻止了您的加入。
k_EChatRoomEnterResponseYouBlockedMember11加入失败。您阻止了一个已经加入聊天的用户。
k_EChatRoomEnterResponseRatelimitExceeded15加入失败——在短时间内尝试加入的次数过多。

EChatSteamIDInstanceFlags

聊天帐户的特殊标记,为 Steam ID“实例”的前 8 位,12 位的空间留给实际实例。

名称描述
k_EChatAccountInstanceMask0x00000FFF前 8 位为标记。
k_EChatInstanceFlagClan( k_unSteamAccountInstanceMask + 1 ) >> 1此 Steam ID 是一个 Steam 组的 ID。
k_EChatInstanceFlagLobby( k_unSteamAccountInstanceMask + 1 ) >> 2此 Steam ID 是一个大厅的 ID。
k_EChatInstanceFlagMMSLobby( k_unSteamAccountInstanceMask + 1 ) >> 3此 Steam ID 为一个 MMS 大厅的 ID。

EDenyReason

当一个客户端加入失败或被踢出游戏服务器时的结果值。 通过 GSClientDeny_tGSClientKick_t 获得。

名称描述
k_EDenyInvalid0未知。
k_EDenyInvalidVersion1客户端和服务器并非同一版本。
k_EDenyGeneric2通用。
k_EDenyNotLoggedOn3客户端未登录。
k_EDenyNoLicense4客户端无运行此游戏的许可。
k_EDenyCheater5客户端受到 VAC 封禁。
k_EDenyLoggedInElseWhere6客户端在别处登录。
k_EDenyUnknownText7
k_EDenyIncompatibleAnticheat8
k_EDenyMemoryCorruption9
k_EDenyIncompatibleSoftware10
k_EDenySteamConnectionLost11服务器失去与 Steam 的连接。
k_EDenySteamConnectionError12服务器与 Steam 的连接出现一般错误。
k_EDenySteamResponseTimedOut13服务器与 Steam 的连接超时。
k_EDenySteamValidationStalled14服务器尚未被 Steam 验证。
k_EDenySteamOwnerLeftGuestUser15此共享游戏的所有者已离开。为游戏所有者的各个访客调用。

EGameIDType

用于描述 CGameID 的类型。

名称描述
k_EGameIDTypeApp0Game ID 为普通 Steam 应用。
k_EGameIDTypeGameMod1Game ID 为模组。
k_EGameIDTypeShortcut2Game ID 为快捷方式。
k_EGameIDTypeP2P3Game ID 为 P2P 文件。

ELaunchOptionType

定义好的启动方式的代码,与通用安装设置页面中的应用程序启动选项的“启动类型”对应。

我们提供一种特别的函数 BIsVRLaunchOptionType,用于检查是否为 VR 启动选项。

名称描述
k_ELaunchOptionType_None0未指定。
k_ELaunchOptionType_Default1在默认模式下运行应用。
k_ELaunchOptionType_SafeMode2在安全模式下运行应用。
k_ELaunchOptionType_Multiplayer3在多人模式下运行游戏。
k_ELaunchOptionType_Config4为此游戏运行配置工具。
k_ELaunchOptionType_OpenVR5使用 OpenVR 在 VR 模式下运行游戏。
k_ELaunchOptionType_Server6为此游戏运行专用服务器。
k_ELaunchOptionType_Editor7运行游戏编辑器。
k_ELaunchOptionType_Manual8显示游戏手册。
k_ELaunchOptionType_Benchmark9运行游戏基准测试。
k_ELaunchOptionType_Option110通用运行选项,为游戏名称使用描述字段。
k_ELaunchOptionType_Option211通用运行选项,为游戏名称使用描述字段。
k_ELaunchOptionType_Option312通用运行选项,为游戏名称使用描述字段。
k_ELaunchOptionType_OculusVR13使用 Oculus SDK 在 VR 模式下运行游戏。
k_ELaunchOptionType_OpenVROverlay14运行 OpenVR 主面板界面。
k_ELaunchOptionType_OSVR15使用 OSVR SDK 在 VR 模式下运行游戏。
k_ELaunchOptionType_Dialog1000显示启动选项对话框。

EMarketingMessageFlags

Steam 内部市场营销消息标记,提示客户端应如何处理。

名称描述
k_EMarketingMessageFlagsNone0
k_EMarketingMessageFlagsHighPriority1 << 0
k_EMarketingMessageFlagsPlatformWindows1 << 1
k_EMarketingMessageFlagsPlatformMac1 << 2
k_EMarketingMessageFlagsPlatformLinux1 << 3
k_EMarketingMessageFlagsPlatformRestrictions=聚合标记。

ENotificationPosition

界面显示通知的可能位置。 和 ISteamUtils::SetOverlayNotificationPosition 一起使用。

名称描述
k_EPositionTopLeft0左上角。
k_EPositionTopRight1右上角。
k_EPositionBottomLeft2左下角。
k_EPositionBottomRight3右下角。

EResult

Steam 错误结果代码。

以下代码经常由 Steamworks API 和 Web API 的函数、回调、调用结果返回。 API 可以返回任意 EResult 代码。参见相应 API 函数或回调相关文档,了解可能会返回些什么,以及其在该 API 调用上下文中表示什么。
这与 Win32 HRESULT 类型或 POSIX errno 相似。

名称描述
k_EResultOK1成功。
k_EResultFail2一般失败。
k_EResultNoConnection3您的 Steam 客户端没有连接后端。
k_EResultInvalidPassword5密码/票证无效。
k_EResultLoggedInElsewhere6用户在别处登录。
k_EResultInvalidProtocolVer7协议版本错误。
k_EResultInvalidParam8参数不正确。
k_EResultFileNotFound9未找到文件。
k_EResultBusy10调用的方法繁忙,未进行操作。
k_EResultInvalidState11调用的对象处于无效状态。
k_EResultInvalidName12名称无效。
k_EResultInvalidEmail13电子邮件无效。
k_EResultDuplicateName14名称不是唯一的。
k_EResultAccessDenied15访问被拒绝。
k_EResultTimeout16操作超时。
k_EResultBanned17用户受到 VAC 封禁。
k_EResultAccountNotFound18未找到帐户。
k_EResultInvalidSteamID19Steam ID 无效。
k_EResultServiceUnavailable20请求的服务当前不可用。
k_EResultNotLoggedOn21用户未登录。
k_EResultPending22请求正待处理,可能已在进程中或在等待第三方。
k_EResultEncryptionFailure23加密或解密失败。
k_EResultInsufficientPrivilege24权限不足。
k_EResultLimitExceeded25过量。
k_EResultRevoked26访问已被撤销(用于被撤销的玩家通行证)。
k_EResultExpired27用户尝试访问的许可/玩家通行证已失效。
k_EResultAlreadyRedeemed28玩家通行证已被帐户兑换,不能再次使用。
k_EResultDuplicateRequest29重复请求,操作已进行,忽略此请求。
k_EResultAlreadyOwned30用户已拥有此玩家通行证兑换请求中的所有游戏。
k_EResultIPNotFound31未找到 IP 地址。
k_EResultPersistFailed32将更改写入数据存储失败。
k_EResultLockingFailed33为此操作获取访问锁定失败。
k_EResultLogonSessionReplaced34登录会话已被替换。
k_EResultConnectFailed35连接失败。
k_EResultHandshakeFailed36验证握手失败。
k_EResultIOFailure37出现一般 IO 失败。
k_EResultRemoteDisconnect38远程服务器已断开连接。
k_EResultShoppingCartNotFound39未找到请求的购物车。
k_EResultBlocked40一个用户阻止了操作。
k_EResultIgnored41目标忽略发送方。
k_EResultNoMatch42未找到与请求匹配的信息。
k_EResultAccountDisabled43帐户被禁用。
k_EResultServiceReadOnly44此服务目前不接受内容更改。
k_EResultAccountNotFeatured45帐户未充值,此功能不可用。
k_EResultAdministratorOK46只有在管理员发出请求时才允许采用此操作。
k_EResultContentVersion47在 Steam 协议中传输的内容版本不匹配。
k_EResultTryAnotherCM48当前 CM 不能服务发出请求的用户。用户应重试。
k_EResultPasswordRequiredToKickSession49您已经在别处登录,此缓存的凭据登录已失效。
k_EResultAlreadyLoggedInElsewhere50用户在别处登录。 (应换用 k_EResultLoggedInElsewhere!)
k_EResultSuspended51长时间运行的操作已中止/暂停。 (如 内容下载。)
k_EResultCancelled52操作被取消,通常是被用户取消。 (如 内容下载。)
k_EResultDataCorruption53因数据状况欠佳或不可恢复而取消操作。
k_EResultDiskFull54磁盘空间不足,取消操作。
k_EResultRemoteCallFailed55远程或 IPC 调用失败。
k_EResultPasswordUnset56密码在服务器端未设置,无法验证。
k_EResultExternalAccountUnlinked57外部帐户(PSN、Facebook 等)未链接至 Steam 帐户。
k_EResultPSNTicketInvalid58PSN 票证无效。
k_EResultExternalAccountAlreadyLinked59外部帐户(PSN、Facebook 等)已链接至其他帐户,必须先显式请求替代/删除此链接。
k_EResultRemoteFileConflict60由于本地与远程文件冲突,同步无法继续。
k_EResultIllegalPassword61请求的新密码不被接受。
k_EResultSameAsPreviousValue62新值与旧值相同。 用于安全问题及其答案。
k_EResultAccountLogonDenied63由于第二步验证失败,帐户登录被拒绝。
k_EResultCannotUseOldPassword64请求的新密码不受认可。
k_EResultInvalidLoginAuthCode65由于验证码无效,帐户登录被拒。
k_EResultAccountLogonDeniedNoMail66由于第二步验证失败,帐户登录被拒,且未发送邮件。
k_EResultHardwareNotCapableOfIPT67用户硬件不支持英特尔身份保护技术(IPT)。
k_EResultIPTInitError68英特尔身份保护技术(IPT)初始化失败。
k_EResultParentalControlRestricted69由于当前用户受家长控制限制,操作失败。
k_EResultFacebookQueryError70Facebook 查询返回错误。
k_EResultExpiredLoginAuthCode71由于验证码失效,帐户登录被拒。
k_EResultIPLoginRestrictionFailed72由于 IP 限制,登录失败。
k_EResultAccountLockedDown73当前用户帐户目前被锁定,无法使用。 通常是因为帐户劫持和待处理的所有权验证。
k_EResultAccountLogonDeniedVerifiedEmailRequired74由于帐户电子邮件未能验证,登录失败。
k_EResultNoMatchingURL75无与提供的值匹配的 URL。
k_EResultBadResponse76由于分析失败、字段遗失等导致错误响应。
k_EResultRequirePasswordReEntry77用户不能完成操作,直到重新输入密码为止。
k_EResultValueOutOfRange78输入的值在可接收范围之外。
k_EResultUnexpectedError79发生了完全不曾预料的情况。
k_EResultDisabled80请求的服务已配置为不可用。
k_EResultInvalidCEGSubmission81提交至 CEG 服务器的文件无效。
k_EResultRestrictedDevice82使用的设备未获执行此操作的许可。
k_EResultRegionLocked83由于地区限制,操作不能完成。
k_EResultRateLimitExceeded84超出暂时性速率极限,稍后再试,与可能为永久性的 k_EResultLimitExceeded 不同。
k_EResultAccountLoginDeniedNeedTwoFactor85需要双重验证码登录。
k_EResultItemDeleted86我们尝试访问的物品已被删除。
k_EResultAccountLoginDeniedThrottle87尝试登录失败,尝试阻止对可能的攻击者响应。
k_EResultTwoFactorCodeMismatch88双重验证(Steam 令牌)码不正确。
k_EResultTwoFactorActivationCodeMismatch89双因素验证(Steam 令牌)激活码不匹配。
k_EResultAccountAssociatedToMultiplePartners90当前帐户已与多个合作伙伴相关联。
k_EResultNotModified91数据尚未修改。
k_EResultNoMobileDevice92帐户无相关联的移动设备。
k_EResultTimeNotSynced93提供的时间在范围或容差之外。
k_EResultSmsCodeFailed94短信代码失败:无匹配、无一待处理等。
k_EResultAccountLimitExceeded95访问此资源的帐户过多。
k_EResultAccountActivityLimitExceeded96此帐户的更改过多。
k_EResultPhoneActivityLimitExceeded97此手机号码的更改过多。
k_EResultRefundToWallet98无法退款至原支付手段,必须使用 Steam 钱包。
k_EResultEmailSendFailure99无法发送电子邮件。
k_EResultNotSettled100在支付确认前无法执行操作。
k_EResultNeedCaptcha101用户需提供有效的 captcha。
k_EResultGSLTDenied102此令牌所有者拥有的一个游戏服务器登录令牌已被封禁。
k_EResultGSOwnerDenied103游戏服务器所有者因其他原因被拒,如帐户锁定、社区封禁、VAC 封禁、遗失手机等。
k_EResultInvalidItemType104我们收到请求进行操作的物品类型无效。
k_EResultIPBanned105IP 地址被禁止采取此操作。
k_EResultGSLTExpired106此游戏服务器登录令牌(GSLT)的停用已到期,可以重置再用。
k_EResultInsufficientFunds107用户无足够钱包资金完成操作。
k_EResultTooManyPending108已有过多待处理物品。

ESteamUserStatType

内部用于存储用户统计的字段。

名称描述
k_ESteamUserStatTypeINVALID0无效。
k_ESteamUserStatTypeINT1统计为 32 位整数。
k_ESteamUserStatTypeFLOAT2统计为 32 位浮点数。
k_ESteamUserStatTypeAVGRATE3作为浮点数读取,用计数/会话长度设置。
k_ESteamUserStatTypeACHIEVEMENTS4标准用户成就。
k_ESteamUserStatTypeGROUPACHIEVEMENTS5已弃用。
k_ESteamUserStatTypeMAX6用户统计类型的总数量,用于完整性检查。

ETextFilteringContext

ISteamUtils::FilterText 的参数。

名称描述
k_ETextFilteringContextUnknown0上下文未知。
k_ETextFilteringContextGameContent1游戏内容,仅执行法律所要求的过滤。
k_ETextFilteringContextChat2来自另一玩家的聊天。
k_ETextFilteringContextName3角色或物品名称。

EUniverse

Steam 世界。 每个世界是一个自成一体的 Steam 实例。

名称描述
k_EUniverseInvalid0无效。
k_EUniversePublic1标准公开世界。
k_EUniverseBeta2Valve 内使用的测试世界。
k_EUniverseInternal3Valve 内使用的内部世界。
k_EUniverseDev4Valve 内使用的开发者世界。
k_EUniverseMax5Universe 的总数量,用于完整性检查。

EUserHasLicenseForAppResult

ISteamUser::UserHasLicenseForApp 的结果。

名称描述
k_EUserHasLicenseResultHasLicense0用户有指定应用的许可。
k_EUserHasLicenseResultDoesNotHaveLicense1用户无指定应用的许可。
k_EUserHasLicenseResultNoAuth2用户尚未被验证。

EVoiceResult

这些结果与 Steam 语音 函数一起使用。

名称描述
k_EVoiceResultOK0此调用已成功完成。
k_EVoiceResultNotInitialized1Steam 语音界面尚未初始化。
k_EVoiceResultNotRecording2Steam 语音当前不在录音。
k_EVoiceResultNoData3无语音数据。
k_EVoiceResultBufferTooSmall4提供的缓冲区太小,无法接收数据。
k_EVoiceResultDataCorrupted5语音数据毁坏。
k_EVoiceResultRestricted6用户受到聊天限制。
k_EVoiceResultUnsupportedCodec7已弃用。
k_EVoiceResultReceiverOutOfDate8已弃用。
k_EVoiceResultReceiverDidNotAnswer9已弃用。

EVRHMDType

VR HMD 厂商与型号的码位。 使用特殊函数 BIsOculusHMD 与 BIsViveHMD 查看特定品牌。

名称描述
k_eEVRHMDType_None-1未知厂商与型号。
k_eEVRHMDType_Unknown0未知厂商与型号。
k_eEVRHMDType_HTC_Dev1初代 HTC 开发套件。
k_eEVRHMDType_HTC_VivePre2HTC Vive Pre 开发套件。
k_eEVRHMDType_HTC_Vive3HTC Vive 消费者版。
k_eEVRHMDType_HTC_Unknown20未知 HTC HMD。
k_eEVRHMDType_Oculus_DK121Oculus Rift 开发套件 1。
k_eEVRHMDType_Oculus_DK222Oculus Rift 开发套件 2。
k_eEVRHMDType_Oculus_Rift23Oculus Rift 消费者版 1。
k_eEVRHMDType_Oculus_Unknown40未知 Oculus 头显。

Typedefs

以下是定义来与 steam_api 一起使用的 typedef。

名称基础类型描述
AccountID_tuint32CSteamID 内部使用,代表特定用户帐户,而无所谓其在哪个 Steam 世界。
AppId_tuint32某应用的唯一标识符。参见 应用程序 文档,了解更多信息。
AssetClassId_tuint64只在 Steam 内部使用。
BREAKPAD_HANDLEvoid *供内部 Steam 异常处理器界面使用,以参考安装的特定异常处理器。
BundleId_tuint32捆绑包的唯一标识符。 (只在 Steam 内部使用)。
CellID_tuint32只在 Steam 内部使用。
DepotId_tuint32Depot 的唯一标识符。
GID_tuint64只在 Steam 内部使用。
HAuthTicketuint32用户验证票证的句柄。 返回 ISteamUser::GetAuthSessionTicket 类型。
int16shortSteam 版本的 16 位整数,等同于 int16_t。
int32intSteam 版本的 32 位整数,等同于 int32_t。
int64long longSteam 版本的 64 位整数,等同于 int64_t。
int8signed charSteam 版本的 8 位整数,等同于 int8_t。
intpint/long longSteam 版本的有符号类型,用来容纳一个指针,等同于 intptr_t (只在 Steam 内部使用)。
JobID_tuint64只在 Steam 内部使用。
lint64long int只在 Steam 内部使用。
ManifestId_tuint64只在 Steam 内部使用。
PackageId_tuint32只在 Steam 内部使用。
PartnerId_tuint32只在 Steam 内部使用。
PhysicalItemId_tuint32只在 Steam 内部使用。
RTime32uint32Unix epoch 时间的 Steam 版。 精度为 1 秒,从 1970-01-01 00:00:00 +0000(UTC)起。
SteamAPICall_tuint64指向一个 Steam API 调用的唯一句柄。
如果有函数返回其中之一,您必须使用调用结果系统记录其状态。
TxnID_tGID_t只在 Steam 内部使用。
uint16unsigned shortSteam 版本的 16 位无符号整数,等同于 uint16_t。
uint32unsigned intSteam 版本的 32 位无符号整数,等同于 uint32_t。
uint64unsigned long longSteam 版本的 64 位无符号整数,等同于 uint64_t。
uint8unsigned charSteam 版本的 8 位无符号整数,等同于 uint8_t。
uintpunsigned int/unsigned long longSteam 版本的未签名类型,用来装一个指针,等同于 uintptr_t (只在 Steam 内部使用)。
ulint64unsigned long int只在 Steam 内部使用。

常量

以下是定义来与 steam_api 一起使用的常量。

名称类型描述
BREAKPAD_INVALID_HANDLEint(BREAKPAD_HANDLE)0
k_cchGameExtraInfoMaxint64ISteamUser::TrackAppUsageEventpchExtraInfo 参数的最大大小(UTF-8 字节,包括 null 终止符)。
k_cubSaltSizeint8只在 Steam 内部使用。
k_GIDNilGID_t0xffffffffffffffffull只在 Steam 内部使用。
k_HAuthTicketInvalidHAuthTicket0无效用户验证票证。
k_JobIDNilJobID_t0xffffffffffffffffull只在 Steam 内部使用。
k_steamIDLanModeGSintCSteamID(此 Steam ID 来自连至 sv_lan GS 的用户游戏连接。
k_steamIDNilintCSteamID()通用无效 CSteamID。
k_steamIDNonSteamGSintCSteamID(此 Steam ID 可以来自用户游戏与游戏服务器的连接,该游戏服务器不使用 Steam 验证系统,但仍
希望支持好友列表中的“加入游戏”选项。
k_steamIDNotInitYetGSintCSteamID(此 Steam ID 可以来自用户游戏与游戏服务器的连接,该游戏服务器刚启动但尚未初始化
其 steam3 组件以开始登录。
k_steamIDOutofDateGSintCSteamID(此 Steam ID 来自连至过期游戏服务器的用户游戏连接,该游戏服务器尚未执行协议以提供其 Steam ID。
k_TxnIDNilGID_tk_GIDNil只在 Steam 内部使用。
k_TxnIDUnknownGID_t0只在 Steam 内部使用。
k_uAPICallInvalidSteamAPICall_t0x0无效 Steam API 调用句柄。
k_uAppIdInvalidAppId_t0x0无效 App ID。
k_uBundleIdInvalidBundleId_t0只在 Steam 内部使用。
k_uCellIDInvalidCellID_t0xFFFFFFFF只在 Steam 内部使用。
k_uDepotIdInvalidDepotId_t0x0无效 Depot ID。
k_ulAssetClassIdInvalidAssetClassId_t0x0只在 Steam 内部使用。
k_uManifestIdInvalidManifestId_t0只在 Steam 内部使用。
k_unSteamAccountIDMaskunsigned int0xFFFFFFFF用于在 CSteamID 中掩盖 AccountID_t
k_unSteamAccountInstanceMaskunsigned int0x000FFFFF用于在 CSteamID 中掩盖帐户实例。
k_unSteamUserConsoleInstanceunsigned int2CSteamID 用于标识从游戏主机登录的用户。
k_unSteamUserDesktopInstanceunsigned int1CSteamID 用于标识从桌面客户端登录的用户。
k_unSteamUserWebInstanceunsigned int4CSteamID 用于标识从网页登录的用户。
k_uPackageIdFreeSubPackageId_t0x0只在 Steam 内部使用。
k_uPackageIdInvalidPackageId_t0xFFFFFFFF只在 Steam 内部使用。
k_uPartnerIdInvalidPartnerId_t0只在 Steam 内部使用。
k_uPhysicalItemIdInvalidPhysicalItemId_t0x0只在 Steam 内部使用。
QUERY_PORT_ERRORint0xFFFE我们无法为此服务器获得查询端口。
QUERY_PORT_NOT_INITIALIZEDint0xFFFF-----------------------------------------------------------------------------
用于查询端口的常量。
-----------------------------------------------------------------------------
我们尚未要求游戏服务器提供此查询端口的实际值。