Conoscere lo stato di un lettore CD con le funzioni del API di libcdio

Da Gambas-it.org - Wikipedia.
Versione del 22 ago 2014 alle 06:13 di Vuott (Discussione | contributi) (Creata pagina con 'La libreria '''''Libcdio''''' consente di gestire i CD ed i relativi driver presenti nel sistema. Per utilizzare le funzioni esterne del API di ''libcdio'' sarà necessario r...')

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

La libreria Libcdio consente di gestire i CD ed i relativi driver presenti nel sistema.

Per utilizzare le funzioni esterne del API di libcdio sarà necessario richiamare l'attuale libreria: "libcdio.so.13.0.0".


Mostriamo un semplice codice che consentirà di sapere se lo stato del lettore CD è mutato o no; ossia se è stato appena inserito un CD oppure se è stato appena estratto.

Private p_cdio As Pointer

Library "libcdio:13.0.0"

Private Enum DRIVER_UNKNOWN = 0, DRIVER_AIX, DRIVER_BSDI, DRIVER_FREEBSD, DRIVER_NETBSD, DRIVER_LINUX, DRIVER_SOLARIS,
             DRIVER_OS2, DRIVER_OSX, DRIVER_WIN32, DRIVER_CDRDAO, DRIVER_BINCUE, DRIVER_NRG, DRIVER_DEVICE
            
' CdIo_t * cdio_open (const char *psz_source, driver_id_t driver_id)
' Sets up to read from place specified by psz_source and driver_id.
Private Extern cdio_open(psz_source As String, driver_id As Integer) As Pointer

' int cdio_get_media_changed(CdIo_t * p_cdio)
' Find out if media has changed since the last call.
Private Extern cdio_get_media_changed(cdioP As Pointer) As Integer

' void cdio_destroy(CdIo_t * p_cdio)
' Free any resources associated with p_cdio.
Private Extern cdio_destroy(cdioP As Pointer)


Public Sub Form_Open()

 p_cdio = cdio_open(Null, DRIVER_UNKNOWN)
 If IsNull(p_cdio) Then Error.Raise("Impossibile trovare il driver per il CD !")
   
 If cdio_get_media_changed(p_cdio)
   Print "Stato iniziale del lettore CD: cambiato"
 Else 
   Print "Stato iniziale del lettore CD: non cambiato"
 Endif

End


Public Sub Button1_Click()

 If cdio_get_media_changed(p_cdio)
   Print "Stato attuale del lettore CD: cambiato"
 Else 
   Print "Stato attuale del lettore CD: non cambiato"
 Endif

End


Public Sub Button2_Click()

' Va in chiusura:
 cdio_destroy(p_cdio)
 
 Quit

End



Riferimenti