2011-12-16 6 views
2

나는 hackchinacodeproject의 예제를 읽었지 만 기존 .iso 파일을 구울 방법을 알아낼 수없는 것 같습니다. 위의 예는 폴더에서 .iso를 만든 다음 굽는 방법을 보여줍니다. 나는 iso 파일을 직접 구울 수 있기를 원한다.IMAPI2 이미 생성 된 iso를 구우는 방법

IDiscRecorder2 discRecorder = new MsftDiscRecorder2(); 
string Burner = comboBox1.SelectedItem.ToString(); 

foreach (DrvProperties prop in drv_props) 
{ 
    if (prop.letter.Contains(Burner)) // letter contains the drive's Letter (E:, G: etc.) 
    { 
    discRecorder.InitializeDiscRecorder(prop.ID); // ID contains drive's uniqueID 
    } 

} 

IDiscFormat2Data discFormatData = new MsftDiscFormat2Data(); 
discFormatData.Recorder = discRecorder; 

IMAPI_MEDIA_PHYSICAL_TYPE mediaType = discFormatData.CurrentPhysicalMediaType; 
...... 
...... 

누군가가 나를 더 도와 주 시겠어요 : 여기

몇 가지 코드? 내가 example.iso가 있다고 말하게한다. 지금 어떻게해야합니까? 나는 이해하지 못한다. (나는 CodeProject 예제에서 내 코드에서 IMAPI2.interop을 사용하고있다.) 위해

using System.Runtime.InteropServices; 
using System.Runtime.InteropServices.ComTypes; 

이있는 IStream을 사용할 수 있도록 :

덕분에 많은

+0

누군가 내가 어떻게 할 수있는 MsftFileSystemImage 개체에 .iso 파일을 추가 할 수 있습니까? – sparky

답변

3

그럼 내가 마지막으로 다음과 같은 이름의 공백을 포함 할 필요가 먼저 그것을 알아 냈다.

private const uint STGM_SHARE_DENY_WRITE = 0x00000020; 
    private const uint STGM_SHARE_DENY_NONE = 0x00000040; 
    private const uint STGM_READ = 0x00000000; 
    private const uint STGM_WRITE = 0x00000001; 
    private const uint STGM_READWRITE = 0x00000002; 

    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true, PreserveSig = false, EntryPoint = "SHCreateStreamOnFileW")] 
    static extern void SHCreateStreamOnFile(string fileName, uint mode, ref IStream stream); 

IStream stream = null; 
SHCreateStreamOnFile(path2iso, STGM_READ | STGM_SHARE_DENY_WRITE, ref stream); 

을 마지막으로 나는이 discFormatData.Write() 메소드에 공급 :

그럼 당신은 ISO에 "읽기 스트림을"열 shlwapi.dll에서 SHCreateStreamOnFIle를 가져와야합니다.

discFormatData.Write(stream); 

나는 그것이 누군가를 돕기를 바랍니다. 돌보기

관련 문제