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.13.0.0".


Mostriamo un esempio:

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
            
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(Null, DRIVER_UNKNOWN)
  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