Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <imapi2.h>
- #include <imapi2error.h>
- #include <imapi2fs.h>
- #include <imapi2fserror.h>
- #pragma comment (lib, "Ole32.lib")
- void iampi2_cpp::convert2iso() {
- HRESULT hres = 0;
- CoInitialize(NULL);
- IFileSystemImage* image = NULL;
- IFileSystemImageResult* result = NULL;
- IFsiDirectoryItem* root = NULL;
- IStream* file = NULL;
- IStream* r_i = NULL;
- hres = CoCreateInstance(CLSID_MsftFileSystemImage, NULL, CLSCTX_ALL, __uuidof(IFileSystemImage), (void**)&image);
- printf("CoCreateInstance %08X\n", hres);
- hres = image->put_FileSystemsToCreate((FsiFileSystems)(FsiFileSystemJoliet | FsiFileSystemISO9660));
- printf("put_FileSystemsToCreate %08X\n", hres);
- hres = image->put_VolumeName(L"Pictures");
- printf("put_VolumeName %08X\n", hres);
- hres = image->ChooseImageDefaultsForMediaType(IMAPI_MEDIA_TYPE_CDRW);
- printf("ChooseImageDefaultsForMediaType %08X\n", hres);
- hres = image->get_Root(&root);
- printf("get_Root %08X\n", hres);
- hres = root->AddTree(L"C:\\isome", VARIANT_TRUE);
- printf("AddTree %08X\n", hres);
- hres = image->CreateResultImage(&result);
- printf("CreateResultImage %08X\n", hres);
- hres = result->get_ImageStream(&r_i);
- printf("get_ImageStream %08X\n", hres);
- STATSTG stg;
- r_i->Stat(&stg, 1);
- char* data = new char[stg.cbSize.QuadPart];
- ULONG size;
- r_i->Read(data, stg.cbSize.QuadPart, &size);
- FILE* f = fopen("C:\\image.iso", "wb");
- fwrite(data, stg.cbSize.QuadPart, 1, f);
- fclose(f);
- delete data;
- r_i->Release();
- root->Release();
- result->Release();
- image->Release();
- CoUninitialize();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement