パスを指定すると、Mac OS Xで、通常のディレクトリ、通常のファイル、またはマウントされたDMGやその他のマウント可能なファイルタイプではなく、マウントされたCDまたはDVDであることを確認する方法はありますか?具体的には、ユーザーがパスを直接指定した場合、またはNSOpenPanelを介してパスを指定した場合、またはCDをアプリにドラッグした場合に、それがCDかDVDかを知りたいです。このような場合、特別な措置を講じる必要があります。
2799 次
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 に答える