0 votos

Simular cómo se monta un volumen utilizando diskarbitrationd

Estoy intentando emular cómo se monta normalmente un volumen para mi volumen NTFS que he añadido a /private/etc/fstab . Normalmente, cuando se encuentra un volumen, como un disco duro externo, se monta y luego se pone un acceso directo a ese volumen en el Escritorio y en la barra lateral izquierda del Finder. Sin embargo, ya que para montar un volumen NTFS como lectura-escritura en fstab la bandera nobrowse debe añadirse, esto evita que aparezca en el escritorio y en la barra lateral del Finder.

Mi investigación me ha llevado a diskarbitrationd como el programa que escucha los nuevos volúmenes y los monta. Me gustaría emular la adición automática de accesos directos al escritorio y al Finder y la eliminación al desmontar el volumen, y me gustaría hacer un script que escuche la información de diskarbitationd y hacer el procesamiento por mí.

¿Cómo me engancharía a diskarbitrationd y escuchar los nuevos eventos, y luego añadir los accesos directos al escritorio y al Finder después de montar el volumen?

Gracias por su ayuda.

1voto

Jose Chavez Puntos 645

Usted se engancha a diskarbitrationd utilizando el marco de Arbitraje de Disco de Apple. Básicamente se llama a DASessionCreate() para crear una DASessionRef, y luego se registran una o más llamadas de notificación.

Tendrías que registrarte en el DARegisterDiskMountApprovalCallback. Esto le da una notificación cada vez que diskarbitrationd va a montar algo nuevo. Devolviendo un DADissenterRef desde esta devolución de llamada, puede evitar que diskarbitrationd monte realmente el sistema de archivos.

A continuación, puede montar el sistema de archivos usted mismo y crear accesos directos, etc., utilizando métodos estándar, como la llamada al sistema mount().

Aquí hay un enlace directo a la página de la guía de programación, tendrá que examinar:

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X