]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - Ventoy2Disk/Ventoy2Disk/Utility.c
Add support for venomlinux (#1526)
[Ventoy.git] / Ventoy2Disk / Ventoy2Disk / Utility.c
index 1fbe9f4434ac37beaaeeb855e999ba315a3ec3b1..f217bfed45b77d996fc37c16b0f81821112c895d 100644 (file)
@@ -73,6 +73,17 @@ void Log(const char *Fmt, ...)
 \r
 }\r
 \r
+const char* GUID2String(void *guid, char *buf, int len)\r
+{\r
+    GUID* pGUID = (GUID*)guid;\r
+    sprintf_s(buf, len, "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\r
+        pGUID->Data1, pGUID->Data2, pGUID->Data3,\r
+        pGUID->Data4[0], pGUID->Data4[1],\r
+        pGUID->Data4[2], pGUID->Data4[3], pGUID->Data4[4], pGUID->Data4[5], pGUID->Data4[6], pGUID->Data4[7]\r
+    );\r
+    return buf;\r
+}\r
+\r
 BOOL IsPathExist(BOOL Dir, const char *Fmt, ...)\r
 {\r
     va_list Arg;\r
@@ -231,6 +242,7 @@ BOOL IsWow64(void)
     typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL);\r
     LPFN_ISWOW64PROCESS fnIsWow64Process;\r
     BOOL bIsWow64 = FALSE;\r
+       CHAR Wow64Dir[MAX_PATH];\r
 \r
     fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandleA("kernel32"), "IsWow64Process");\r
     if (NULL != fnIsWow64Process)\r
@@ -238,6 +250,15 @@ BOOL IsWow64(void)
         fnIsWow64Process(GetCurrentProcess(), &bIsWow64);\r
     }\r
 \r
+       if (!bIsWow64)\r
+       {\r
+               if (GetSystemWow64DirectoryA(Wow64Dir, sizeof(Wow64Dir)))\r
+               {\r
+                       Log("GetSystemWow64DirectoryA=<%s>", Wow64Dir);\r
+                       bIsWow64 = TRUE;\r
+               }\r
+       }\r
+\r
     return bIsWow64;\r
 }\r
 \r
@@ -583,6 +604,7 @@ void DumpWindowsVersion(void)
     return;\r
 }\r
 \r
+\r
 BOOL IsVentoyLogicalDrive(CHAR DriveLetter)\r
 {\r
     int i;\r
@@ -666,6 +688,7 @@ int VentoyFillMBR(UINT64 DiskSizeBytes, MBR_HEAD *pMBR, int PartStyle)
     Log("Disk signature: 0x%08x", DiskSignature);\r
 \r
     *((UINT32 *)(pMBR->BootCode + 0x1B8)) = DiskSignature;\r
+       memcpy(pMBR->BootCode + 0x180, &Guid, 16);\r
 \r
     if (DiskSizeBytes / 512 > 0xFFFFFFFF)\r
     {\r
@@ -742,6 +765,7 @@ static int VentoyFillProtectMBR(UINT64 DiskSizeBytes, MBR_HEAD *pMBR)
     Log("Disk signature: 0x%08x", DiskSignature);\r
 \r
     *((UINT32 *)(pMBR->BootCode + 0x1B8)) = DiskSignature;\r
+       memcpy(pMBR->BootCode + 0x180, &Guid, 16);\r
 \r
     DiskSectorCount = DiskSizeBytes / 512 - 1;\r
     if (DiskSectorCount > 0xFFFFFFFF)\r