异步回调与调用结果字段参考

Steam 创意工坊异步回调与调用结果字段参考

游戏和工具接入 Steam 创意工坊时,需要区分异步请求的调用结果与广播事件。本页列出 ISteamUGC 和订阅相关结构的全部文档字段,帮助开发者匹配请求、过滤应用并处理失败。

工坊发布与加载流程

接收事件与结果

返回 SteamAPICall_t 的调用通过对应 CCallResult 接收该次请求的结果;广播事件由监听对象接收。两者都需要定期调用 SteamAPI_RunCallbacks,服务器使用对应服务器回调循环。先检查 bIOFailure,再按具体结构检查结果字段:通常是 m_eResult,旧详情结果 SteamUGCRequestUGCDetailsResult_t 则检查 m_details.m_eResult。有 App ID 的广播事件应过滤其他应用。对象和 CCallResult 必须存活至请求完成,同一 CCallResult 只跟踪最近绑定的请求。

创建和提交更新时,m_eResult 可用于区分以下常见情况;具体含义仍应结合对应请求、日志和 SDK 版本判断。

结果 排查方向
k_EResultOK 操作成功;仍应检查是否需要用户处理协议。
k_EResultInsufficientPrivilege、k_EResultBanned 创建者当前没有上传权限,可引导其查看账号状态或联系 Steam 客服。
k_EResultTimeout、k_EResultServiceUnavailable 请求超时或服务暂不可用,可稍后重试。
k_EResultNotLoggedOn 检查 Steam 登录状态。
k_EResultInvalidParam 检查提交字段、应用 ID、ISteamUGC 配置及预览文件;提交更新时预览文件不得小于 16 字节。
k_EResultAccessDenied 检查账号对应用的许可和操作权限。
k_EResultLimitExceeded 检查 Steam 云配额及预览图大小;提交预览图须小于 1 MB。
k_EResultFileNotFound 检查上传文件、内容目录和预览文件是否存在且可读取。
k_EResultDuplicateRequest、k_EResultDuplicateName 前者可能表示文件已上传;后者表示已有同名项目,应先检查现有内容再重试。
k_EResultServiceReadOnly 账号近期修改敏感信息后可能暂时限制上传,持续时间依账号情况而定。
k_EResultLockingFailed、k_EResultFail 前者表示 UGC 锁获取失败,后者为一般失败;结合日志定位。

AddAppDependencyResult_t

调用结果。关联接口:AddAppDependency。应用依赖添加请求完成。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_nAppID AppId_t 与操作关联的应用或 DLC App ID。

AddUGCDependencyResult_t

调用结果。关联接口:AddDependency。项目依赖添加请求完成。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_nChildPublishedFileId PublishedFileId_t 作为依赖或合集成员的子项目 ID。

CreateItemResult_t

调用结果。关联接口:CreateItem。创建项目完成;成功后保存项目 ID,协议标志为真时引导用户处理协议。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_bUserNeedsToAcceptWorkshopLegalAgreement bool 用户是否需要处理创意工坊协议;为 true 时应引导用户完成。

DownloadItemResult_t

广播事件。关联接口:DownloadItem。项目下载结束。此事件会送达多个运行中的应用,处理前核对 App ID、项目 ID 和结果。DownloadItem 返回 bool,不能把它当成 CCallResult 句柄。

字段 类型 含义
m_unAppID AppId_t 项目所属应用的 App ID;事件处理时应过滤其他应用。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。

GetAppDependenciesResult_t

调用结果。关联接口:GetAppDependencies。应用依赖查询结束。返回数量可能小于匹配总数,遍历数组时使用实际返回数量。官方函数页面有重复声明,返回类型有冲突,请以 SDK 头文件为准。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_rgAppIDs AppId_t 返回的应用依赖 ID 数组。
m_nNumAppDependencies uint32 数组中本次实际返回的依赖数量。
m_nTotalNumAppDependencies uint32 找到的应用依赖总数量。

DeleteItemResult_t

调用结果。关联接口:DeleteItem。删除请求结束;删除不可撤销,工具应在调用前确认目标。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。

GetUserItemVoteResult_t

调用结果。关联接口:GetUserItemVote。读取用户对项目的投票状态后到达。

字段 类型 含义
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_bVotedUp bool 用户是否对该项目投了赞成票。
m_bVotedDown bool 用户是否对该项目投了反对票。
m_bVoteSkipped bool 用户是否跳过对该项目的投票。

ItemInstalled_t

广播事件。关联接口:GetItemInstallInfo。项目安装或更新后到达;核对 App ID,再检查安装状态并获取目录。安装事件并不保证游戏内容格式可用。

字段 类型 含义
m_unAppID AppId_t 项目所属应用的 App ID;事件处理时应过滤其他应用。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。

RemoveAppDependencyResult_t

