\r
STATIC BOOL IsPowershellExist(void)\r
{\r
- BOOL ret;\r
-\r
- if (!IsWindows8OrGreater())\r
- {\r
- Log("This is before Windows8 powershell disk not supported.");\r
- return FALSE;\r
- }\r
+ BOOL ret; \r
\r
- ret = IsFileExist("C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe");\r
+ ret = IsFileExist("%s\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", DISK_GetWindowsDir());\r
if (!ret)\r
{\r
Log("powershell.exe not exist");\r
Log("PSHELL_ShrinkVolume<%d> %C: ret:%d (%s)", DriveIndex, DriveLetter, ret, ret ? "SUCCESS" : "FAIL");\r
return ret;\r
}\r
+\r
+BOOL PSHELL_FormatVolume(char DriveLetter, int fs, DWORD ClusterSize)\r
+{\r
+ BOOL ret;\r
+ const char* fsname = NULL;\r
+ CHAR CmdBuf[512];\r
+ CHAR FsName[128];\r
+\r
+ fsname = GetVentoyFsFmtNameByTypeA(fs);\r
+\r
+ if (ClusterSize > 0)\r
+ {\r
+ sprintf_s(CmdBuf, sizeof(CmdBuf),\r
+ "format-volume -DriveLetter %C -FileSystem %s -AllocationUnitSize %u -Force -NewFileSystemLabel Ventoy",\r
+ DriveLetter, fsname, ClusterSize);\r
+ }\r
+ else\r
+ {\r
+ sprintf_s(CmdBuf, sizeof(CmdBuf),\r
+ "format-volume -DriveLetter %C -FileSystem %s -Force -NewFileSystemLabel Ventoy",\r
+ DriveLetter, fsname);\r
+ }\r
+\r
+ ret = PSHELL_CommProc(CmdBuf);\r
+ Log("PSHELL_FormatVolume %C: ret:%d (%s)", DriveLetter, ret, ret ? "SUCCESS" : "FAIL");\r
+ if (!ret)\r
+ {\r
+ return FALSE;\r
+ }\r
+\r
+\r
+ sprintf_s(CmdBuf, sizeof(CmdBuf), "%C:\\", DriveLetter);\r
+ GetVolumeInformationA(CmdBuf, NULL, 0, NULL, NULL, NULL, FsName, sizeof(FsName));\r
+ VentoyStringToUpper(FsName);\r
+\r
+ Log("New fs name after run PSHELL:<%s>", FsName);\r
+\r
+ if (strcmp(FsName, fsname) == 0)\r
+ {\r
+ Log("PSHELL_FormatVolume <%C:> SUCCESS", DriveLetter);\r
+ return TRUE;\r
+ }\r
+ else\r
+ {\r
+ Log("PSHELL_FormatVolume <%C:> FAILED", DriveLetter);\r
+ return FALSE;\r
+ }\r
+}\r