4

给定一个路径,在 Mac OS X 中,有没有办法告诉它是挂载的 CD 或 DVD,而不是常规目录、常规文件、挂载的 DMG 或其他可挂载的文件类型?具体来说,当用户直接提供路径或通过 NSOpenPanel 或将 CD 拖到应用程序上时,我想知道它是 CD 还是 DVD。在这些情况下,我需要采取特殊行动。

4

1 回答 1

6

查看 Apple 的VolumeToBSDNode示例代码。我相信它应该有你需要的代码位。

描述

展示如何遍历所有已安装的卷并检索每个卷的 BSD 节点名称 (/dev/disk*)。该信息用于确定卷是否位于 CD、DVD 或其他一些存储介质上。

正如 Kent 指出的那样,PBHGetVolParmsSync此示例中的调用已被弃用。这是使用较新功能的差异:

-            HParamBlockRec pb;

-            // Use the volume reference number to retrieve the volume parameters. See the documentation
-            // on PBHGetVolParmsSync for other possible ways to specify a volume.
-            pb.ioParam.ioNamePtr = NULL;
-            pb.ioParam.ioVRefNum = actualVolume;
-            pb.ioParam.ioBuffer = (Ptr) &volumeParms;
-            pb.ioParam.ioReqCount = sizeof(volumeParms);
-            
-            // A version 4 GetVolParmsInfoBuffer contains the BSD node name in the vMDeviceID field.
-            // It is actually a char * value. This is mentioned in the header CoreServices/CarbonCore/Files.h.
-            result = PBHGetVolParmsSync(&pb);
+            // Use FSGetVolumeParms instead of the deprecated PBHGetVolParmsSync
+            result = FSGetVolumeParms(actualVolume, &volumeParms, sizeof(volumeParms));
+
于 2009-11-08T23:10:12.873 回答