/** Scan for drives. This function MUST be called until it returns nonzero.
In case of re-scanning:
All pointers to struct burn_drive and all struct burn_drive_info arrays
are invalidated by using this function. Do NOT store drive pointers across
calls to this function !
To avoid invalid pointers one MUST free all burn_drive_info arrays
by burn_drive_info_free() before calling burn_drive_scan() a second time.
If there are drives left, then burn_drive_scan() will refuse to work.
After this call all drives depicted by the returned array are subject
to eventual (O_EXCL) locking. See burn_preset_device_open(). This state
ends either with burn_drive_info_forget() or with burn_drive_release().
It is unfriendly to other processes on the system to hold drives locked
which one does not definitely plan to use soon.
@param drive_infos Returns an array of drive info items (cdroms/burners).
The returned array must be freed by burn_drive_info_free()
before burn_finish(), and also before calling this function
burn_drive_scan() again.
@param n_drives Returns the number of drive items in drive_infos.
@return 0 while scanning is not complete
>0 when it is finished successfully,
<0 when finished but failed.
*/
int burn_drive_scan(struct burn_drive_info *drive_infos[],
unsigned int *n_drives);
博主我用这个函数为甚麽会一直返回0呢