OSX将32位转换为64位GetVolParmsInfoBuffer

时间:2014-08-21 13:13:27

标签: macos 32bit-64bit

我继承了大约OSX 10.5 / 10.7的遗留代码,需要升级到OSX 10.9。我发现推荐的代码现已弃用,但我不知道该替换它的内容。例如,我有以下内容:

01  HParamBlockRec  pb;
02   
03  /* check parameters */
04  require_action((NULL != volParmsInfo) && (NULL != actualInfoSize),
05      BadParameter, result = paramErr);
06   
07  pb.ioParam.ioNamePtr = NULL;
08  pb.ioParam.ioVRefNum = volRefNum;
09  pb.ioParam.ioBuffer = (Ptr)volParmsInfo;
10  pb.ioParam.ioReqCount = (SInt32)bufferSize;
11  result = PBHGetVolParmsSync(&pb);
网页搜索告诉我的

可以替换为

1   result = FSGetVolumeParms(volRefNum, volParmsInfo, sizeof(volParmsInfo));

但是,此网页也表示已弃用:Framework CoreServices/CoreServices.h

所以更多的网络搜索找到以下web page,其中说:"文件管理器 是OS X中管理组织,阅读和写作的核心服务数据位于物理数据存储设备上,例如磁盘驱动器。"似乎替换方法需要知道所请求的内容,以前的方法在调用者不需要指定的信息之后。

有什么方法可以弄清楚信息是什么?结构GetVolParmsInfoBuffer似乎可用,但是当我不知道要求什么时,如何找到关于如何填充结构的示例代码?或者我是否安全地玩并要求每一个可能的钥匙?这似乎不是很好的编码实践,但也许它是唯一的解决方案。

有什么想法吗?

0 个答案:

没有答案