+static int VTLRI_ServiceMain(int argc, char **argv)\r
+{\r
+ int n = 0;\r
+ DWORD Err;\r
+ BOOL bRet = TRUE;\r
+ CHAR Drive[16];\r
+ CHAR FsType[64];\r
+ CHAR Cmdline[256];\r
+ PROCESS_INFORMATION Pi;\r
+ STARTUPINFOA Si;\r
+\r
+ //XXX.exe VTLRI_SRV D Z\r
+ Log("VTLRI_ServiceMain start %s %s %s ...", argv[0], argv[1], argv[2]);\r
+\r
+ sprintf_s(Drive, sizeof(Drive), "%C:\\", argv[2][0]);\r
+\r
+ while (n < 3)\r
+ {\r
+ bRet = GetVolumeInformationA(Drive, NULL, 0, NULL, NULL, NULL, FsType, sizeof(FsType));\r
+ if (bRet)\r
+ {\r
+ Sleep(400);\r
+ }\r
+ else\r
+ {\r
+ Err = LASTERR;\r
+ if (Err == ERROR_PATH_NOT_FOUND)\r
+ {\r
+ Log("%s not found", Drive);\r
+ n++;\r
+ }\r
+ }\r
+ }\r
+\r
+ sprintf_s(Cmdline, sizeof(Cmdline), "ventoy\\imdisk.exe -d -m %C:", argv[3][0]);\r
+ Log("Remove disk by <%s>", Cmdline);\r
+\r
+ GetStartupInfoA(&Si);\r
+ Si.dwFlags |= STARTF_USESHOWWINDOW;\r
+ Si.wShowWindow = SW_HIDE;\r
+\r
+ CreateProcessA(NULL, Cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &Si, &Pi);\r
+ WaitForSingleObject(Pi.hProcess, INFINITE);\r
+ return 0;\r
+}\r
+\r