Ghi Dia
Ghi Dia
exe
imports imapi2
imports system.io
imports system
'find a recorder
dim recordername as string = findrecorder()
if recordername is nothing then
lblprocess1.text = "no recorder found."
txtpath.enabled = false
cmbdevice.enabled = false
btnbrowser.enabled = false
btnrecord.enabled = false
exit sub
end if
'initialize recorder
dim recorder as new msftdiscrecorder2
recorder.initializediscrecorder(recordername)
end sub
dim fpath
dim stream
dim drive as string = ""
try
'directory of files to burn
fpath = txtpath.text
'initialize recorder
dim recorder as new msftdiscrecorder2
recorder.initializediscrecorder(recordername)
'is there a better way to do this? doesn't look like a bitfield based
on the enums (saddened)
if (not
features.contains(imapi_feature_page_type.imapi_feature_page_type_bd_write) _
and not
features.contains(imapi_feature_page_type.imapi_feature_page_type_cd_rw_media_writ
e_support) _
and not
features.contains(imapi_feature_page_type.imapi_feature_page_type_cdrw_cav_write)
_
and not
features.contains(imapi_feature_page_type.imapi_feature_page_type_double_density_c
d_r_write) _
and not
features.contains(imapi_feature_page_type.imapi_feature_page_type_double_density_c
d_rw_write) _
and not
features.contains(imapi_feature_page_type.imapi_feature_page_type_dvd_dash_write)
_
and not
features.contains(imapi_feature_page_type.imapi_feature_page_type_dvd_plus_r) _
and not
features.contains(imapi_feature_page_type.imapi_feature_page_type_dvd_plus_r_dual_
layer) _
and not
features.contains(imapi_feature_page_type.imapi_feature_page_type_dvd_plus_rw) _
and not
features.contains(imapi_feature_page_type.imapi_feature_page_type_hd_dvd_write) _
and not
features.contains(imapi_feature_page_type.imapi_feature_page_type_cd_mastering)) _
then
end if
fsi.chooseimagedefaults(recorder)
datawriter.write(stream)
for i as integer = 0 to 10
prbprocess.performstep()
next
lblprocess1.text = "----- finished writing content -----"
catch ex as exception
msgbox(ex.message)
end try
end sub
case
imapi2.imapi_format2_data_write_action.imapi_format2_data_write_action_validating_
media
strtimestatus = "validating media " + strtimestatus
exit select
case
imapi2.imapi_format2_data_write_action.imapi_format2_data_write_action_formatting_
media
strtimestatus = "formatting media " + strtimestatus
exit select
case
imapi2.imapi_format2_data_write_action.imapi_format2_data_write_action_initializin
g_hardware
strtimestatus = "initializing hardware " + strtimestatus
exit select
case
imapi2.imapi_format2_data_write_action.imapi_format2_data_write_action_calibrating
_power
strtimestatus = "calibrating power (opc) " + strtimestatus
exit select
case
imapi2.imapi_format2_data_write_action.imapi_format2_data_write_action_writing_dat
a
dim totalsectors as long
dim writtensectors as long
dim percentdone as double
totalsectors = progress.sectorcount
writtensectors = progress.lastwrittenlba - progress.startlba
percentdone = writtensectors * 100
percentdone /= totalsectors
strtimestatus = "progress: " + percentdone.tostring("0.00") +
"% " + strtimestatus
exit select
case
imapi2.imapi_format2_data_write_action.imapi_format2_data_write_action_finalizatio
n
strtimestatus = "finishing the writing " + strtimestatus
exit select
case
imapi2.imapi_format2_data_write_action.imapi_format2_data_write_action_completed
strtimestatus = "completed the burn."
exit select
case else
strtimestatus = "unknown action: " + progress.currentaction
exit select
end select
'program.log(strtimestatus)
catch ex as exception
msgbox(ex.message)
'program.log("update exception: message: {0}\nstack trace: {1}",
e.message, e.stacktrace.tostring());
end try
end sub
end class
///////////////////--------------------////////////////////
imports system.runtime.interopservices
imports imapi2
module module1
sub main()
'find a recorder
dim recordername as string = findrecorder()
if recordername is nothing then
console.writeline("no recorder found. exiting")
return
end if
'initialize recorder
dim recorder as new msftdiscrecorder2
recorder.initializediscrecorder(recordername)
end sub
<flags()> _
public enum mediastatus : imapi_format2_data_media_state
appendable =
imapi2.imapi_format2_data_media_state.imapi_format2_data_media_state_appendable
blank =
imapi2.imapi_format2_data_media_state.imapi_format2_data_media_state_blank
erase_required =
imapi2.imapi_format2_data_media_state.imapi_format2_data_media_state_erase_require
d
final_session =
imapi2.imapi_format2_data_media_state.imapi_format2_data_media_state_final_session
finalized =
imapi2.imapi_format2_data_media_state.imapi_format2_data_media_state_finalized
non_empty_session =
imapi2.imapi_format2_data_media_state.imapi_format2_data_media_state_non_empty_ses
sion
overwrite_only =
imapi2.imapi_format2_data_media_state.imapi_format2_data_media_state_overwrite_onl
y
'unknown =
imapi2.imapi_format2_data_media_state.imapi_format2_data_media_state_unknown
randomly_writable =
imapi2.imapi_format2_data_media_state.imapi_format2_data_media_state_randomly_writ
able
end enum
end module
///////////////////----------------------
imports imapi2
imports imapi2fs
class comboitem
public recorder as imapi2.idiscrecorder2
public sub new(byval rec as imapi2.idiscrecorder2)
recorder = rec
end sub
//////////////////-------------------
end class