4

パスを指定すると、Mac OS Xで、通常のディレクトリ、通常のファイル、またはマウントされたDMGやその他のマウント可能なファイルタイプではなく、マウントされたCDまたはDVDであることを確認する方法はありますか?具体的には、ユーザーがパスを直接指定した場合、または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 に答える