Pergunta

Dado um caminho, no Mac OS X, há uma maneira de dizer que ele é um montado CD ou DVD, ao contrário de um diretório regular, um arquivo regular, ou montado DMG ou outro tipo de arquivo montável? Especificamente, gostaria de saber se é um CD ou DVD quando um usuário fornece um caminho diretamente, ou através do NSOpenPanel, ou arrasta o CD para o aplicativo. Eu preciso fazer alguma ação especial nestes casos.

Foi útil?

Solução

Confira VolumeToBSDNode exemplo de código da Apple. Eu acredito que deve ter os bits de código que você precisa.

Descrição

Shows como iterar em todos os volumes montados e recuperar o nome do nó BSD (/ dev / disk *) para cada volume. Essa informação é usada para determinar se o volume está em um CD, DVD ou outra mídia de armazenamento.

Como Kent assinala, a chamada PBHGetVolParmsSync neste exemplo é obsoleto. Aqui está um diff para usar a nova função:

-            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));
+
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top