habe mal vorhandene codes etwas vereinfacht ...
Code: Alles auswählen
Interface IDiscMaster2 Extends IDispatch
get__NewEnum(a)
get_Item(a,b)
get_Count(a)
get_IsSupportedEnvironment(a)
EndInterface
Interface IDiscRecorder2 Extends IDispatch
EjectMedia()
CloseTray()
AcquireExclusiveAccess(a,b)
ReleaseExclusiveAccess()
DisableMcn()
EnableMcn()
InitializeDiscRecorder(a)
get_ActiveDiscRecorder(a)
get_VendorId(a)
get_ProductId(a)
get_ProductRevision(a)
get_VolumeName(a)
get_VolumePathNames(a)
get_DeviceCanLoadMedia(a)
get_LegacyDeviceNumber(a)
get_SupportedFeaturePages(a)
get_CurrentFeaturePages(a)
get_SupportedProfiles(a)
get_CurrentProfiles(a)
get_SupportedModePages(a)
get_ExclusiveAccessOwner(a)
EndInterface
#IMAPI_PROFILE_TYPE_INVALID = 0
#IMAPI_PROFILE_TYPE_NON_REMOVABLE_DISK = 1
#IMAPI_PROFILE_TYPE_REMOVABLE_DISK = 2
#IMAPI_PROFILE_TYPE_MO_ERASABLE = 3
#IMAPI_PROFILE_TYPE_MO_WRITE_ONCE = 4
#IMAPI_PROFILE_TYPE_AS_MO = 5
#IMAPI_PROFILE_TYPE_CDROM = 8
#IMAPI_PROFILE_TYPE_CD_RECORDABLE = 9
#IMAPI_PROFILE_TYPE_CD_REWRITABLE = $a
#IMAPI_PROFILE_TYPE_DVDROM = $10
#IMAPI_PROFILE_TYPE_DVD_DASH_RECORDABLE = $11
#IMAPI_PROFILE_TYPE_DVD_RAM = $12
#IMAPI_PROFILE_TYPE_DVD_DASH_REWRITABLE = $13
#IMAPI_PROFILE_TYPE_DVD_DASH_RW_SEQUENTIAL = $14
#IMAPI_PROFILE_TYPE_DVD_DASH_R_DUAL_SEQUENTIAL = $15
#IMAPI_PROFILE_TYPE_DVD_DASH_R_DUAL_LAYER_JUMP = $16
#IMAPI_PROFILE_TYPE_DVD_PLUS_RW = $1a
#IMAPI_PROFILE_TYPE_DVD_PLUS_R = $1b
#IMAPI_PROFILE_TYPE_DVD_PLUS_RW_DUAL = $2a
#IMAPI_PROFILE_TYPE_DVD_PLUS_R_DUAL = $2b
#IMAPI_PROFILE_TYPE_BD_ROM = $40
#IMAPI_PROFILE_TYPE_BD_R_SEQUENTIAL = $41
#IMAPI_PROFILE_TYPE_BD_R_RANDOM_RECORDING = $42
#IMAPI_PROFILE_TYPE_BD_REWRITABLE = $43
#IMAPI_PROFILE_TYPE_HD_DVD_ROM = $50
#IMAPI_PROFILE_TYPE_HD_DVD_RECORDABLE = $51
#IMAPI_PROFILE_TYPE_HD_DVD_RAM = $52
#IMAPI_PROFILE_TYPE_DDCDROM = $20
#IMAPI_PROFILE_TYPE_DDCD_RECORDABLE = $21
#IMAPI_PROFILE_TYPE_DDCD_REWRITABLE = $0022
#IMAPI_PROFILE_TYPE_NON_STANDARD = $ffff
#IMAPI_FEATURE_PAGE_TYPE_PROFILE_LIST = 0
#IMAPI_FEATURE_PAGE_TYPE_CORE = $1
#IMAPI_FEATURE_PAGE_TYPE_MORPHING = $2
#IMAPI_FEATURE_PAGE_TYPE_REMOVABLE_MEDIUM = $3
#IMAPI_FEATURE_PAGE_TYPE_WRITE_PROTECT = $4
#IMAPI_FEATURE_PAGE_TYPE_RANDOMLY_READABLE = $10
#IMAPI_FEATURE_PAGE_TYPE_CD_MULTIREAD = $1d
#IMAPI_FEATURE_PAGE_TYPE_CD_READ = $1e
#IMAPI_FEATURE_PAGE_TYPE_DVD_READ = $1f
#IMAPI_FEATURE_PAGE_TYPE_RANDOMLY_WRITABLE = $20
#IMAPI_FEATURE_PAGE_TYPE_INCREMENTAL_STREAMING_WRITABLE = $21
#IMAPI_FEATURE_PAGE_TYPE_SECTOR_ERASABLE = $22
#IMAPI_FEATURE_PAGE_TYPE_FORMATTABLE = $23
#IMAPI_FEATURE_PAGE_TYPE_HARDWARE_DEFECT_MANAGEMENT = $24
#IMAPI_FEATURE_PAGE_TYPE_WRITE_ONCE = $25
#IMAPI_FEATURE_PAGE_TYPE_RESTRICTED_OVERWRITE = $26
#IMAPI_FEATURE_PAGE_TYPE_CDRW_CAV_WRITE = $27
#IMAPI_FEATURE_PAGE_TYPE_MRW = $28
#IMAPI_FEATURE_PAGE_TYPE_ENHANCED_DEFECT_REPORTING = $29
#IMAPI_FEATURE_PAGE_TYPE_DVD_PLUS_RW = $2a
#IMAPI_FEATURE_PAGE_TYPE_DVD_PLUS_R = $2b
#IMAPI_FEATURE_PAGE_TYPE_RIGID_RESTRICTED_OVERWRITE = $2c
#IMAPI_FEATURE_PAGE_TYPE_CD_TRACK_AT_ONCE = $2d
#IMAPI_FEATURE_PAGE_TYPE_CD_MASTERING = $2e
#IMAPI_FEATURE_PAGE_TYPE_DVD_DASH_WRITE = $2f
#IMAPI_FEATURE_PAGE_TYPE_LAYER_JUMP_RECORDING = $33
#IMAPI_FEATURE_PAGE_TYPE_CD_RW_MEDIA_WRITE_SUPPORT = $37
#IMAPI_FEATURE_PAGE_TYPE_BD_PSEUDO_OVERWRITE = $38
#IMAPI_FEATURE_PAGE_TYPE_DVD_PLUS_R_DUAL_LAYER = $3b
#IMAPI_FEATURE_PAGE_TYPE_BD_READ = $40
#IMAPI_FEATURE_PAGE_TYPE_BD_WRITE = $41
#IMAPI_FEATURE_PAGE_TYPE_HD_DVD_READ = $50
#IMAPI_FEATURE_PAGE_TYPE_HD_DVD_WRITE = $51
#IMAPI_FEATURE_PAGE_TYPE_POWER_MANAGEMENT = $100
#IMAPI_FEATURE_PAGE_TYPE_SMART = $101
#IMAPI_FEATURE_PAGE_TYPE_EMBEDDED_CHANGER = $102
#IMAPI_FEATURE_PAGE_TYPE_CD_ANALOG_PLAY = $103
#IMAPI_FEATURE_PAGE_TYPE_MICROCODE_UPDATE = $104
#IMAPI_FEATURE_PAGE_TYPE_TIMEOUT = $105
#IMAPI_FEATURE_PAGE_TYPE_DVD_CSS = $106
#IMAPI_FEATURE_PAGE_TYPE_REAL_TIME_STREAMING = $107
#IMAPI_FEATURE_PAGE_TYPE_LOGICAL_UNIT_SERIAL_NUMBER = $108
#IMAPI_FEATURE_PAGE_TYPE_MEDIA_SERIAL_NUMBER = $109
#IMAPI_FEATURE_PAGE_TYPE_DISC_CONTROL_BLOCKS = $10a
#IMAPI_FEATURE_PAGE_TYPE_DVD_CPRM = $10b
#IMAPI_FEATURE_PAGE_TYPE_FIRMWARE_INFORMATION = $10c
#IMAPI_FEATURE_PAGE_TYPE_AACS = $10d
#IMAPI_FEATURE_PAGE_TYPE_VCPS = $110
Procedure.s Uni2Ansi(unicode.l)
ProcedureReturn PeekS(UnicodeToMultiByte_(unicode,#CP_ACP))
EndProcedure
pp.variant
pp\vt = #VT_BSTR
CoInitialize_(0)
If CoCreateInstance_(?CLSID_MsftDiscMaster2,0,1,?IID_IDiscMaster2,@object1.IDiscMaster2) = 0
If CoCreateInstance_(?CLSID_MsftDiscRecorder2,0,1,?IID_IDiscRecorder2,@object2.IDiscRecorder2) = 0
object1\get_Item(0,@pp\bstrval) ; first drive only
Debug uni2ansi(pp\bstrval)
object2\InitializeDiscRecorder(pp\bstrval) ;init drive
;object2\EjectMedia() ;eject
object2\get_VendorId(@pp\bstrval)
Debug uni2ansi(pp\bstrval) ;vendor
object2\get_SupportedProfiles(@arraypoint.l)
;Debug "size..."
;Debug SafeArrayGetElemsize_(arraypoint) ; always 16
SafeArrayGetUBound_(arraypoint,1,@bound.l)
SafeArrayAccessData_(arraypoint,@adata.l)
adata = adata + 8 ;value pointer
Debug "IMAPI_FEATURE_PAGE..."
For i=0 To bound
Debug Hex(PeekW(adata + (i*16)))
;compare with #IMAPI_FEATURE_PAGE... const !
;use case ...
Next
SafeArrayUnaccessData_(arraypoint)
SafeArrayDestroy_(arraypoint)
object2\get_SupportedFeaturePages(@arraypoint)
;Debug "size..."
;Debug SafeArrayGetElemsize_(arraypoint) ; always 16
SafeArrayGetUBound_(arraypoint,1,@bound)
SafeArrayAccessData_(arraypoint,@adata)
adata = adata + 8 ;value pointer
Debug "IMAPI_PROFILE_TYPE..."
For i=0 To bound
Debug Hex(PeekW(adata + (i*16)))
;compare with #IMAPI_PROFILE_TYPE... const !
;use case ...
Next
SafeArrayUnaccessData_(arraypoint)
SafeArrayDestroy_(arraypoint)
object2\release()
object1\release()
EndIf
EndIf
CoUninitialize_()
End
DataSection
CLSID_MsftDiscMaster2:
Data.l $2735412E
Data.w $7F64,$5B0F
Data.b $8F,$0,$5D,$77,$AF,$BE,$26,$1E
CLSID_MsftDiscRecorder2:
Data.l $2735412D
Data.w $7F64,$5B0F
Data.b $8F,$0,$5D,$77,$AF,$BE,$26,$1E
IID_IDiscMaster2:
Data.l $27354130
Data.w $7F64,$5B0F
Data.b $8F,$0,$5D,$77,$AF,$BE,$26,$1E
IID_IDiscRecorder2:
Data.l $27354133
Data.w $7F64,$5B0F
Data.b $8F,$0,$5D,$77,$AF,$BE,$26,$1E
EndDataSection
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
