|
|
@@ -4,52 +4,52 @@ |
|
|
|
|
|
void create_iso( std::wstring_view src, std::wstring_view iso_path ) |
|
|
{ |
|
|
HRESULT hr; |
|
|
IFileSystemImage* fsimg; |
|
|
IFsiDirectoryItem* fsdir; |
|
|
IFileSystemImageResult* fsresult; |
|
|
IStream* img; |
|
|
IStream* filestream; |
|
|
|
|
|
hr = CoCreateInstance( __uuidof( MsftFileSystemImage ), |
|
|
NULL, |
|
|
CLSCTX_INPROC_SERVER, |
|
|
__uuidof( IFileSystemImage ), |
|
|
( LPVOID* ) &fsimg ); |
|
|
if ( SUCCEEDED( hr ) ) |
|
|
{ |
|
|
fsimg->get_Root( &fsdir ); |
|
|
|
|
|
fsdir->AddTree( CComBSTR( src.data() ), VARIANT_TRUE ); |
|
|
|
|
|
hr = fsimg->CreateResultImage( &fsresult ); |
|
|
if ( SUCCEEDED( hr ) ) |
|
|
{ |
|
|
fsresult->get_ImageStream( &img ); |
|
|
if ( SUCCEEDED( hr ) ) |
|
|
{ |
|
|
STATSTG statstg; |
|
|
ULARGE_INTEGER rd; |
|
|
ULARGE_INTEGER wr; |
|
|
|
|
|
SHCreateStreamOnFileEx( iso_path.data(), |
|
|
STGM_READWRITE, |
|
|
FILE_ATTRIBUTE_NORMAL, |
|
|
TRUE, |
|
|
NULL, |
|
|
&filestream ); |
|
|
|
|
|
img->Stat( &statstg, STATFLAG_DEFAULT ); |
|
|
img->CopyTo( filestream, statstg.cbSize, &rd, &wr ); |
|
|
filestream->Release(); |
|
|
img->Release(); |
|
|
} |
|
|
|
|
|
fsresult->Release(); |
|
|
} |
|
|
|
|
|
fsimg->Release(); |
|
|
} |
|
|
HRESULT hr; |
|
|
IFileSystemImage* fsimg; |
|
|
IFsiDirectoryItem* fsdir; |
|
|
IFileSystemImageResult* fsresult; |
|
|
IStream* img; |
|
|
IStream* filestream; |
|
|
|
|
|
hr = CoCreateInstance( __uuidof( MsftFileSystemImage ), |
|
|
NULL, |
|
|
CLSCTX_INPROC_SERVER, |
|
|
__uuidof( IFileSystemImage ), |
|
|
( LPVOID* ) &fsimg ); |
|
|
if ( SUCCEEDED( hr ) ) |
|
|
{ |
|
|
fsimg->get_Root( &fsdir ); |
|
|
|
|
|
fsdir->AddTree( CComBSTR( src.data() ), VARIANT_TRUE ); |
|
|
|
|
|
hr = fsimg->CreateResultImage( &fsresult ); |
|
|
if ( SUCCEEDED( hr ) ) |
|
|
{ |
|
|
fsresult->get_ImageStream( &img ); |
|
|
if ( SUCCEEDED( hr ) ) |
|
|
{ |
|
|
STATSTG statstg; |
|
|
ULARGE_INTEGER rd; |
|
|
ULARGE_INTEGER wr; |
|
|
|
|
|
SHCreateStreamOnFileEx( iso_path.data(), |
|
|
STGM_READWRITE, |
|
|
FILE_ATTRIBUTE_NORMAL, |
|
|
TRUE, |
|
|
NULL, |
|
|
&filestream ); |
|
|
|
|
|
img->Stat( &statstg, STATFLAG_DEFAULT ); |
|
|
img->CopyTo( filestream, statstg.cbSize, &rd, &wr ); |
|
|
filestream->Release(); |
|
|
img->Release(); |
|
|
} |
|
|
|
|
|
fsresult->Release(); |
|
|
} |
|
|
|
|
|
fsimg->Release(); |
|
|
} |
|
|
} |
|
|
|
|
|
CoInitializeEx(0); |
|
|
|