Hello again. Here is the correct example:
;~ #AutoIt3Wrapper_UseX64=y
_CreateISO()
Func _CreateISO()
Local $sSourceDirectory = @ScriptDir & "\Test"
Local $sOutFileIso = @ScriptDir & "\MyFile.iso"
Local $oFS = ObjCreate("IMAPI2FS.MsftFileSystemImage")
$oFS .FreeMediaBlocks = 0
$oFS.VolumeName = "MyISOName"
$oFS.Root.AddTree($sSourceDirectory, False)
Local $oRImage = $oFS.CreateResultImage()
Local $oImgStream = ObjCreateInterface($oRImage.ImageStream(), '{0000000c-0000-0000-C000-000000000046}', _
"D1 hresult();D2 hresult();D3 hresult();D4 hresult();CopyTo hresult(ptr;UINT64;UINT64*;UINT64*);" & _
"D8 hresult();D9 hresult();D10 hresult();D11 hresult();Stat hresult(struct*;dword);")
Local $tSTATSTG = DllStructCreate("byte[" & (@AutoItX64 ? 80 : 72) & "]")
$oImgStream.Stat($tSTATSTG, 0x1)
Local $icbSize = (DllStructCreate("UINT64 cbSize", DllStructGetPtr($tSTATSTG) + (@AutoItX64 ? 16 : 8))).cbSize
Local $pFileStream = __MD_SHCreateStreamOnFile($sOutFileIso)
Local $iRead, $iWritten
$oImgStream.CopyTo($pFileStream, $icbSize, $iRead, $iWritten)
EndFunc ;==>_CreateIso
;Create File Stream
Func __MD_SHCreateStreamOnFile($sFilePath, $igrfMode = 0x00001001)
Local $aCall = DllCall("shlwapi.dll", "long", "SHCreateStreamOnFileW", "wstr", $sFilePath, "dword", $igrfMode, "ptr*", 0)
If $aCall[0] = 0 Then
Return $aCall[3]
EndIf
Return 0
EndFunc ;==>__MD_SHCreateStreamOnFile
I'm not so mad today. ðŸ¤
Saludos