调用结果。关联接口:RemoveAppDependency。移除应用依赖请求完成。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_nAppID AppId_t 与操作关联的应用或 DLC App ID。

RemoveUGCDependencyResult_t

调用结果。关联接口:RemoveDependency。移除项目依赖请求完成。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_nChildPublishedFileId PublishedFileId_t 作为依赖或合集成员的子项目 ID。

SetUserItemVoteResult_t

调用结果。关联接口:SetUserItemVote。投票请求完成。

字段 类型 含义
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_bVoteUp bool 本次投票方向;true 为赞成,false 为反对。

StartPlaytimeTrackingResult_t

调用结果。关联接口:StartPlaytimeTracking。开始统计使用时间的请求完成。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。

SteamUGCQueryCompleted_t

调用结果。关联接口:SendQueryUGCRequest。查询完成;成功后按返回数量读取结果,使用完释放查询句柄。总匹配数不等于当前批次返回数。

字段 类型 含义
m_handle UGCQueryHandle_t 完成的查询句柄;读取结果并最终释放该句柄。
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_unNumResultsReturned uint32 本次查询实际返回的项目数量。
m_unTotalMatchingResults uint32 与查询条件匹配的项目总数。
m_bCachedData bool 数据是否来自本地缓存。

SteamUGCRequestUGCDetailsResult_t

调用结果。关联接口:RequestUGCDetails。旧详情查询的调用结果,已弃用;新代码使用详情查询和 SteamUGCQueryCompleted_t。

字段 类型 含义
m_details SteamUGCDetails_t 旧接口返回的项目详情;该接口和字段均已弃用。
m_bCachedData bool 数据是否来自本地缓存。

StopPlaytimeTrackingResult_t

调用结果。关联接口:StopPlaytimeTracking、StopPlaytimeTrackingForAllItems。停止指定项目或全部项目的游戏时间统计后到达。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。

SubmitItemUpdateResult_t

调用结果。关联接口:SubmitItemUpdate。提交更新结束;检查结果并处理协议提示。预览图片、文件路径、云配额和应用设置均可能影响提交。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_bUserNeedsToAcceptWorkshopLegalAgreement bool 用户是否需要处理创意工坊协议;为 true 时应引导用户完成。

UserFavoriteItemsListChanged_t

调用结果。关联接口:AddItemToFavorites、RemoveItemFromFavorites。收藏添加或移除请求的结果。

字段 类型 含义
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_bWasAddRequest bool true 代表添加收藏,false 代表移除收藏。

UserSubscribedItemsListChanged_t

广播事件。关联接口:SubscribeItem、UnsubscribeItem。与应用相关的订阅列表发生变化时通知;此结构只提供 App ID,应核对应用并重新读取列表。

字段 类型 含义
m_nAppID AppId_t 与操作关联的应用或 DLC App ID。

WorkshopEULAStatus_t

调用结果。关联接口:GetWorkshopEULAStatus。查询当前应用协议状态后到达。m_bAccepted 即使曾接受旧版也可能为真,应同时检查 m_bNeedsAction。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_nAppID AppId_t 与操作关联的应用或 DLC App ID。
m_unVersion uint32 适用时表示已签署的协议版本。
m_rtAction RTime32 适用时表示签署时间的 Unix 时间戳。
m_bAccepted boolean 是否接受协议;接受过旧版本时也可能为 true。
m_bNeedsAction boolean 用户是否需要处理最新协议。

RemoteStoragePublishedFileSubscribed_t

广播事件。关联接口:SubscribeItem。订阅发生时通知,核对 App ID;这与发起订阅操作的调用结果不同。

字段 类型 含义
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_nAppID AppId_t 消费该项目的应用 ID,处理通知时应过滤其他应用。

RemoteStoragePublishedFileUnsubscribed_t

广播事件。关联接口:UnsubscribeItem。取消订阅发生时通知,核对 App ID;此事件也可能来自游戏外的订阅变化。

字段 类型 含义
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。
m_nAppID AppId_t 消费该项目的应用 ID,处理通知时应过滤其他应用。

RemoteStorageSubscribePublishedFileResult_t

调用结果。关联接口:SubscribeItem。订阅请求的结果。ISteamUGC 页面将此调用的结果名称写为旧更新结果;RemoteStorage 页面明确关联本结构,使用时核对 SDK。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。

RemoteStorageUnsubscribePublishedFileResult_t

调用结果。关联接口:UnsubscribeItem。取消订阅请求的结果。

字段 类型 含义
m_eResult EResult Steam 操作结果;检查是否为 k_EResultOK,并按错误码处理。
m_nPublishedFileId PublishedFileId_t 与本次操作或通知关联的已发布项目 ID。

参考:ISteamUGC 回调、ISteamRemoteStorage 回调、Steamworks API 回调与调用结果。