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 回调与调用结果。