MCPcopy Create free account
hub / github.com/Chuyu-Team/CPPHelper / IsoCreateFileByPath

Function IsoCreateFileByPath

Base.cpp:1593–1851  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1591#if _MSC_VER >1500
1592
1593HRESULT IsoCreateFileByPath(LPCWSTR pIsoPath, LPCWSTR SrcDir, LPCWSTR VolumeName, BaseCallBack callBack, LPVOID pUserData)
1594{
1595 ComInitializeWrapper ComWrapper;
1596
1597 CString pSrcDir= SrcDir;
1598 if (pSrcDir[pSrcDir.GetLength() - 1] != L'\\')
1599 pSrcDir += L'\\';
1600
1601#define BOOT_FILE_NAME_LEGACY _T("boot\\etfsboot.com") //CSM boot
1602#define BOOT_FILE_NAME_UEFI _T("efi\\microsoft\\boot\\efisys.bin") //UEFI boot
1603
1604
1605 CComPtr<IFileSystemImage2> pSystemImage;
1606
1607 auto hr = CoCreateInstance(__uuidof(MsftFileSystemImage),
1608 NULL,
1609 CLSCTX_INPROC_SERVER,
1610 __uuidof(IFileSystemImage2),
1611 (LPVOID*)&pSystemImage);
1612
1613 if (FAILED(hr))
1614 {
1615 return hr;
1616 }
1617
1618
1619 hr = pSystemImage->put_VolumeName(CComBSTR(VolumeName ? VolumeName : L"ESD-ISO"));
1620 if (FAILED(hr))
1621 {
1622 return hr;
1623 }
1624
1625 struct MediaInfo
1626 {
1627 IMAPI_MEDIA_PHYSICAL_TYPE Type;
1628 LONG FreeMediaBlocks;
1629 };
1630
1631 const MediaInfo MediaTypes[]=
1632 {
1633 { IMAPI_MEDIA_TYPE_DVDPLUSR, 2295104 },
1634 { IMAPI_MEDIA_TYPE_DVDPLUSR_DUALLAYER, 4173824 },
1635 { IMAPI_MEDIA_TYPE_HDDVDROM, 62500864 },
1636 };
1637
1638 std::vector<IBootOptions*> vBootOptions;
1639
1640 {
1641 CComPtr<IStream> pBootStream;
1642 SHCreateStreamOnFileW(pSrcDir + BOOT_FILE_NAME_LEGACY, STGM_READ | STGM_SHARE_DENY_WRITE, &pBootStream);
1643 if (pBootStream)
1644 {
1645 CComPtr<IBootOptions> BootOption;
1646
1647 hr = CoCreateInstance(__uuidof(BootOptions), NULL, CLSCTX_INPROC_SERVER, __uuidof(IBootOptions), (void**)&BootOption);
1648 if (SUCCEEDED(hr))
1649 {
1650 BootOption->put_Manufacturer(CComBSTR(L"MBR"));

Callers

nothing calls this directly

Calls 6

GetLengthMethod · 0.80
GetBufferMethod · 0.80
DetachMethod · 0.45
ReleaseMethod · 0.45
ReadMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected