Sapere con le funzioni del API di libcdio se nel lettore CD/DVD è presente già un disco

Da Gambas-it.org - Wikipedia.

E' possibile sapere se in un lettore CD/DVD è presente o meno un disco mediante le risorse esterne del API di libcdio .

Per utilizzare le funzioni esterne del API di libcdio sarà necessario richiamare la libreria dinamica condivisa: "libcdio.so.18.0.0 ".


Mostriamo un esempio:

Library "libcdio:18.0.0"

Private Enum DRIVER_UNKNOWN = 0, DRIVER_AIX, DRIVER_FREEBSD, DRIVER_NETBSD,
             DRIVER_LINUX, DRIVER_SOLARIS, DRIVER_OSX, DRIVER_WIN32,
             DRIVER_CDRDAO, DRIVER_BINCUE, DRIVER_NRG, DRIVER_DEVICE
            
Private Const CDIO_DISC_MODE_ERROR As Integer = 17
 
' 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

' discmode_t cdio_get_discmode (CdIo_t *p_cdio)
' Get disc mode - the kind of CD (CD-DA, CD-ROM mode 1, CD-MIXED, etc. that we've got.
Private Extern cdio_get_discmode(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 Main()

 Dim p_cdio As Pointer
 
 p_cdio = cdio_open("/dev/file-device_del_cdrom", DRIVER_LINUX)
 If p_cdio == 0 Then Error.Raise("Impossibile trovare il file-device del driver CD/DVD !")
  
' Verifica se nel lettore CD-DVD è presente un disco:
 If cdio_get_discmode(p_cdio) == CDIO_DISC_MODE_ERROR Then
   Print "Non è presente nel lettore CD-DVD alcun disco !"
 Else
   Print "E' già presente un disco nel lettore CD-DVD."
 Endif
 
' Va in chiusura:
 cdio_destroy(p_cdio)
  
End