0 votes

Simuler comment un volume est monté en utilisant diskarbitrationd

Je tente d'émuler comment un volume est normalement monté pour mon volume NTFS que j'ai ajouté à /private/etc/fstab. Normalement, lorsqu'un volume est trouvé, comme un disque dur externe, il est monté et puis un raccourci vers ce volume est placé sur le bureau et dans la barre latérale gauche du Finder. Cependant, puisqu'un volume NTFS doit être monté en lecture/écriture dans fstab, le drapeau nobrowse doit être ajouté, ce qui empêche qu'il apparaisse sur le bureau et dans la barre latérale du Finder.

Mes recherches m'ont dirigé vers diskarbitrationd en tant que programme qui écoute les nouveaux volumes et les monte. J'aimerais émuler l'ajout automatique de raccourcis sur le bureau et dans le Finder et la suppression lors du démontage du volume, et j'aimerais créer un script qui écoute les informations de diskarbitrationd et fait le traitement pour moi.

Comment pourrais-je me connecter à diskarbitrationd et écouter les nouveaux événements, puis ajouter les raccourcis sur le bureau et dans le Finder une fois que le volume est monté ?

Merci pour votre aide !

1voto

Jose Chavez Points 645

Vous vous connectez à diskarbitrationd en utilisant le framework Disk Arbitration d'Apple. Fondamentalement, vous appelez DASessionCreate() pour créer un DASessionRef, puis enregistrez un ou plusieurs rappels de notification.

Vous devriez vous inscrire au DARegisterDiskMountApprovalCallback. Cela vous donne une notification chaque fois que diskarbitrationd s'apprête à monter quelque chose de nouveau. En renvoyant un DADissenterRef de ce rappel, vous pouvez empêcher diskarbitrationd de monter réellement le système de fichiers.

Ensuite, vous pouvez monter le système de fichiers vous-même et créer des raccourcis, etc. en utilisant des méthodes standard, comme l'appel système mount().

Voici un lien direct vers la page dans le guide de programmation que vous devrez examiner :

https://developer.apple.com/library/mac/documentation/DriversKernelHardware/Conceptual/DiskArbitrationProgGuide/ArbitrationBasics/ArbitrationBasics.html#//apple_ref/doc/uid/TP40009310-CH2-SW1

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X