dsmGetNextQObj

dsmGetNextQObj 函数调用从先前的 dsmBeginQuery 调用中获取下一个查询响应,并将响应放置在调用者缓冲区中。

dsmGetNextQObj 调用既可调用一次,也可调用多次。 每次调用函数时,都将检索到单个查询记录,否则将返回错误或 DSM_RC_FINISHED 原因码。 如果返回了 DSM_RC_FINISHED,那么无需处理更多数据。 如果已检索到所有查询数据或者无需更多查询数据,请发送 dsmEndQuery 调用以结束查询过程。

dataBlkPtr 参数必须指向使用 qryResp*Data 结构类型定义的缓冲区。 调用 dsmGetNextQObj 所在的上下文确定查询响应中输入的结构类型。

语法

dsInt16_t dsmGetNextQObj (dsUint32_t   dsmHandle,
   DataBlk *dataBlkPtr);

参数

dsUint32_t dsmHandle (I)
将此调用与之前的 dsmInitEx 调用相关联的句柄。
DataBlk *dataBlkPtr (I/O)
指向包括用于要接收的数据的缓冲区的指针和缓冲区大小的结构。 该缓冲区是 qryResp*Data 响应结构。 返回时,此结构包含转移的字节数。 下表中描述了与每个查询类型相关联的结构。 有关 DataBlk的类型定义的更多信息,请参阅以下主题: API 类型定义源文件
表 1. DataBlk 指针结构
查询 响应结构 特别注意的字段
qtArchive qryRespArchiveData
sizeEstimate
包含在先前的 dsmSendObj 调用上传递的值。
mediaClass
如果对象位于磁盘上,那么值可以为 MEDIA_FIXED,或者如果对象位于磁带上,那么值可以为 MEDIA_LIBRARY
clientDeduplicated
指示客户机是否对此对象进行重复数删除。
qtBackup qryRespBackupData
restoreOrderExt
类型为 dsUint16_t。 在 dsmBeginGetData 调用上复原多个对象时,对此字段进行排序。 API 示例中提供对此调用的代码进行排序的示例,dapiqry.c。 有关排序示例,请参阅以下主题: 图 1
sizeEstimate
包含在先前的 dsmSendObj 调用上传递的值。
mediaClass
如果对象位于磁盘上,那么值可以为 MEDIA_FIXED,或者如果对象位于磁带上,那么值可以为 MEDIA_LIBRARY
clientDeduplicated
指示客户机是否对此对象进行重复数删除。
qtBackupActive qryARespBackupData  
qtBackupGroups qryRespBackupData
dsBool_t isGroupLeader
如果为 true,那么表明此对象是组引导符。
qtOpenGroups qryRespBackupData
dsBool_t isOpenGroup;
如果为 true,那么表明此组已打开且未完成。
qtFilespace qryRespFSData
backStartDate
包含使用 backStartDate 操作更新文件空间时的服务器时间戳记。
backCompleteDate
包含使用 backCompleteDate 操作更新文件空间时的服务器时间戳记。
lastReplStartDate
包含上次在服务器上启动复制的时间戳记。
lastReplCmpltDate
包含上次完成复制的时间戳记,即使存在故障。
lastBackOpDateFromServer
包含上次在服务器上进行保存的存储时间戳记。
lastBackOpDateFromLocal
包含上次在客户机上进行保存的存储时间戳记。
qtMC
qryRespMCData
qryRespMCDetailData
 
qtProxyNodeAuth
qryRespProxyNodeData
targetNodeName
peerNodeName
hlAddress
llAddress
 
qtProxyNodePeer
qryRespProaxyNodeData
targetNodeName
peerNodeName
hlAddress
llAddress
 

返回码

下表描述了 dsmGetNextQObj 函数调用的返回码。

表 2. dsmGetNextQObj 函数调用的返回码
返回码 返回码编号 描述
DSM_RC_ABORT_NO_MATCH 2 没有与请求的查询相匹配的结果。
DSM_RC_FINISHED 121 已完成处理(开始 dsmEndQuery)。 无需处理其他数据。
DSM_RC_UNKNOWN_FORMAT 122 IBM® Storage Protect 尝试复原或检索的文件的格式未知。
DSM_RC_COMM_PROTOCOL_ERROR 136 通信协议错误。
DSM_RC_NULL_DATABLKPTR 2001 指针没有指向数据块。
DSM_RC_INVALID_MCNAME 2025 无效的管理类名称。
DSM_RC_BAD_CALL_SEQUENCE 2041 调用顺序无效。
DSM_RC_WRONG_VERSION_PARM 2065 应用程序客户机 API 的版本与 IBM Storage Protect 库版本不同。
DSM_RC_MORE_DATA 2200 还可获取更多数据。
DSM_RC_BUFF_TOO_SMALL 2210 缓冲区过小。