2011-12-16 14 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を使用しています)。 IStreamを使用することができるようにするために

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

:たくさん

+0

私は何ができるのですか?MisftFileSystemImageオブジェクトに.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); 

私はそれが誰かに役立ちます願っています。注意してください

関連する問題