sedlg.c
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 128k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #include "shprv.h"
  2. #include <dskmaint.h>
  3. #include <prsht.h>
  4. #include <regstr.h>
  5. #include <winerror.h>
  6. #include <memory.h>
  7. #include "util.h"
  8. #include "format.h"
  9. #include <help.h>
  10. #define g_hInstance g_hinst
  11. static  char g_szNULL[] = "";   // c_szNull
  12. #define szTextMax (256+MAX_PATH)
  13. #define szBufMax 256
  14. #define VERBOSE
  15. #ifndef DEBUG
  16. #ifdef VERBOSE
  17. #undef VERBOSE
  18. #endif
  19. #endif
  20. #ifdef VERBOSE
  21. #define DUMP(a,b) {char szT[200];wsprintf(szT,a"rn",b);OutputDebugString(szT);}
  22. #else
  23. #define DUMP(a,b)
  24. #endif //VERBOSE
  25. #ifdef DEBUG
  26. #define CHECKHRES(a) {if (!SUCCEEDED(hres)) {DebugHr(hres);goto a;}}
  27. #else
  28. #define CHECKHRES(a) {if (!SUCCEEDED(hres)) {goto a;}}
  29. #endif
  30. #ifdef DEBUG
  31. #define CHECKSIZE(a,b) {if(sizeof(a)!=cb) {Assert(0);goto b;}}
  32. #else
  33. #define CHECKSIZE(a,b) {if (sizeof(a) != cb) {goto b;}}
  34. #endif
  35. #ifdef VERBOSE
  36. #define MESSAGE(a) {OutputDebugString(a "rn");}
  37. #else
  38. #define MESSAGE(a) 
  39. #endif 
  40. static DWORD FORMATSEG aIdsMaster[]={IDC_SE_OK,IDH_OK,
  41.      IDC_SE_CANCEL,IDH_CANCEL,
  42.      IDC_SE_TXT,0xFFFFFFFFL,
  43.      IDC_SE_BUT1,0xFFFFFFFFL,
  44.      IDC_SE_BUT2,0xFFFFFFFFL,
  45.      IDC_SE_BUT3,0xFFFFFFFFL,
  46.      IDC_SE_BUT4,0xFFFFFFFFL,
  47.      IDC_SE_HELP,0xFFFFFFFFL,
  48.      IDC_SE_MOREINFO,0xFFFFFFFFL,
  49.      0,0};
  50. static DWORD FORMATSEG MIaIds[]={IDC_SE_OK,IDH_OK,
  51.  IDC_SE_CANCEL,0xFFFFFFFFL,
  52.  IDC_SE_TXT,0xFFFFFFFFL,
  53.  IDC_SE_BUT1,0xFFFFFFFFL,
  54.  IDC_SE_BUT2,0xFFFFFFFFL,
  55.  IDC_SE_BUT3,0xFFFFFFFFL,
  56.  IDC_SE_BUT4,0xFFFFFFFFL,
  57.  IDC_SE_HELP,0xFFFFFFFFL,
  58.  0,0};
  59. static DWORD FORMATSEG XLrgRet[6]={MAKELONG(0,ERETMKCPY),
  60.     MAKELONG(0,ERETDELALL),
  61.     MAKELONG(0,ERETTNCALL),
  62.     MAKELONG(0xFFFF,ERETSVONED),
  63.     MAKELONG(0xFFFF,ERETSVONET),
  64.     MAKELONG(0,ERETIGN)};
  65. static DWORD FORMATSEG XLaIds[]={IDC_SE_OK,IDH_WINDISK_OK_FOR_ERRORS,
  66.   IDC_SE_CANCEL,IDH_WINDISK_CANCEL_FOR_ERRORS,
  67.   IDC_XL_BUT1,IDH_WINDISK_FATERRXLNK_COPY,
  68.   IDC_XL_BUT1+1,IDH_WINDISK_FATERRXLNK_DELETE,
  69.   IDC_XL_BUT1+2,IDH_WINDISK_FATERRXLNK_TRUNCATE_ALL,
  70.   IDC_XL_BUT1+3,IDH_WINDISK_FATERRXLNK_KEEP_SEL_DEL_OTH,
  71.   IDC_XL_BUT1+4,IDH_WINDISK_FATERRXLNK_KEEP_SEL_TRUNC_OTH,
  72.   IDC_XL_BUT1+5,IDH_WINDISK_FATERRXLNK_IGNORE,
  73.   IDC_SE_HELP,0xFFFFFFFFL,
  74.   IDC_XL_TXT1,0xFFFFFFFFL,
  75.   IDC_XL_TXT2,0xFFFFFFFFL,
  76.   IDC_XL_LIST,0xFFFFFFFFL,
  77.   0,0};
  78. static DWORD FORMATSEG XLrgRetAlt[6]={MAKELONG(0,ERETMKCPY),
  79.        MAKELONG(0,ERETDELALL),
  80.        MAKELONG(0,ERETIGN),
  81.        MAKELONG(0,ERETIGN),
  82.        MAKELONG(0,ERETIGN),
  83.        MAKELONG(0,ERETIGN)};
  84. static DWORD FORMATSEG XLaIdsAlt[]={IDC_SE_OK,IDH_WINDISK_OK_FOR_ERRORS,
  85.      IDC_SE_CANCEL,IDH_WINDISK_CANCEL_FOR_ERRORS,
  86.      IDC_XL_BUT1,IDH_WINDISK_DDERRXLSQZ_COPY,
  87.      IDC_XL_BUT1+1,IDH_WINDISK_DDERRXLSQZ_DELETE,
  88.      IDC_XL_BUT1+2,IDH_WINDISK_DDERRXLSQZ_IGNORE,
  89.      IDC_XL_BUT1+3,0xFFFFFFFFL,
  90.      IDC_XL_BUT1+4,0xFFFFFFFFL,
  91.      IDC_XL_BUT1+5,0xFFFFFFFFL,
  92.      IDC_SE_HELP,0xFFFFFFFFL,
  93.      IDC_XL_TXT1,0xFFFFFFFFL,
  94.      IDC_XL_TXT2,0xFFFFFFFFL,
  95.      IDC_XL_LIST,0xFFFFFFFFL,
  96.      0,0};
  97. typedef struct ei_ {  //Error info
  98. WORD idBase;
  99. WORD cButtons;
  100. WORD rgBut[4];
  101. WORD AltrgBut[4];
  102. WORD rgRet[4];
  103. DWORD rgHelp[5];
  104. DWORD AltrgHelp[5];
  105. BOOL (*pfnStuff)(HWND,LPMYCHKINFOSTRUCT);
  106. UINT IsHelpButton;
  107. UINT IsAltHelpButton;
  108. DWORD HelpButtonID;
  109. DWORD AltHelpButtonID;
  110. BOOL IsMoreInfoButton;
  111. DWORD MoreInfoButtonHID;
  112. BOOL IsMultiError;
  113. BOOL DelButFilDir;
  114. UINT DelButIDDir;
  115. DWORD DelButDirHID;
  116. BOOL FixButFilDir;
  117. UINT FixButIDDir;
  118. DWORD FixButDirHID;
  119. BOOL WarnCantDel;
  120. UINT DelButtIndx;
  121. UINT CantDelTstFlag;
  122. BOOL WarnCantFix;
  123. UINT FixButtIndx;
  124. UINT CantFixTstFlag;
  125. BOOL CantFixTstIsRev;
  126. BOOL OkIsContinue;
  127. BOOL IsNoOk;
  128. } EI, FAR* LPEI;
  129. #ifdef OPK2
  130. #define RGEIMax 57
  131. #else
  132. #define RGEIMax 53
  133. #endif
  134. #define ISNOHELPB  0
  135. #define ISHELPBALWAYS  1
  136. #define ISHELPBIFCANTDEL 2
  137. // A template array entry:
  138. //
  139. // {ISTR for strings in the string table, # of radiobuttons
  140. //    {Strings for radio buttons ...},
  141. //    {Values to return for the corresponding button}
  142. //    {Help ID's for the message text, and then the buttons}
  143. // }
  144. //
  145. // To add stuff to the log, call SEAddToLog(String,string)
  146. // The strings are concatenated and stuck on the end of the log
  147. static EI FORMATSEG rgEI[RGEIMax] =
  148. {
  149. {ISTR_FATERRDIR,3,
  150. {ISTR_SE_REPAIR,ISTR_SE_DIRDEL,ISTR_SE_IGNORE,0},
  151. {ISTR_SE_REPAIR,ISTR_SE_DIRDEL,ISTR_SE_IGNORE,0},
  152. {ERETAFIX,ERETDELDIR,ERETIGN,0},
  153. {0xFFFFFFFFL,
  154.  IDH_WINDISK_ISTR_FATERRDIR_REPAIR,
  155.  IDH_WINDISK_ISTR_FATERRDIR_DELETE,
  156.  IDH_WINDISK_ISTR_FATERRDIR_IGNORE,0xFFFFFFFFL},
  157. {0xFFFFFFFFL,
  158.  IDH_WINDISK_ISTR_FATERRDIR_REPAIR,
  159.  IDH_WINDISK_ISTR_FATERRDIR_DELETE,
  160.  IDH_WINDISK_ISTR_FATERRDIR_IGNORE,0xFFFFFFFFL},
  161. NULL,
  162. ISHELPBIFCANTDEL,     // IsHelpButton
  163. ISHELPBIFCANTDEL,     // IsAltHelpButton
  164. IDH_SCANDISK,     // HelpButtonID
  165. IDH_SCANDISK,     // AltHelpButtonID
  166. FALSE,     // IsMoreInfoButton
  167. 0xFFFFFFFFL,     // MoreInfoButtonHID
  168. TRUE,     // IsMultiError
  169. FALSE,     // DelButFilDir
  170. 0,     // DelButIDDir
  171. 0xFFFFFFFFL,     // DelButDirHID
  172. FALSE,     // FixButFilDir
  173. 0,     // FixButIDDir
  174. 0xFFFFFFFFL,     // FixButDirHID
  175. TRUE,     // WarnCantDel
  176. 1,     // DelButtIndx
  177. ERRCANTDEL,     // CantDelTstFlag
  178. FALSE,     // WarnCantFix
  179. 0xFFFF,      // FixButtIndx
  180. 0,     // CantFixTstFlag
  181. FALSE,     // CantFixTstIsRev
  182. FALSE,     // OkIsContinue
  183. FALSE},      // IsNoOk
  184. {ISTR_FATLSTCLUS,3,
  185. {BUTT1(ISTR_FATLSTCLUS),BUTT2(ISTR_FATLSTCLUS),ISTR_SE_IGNORE,0},
  186. {BUTT1(ISTR_FATLSTCLUS),BUTT2(ISTR_FATLSTCLUS),ISTR_SE_IGNORE,0},
  187. {ERETFREE,ERETMKFILS,ERETIGN,0},
  188. {0xFFFFFFFFL,
  189.  IDH_WINDISK_FATERRLSTCLUS_DISCARD,
  190.  IDH_WINDISK_FATERRLSTCLUS_CONVERT,
  191.  IDH_WINDISK_FATERRLSTCLUS_IGNORE,0xFFFFFFFFL},
  192. {0xFFFFFFFFL,
  193.  IDH_WINDISK_FATERRLSTCLUS_DISCARD,
  194.  IDH_WINDISK_FATERRLSTCLUS_CONVERT,
  195.  IDH_WINDISK_FATERRLSTCLUS_IGNORE,0xFFFFFFFFL},
  196. NULL,
  197. ISNOHELPB,     // IsHelpButton
  198. ISNOHELPB,     // IsAltHelpButton
  199. 0xFFFFFFFFL,     // HelpButtonID
  200. 0xFFFFFFFFL,     // AltHelpButtonID
  201. TRUE,     // IsMoreInfoButton
  202. 0xFFFFFFFFL,     // MoreInfoButtonHID
  203. FALSE,     // IsMultiError
  204. FALSE,     // DelButFilDir
  205. 0,     // DelButIDDir
  206. 0xFFFFFFFFL,     // DelButDirHID
  207. FALSE,     // FixButFilDir
  208. 0,     // FixButIDDir
  209. 0xFFFFFFFFL,     // FixButDirHID
  210. FALSE,     // WarnCantDel
  211. 0xFFFF,      // DelButtIndx
  212. 0,     // CantDelTstFlag
  213. FALSE,     // WarnCantFix
  214. 0xFFFF,      // FixButtIndx
  215. 0,     // CantFixTstFlag
  216. FALSE,     // CantFixTstIsRev
  217. FALSE,     // OkIsContinue
  218. FALSE},      // IsNoOk
  219. {ISTR_FATCIRCC,3,
  220. {ISTR_SE_FILTRNC,ISTR_SE_FILDEL,ISTR_SE_IGNORE,0},
  221. {ISTR_SE_FILTRNC,ISTR_SE_FILDEL,ISTR_SE_IGNORE,0},
  222. {ERETAFIX,ERETDELALL,ERETIGN,0},
  223. {0xFFFFFFFFL,
  224.  IDH_WINDISK_ISTR_FATERRCIRCC_TRUNCATE,
  225.  IDH_WINDISK_ISTR_FATERRCIRCC_DELETE,
  226.  IDH_WINDISK_ISTR_FATERRCIRCC_IGNORE,0xFFFFFFFFL},
  227. {0xFFFFFFFFL,
  228.  IDH_WINDISK_ISTR_FATERRCIRCC_TRUNCATE,
  229.  IDH_WINDISK_ISTR_FATERRCIRCC_DELETE,
  230.  IDH_WINDISK_ISTR_FATERRCIRCC_IGNORE,0xFFFFFFFFL},
  231. NULL,
  232. ISHELPBIFCANTDEL,     // IsHelpButton
  233. ISHELPBIFCANTDEL,     // IsAltHelpButton
  234. IDH_SCANDISK,     // HelpButtonID
  235. IDH_SCANDISK,     // AltHelpButtonID
  236. FALSE,     // IsMoreInfoButton
  237. 0xFFFFFFFFL,     // MoreInfoButtonHID
  238. FALSE,     // IsMultiError
  239. TRUE,     // DelButFilDir
  240. ISTR_SE_DIRDEL,      // DelButIDDir
  241. IDH_WINDISK_ISTR_FATERRCIRCC_DELETE, // DelButDirHID
  242. TRUE,     // FixButFilDir
  243. ISTR_SE_DIRTRNC,     // FixButIDDir
  244. IDH_WINDISK_ISTR_FATERRCIRCC_TRUNCATE, // FixButDirHID
  245. TRUE,     // WarnCantDel
  246. 1,     // DelButtIndx
  247. ERRCANTDEL,     // CantDelTstFlag
  248. FALSE,     // WarnCantFix
  249. 0,     // FixButtIndx
  250. 0,     // CantFixTstFlag
  251. FALSE,     // CantFixTstIsRev
  252. FALSE,     // OkIsContinue
  253. FALSE},      // IsNoOk
  254. {ISTR_FATINVCLUS,3,
  255. {ISTR_SE_FILTRNC,ISTR_SE_FILDEL,ISTR_SE_IGNORE,0},
  256. {ISTR_SE_FILTRNC,ISTR_SE_FILDEL,ISTR_SE_IGNORE,0},
  257. {ERETAFIX,ERETDELALL,ERETIGN,0},
  258. {0xFFFFFFFFL,
  259.  IDH_WINDISK_ISTR_FATERRINVCLUS_TRUNCATE,
  260.  IDH_WINDISK_ISTR_FATERRINVCLUS_DELETE,
  261.  IDH_WINDISK_ISTR_FATERRINVCLUS_IGNORE,0xFFFFFFFFL},
  262. {0xFFFFFFFFL,
  263.  IDH_WINDISK_ISTR_FATERRINVCLUS_TRUNCATE,
  264.  IDH_WINDISK_ISTR_FATERRINVCLUS_DELETE,
  265.  IDH_WINDISK_ISTR_FATERRINVCLUS_IGNORE,0xFFFFFFFFL},
  266. NULL,
  267. ISHELPBIFCANTDEL,     // IsHelpButton
  268. ISHELPBIFCANTDEL,     // IsAltHelpButton
  269. IDH_SCANDISK,     // HelpButtonID
  270. IDH_SCANDISK,     // AltHelpButtonID
  271. FALSE,     // IsMoreInfoButton
  272. 0xFFFFFFFFL,     // MoreInfoButtonHID
  273. FALSE,     // IsMultiError
  274. TRUE,     // DelButFilDir
  275. ISTR_SE_DIRDEL,      // DelButIDDir
  276. IDH_WINDISK_ISTR_FATERRINVCLUS_DELETE, // DelButDirHID
  277. TRUE,     // FixButFilDir
  278. ISTR_SE_DIRTRNC,     // FixButIDDir
  279. IDH_WINDISK_ISTR_FATERRINVCLUS_TRUNCATE, // FixButDirHID
  280. TRUE,     // WarnCantDel
  281. 1,     // DelButtIndx
  282. ERRCANTDEL,     // CantDelTstFlag
  283. FALSE,     // WarnCantFix
  284. 0,     // FixButtIndx
  285. 0,     // CantFixTstFlag
  286. FALSE,     // CantFixTstIsRev
  287. FALSE,     // OkIsContinue
  288. FALSE},      // IsNoOk
  289. {ISTR_FATRESVAL,2,
  290. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  291. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  292. {ERETAFIX,ERETIGN,0,0},
  293. {0xFFFFFFFFL,
  294.  IDH_WINDISK_FATERRRESVAL_REPAIR,
  295.  IDH_WINDISK_FATERRRESVAL_DONT_REPAIR,0xFFFFFFFFL,0xFFFFFFFFL},
  296. {0xFFFFFFFFL,
  297.  IDH_WINDISK_FATERRRESVAL_REPAIR,
  298.  IDH_WINDISK_FATERRRESVAL_DONT_REPAIR,0xFFFFFFFFL,0xFFFFFFFFL},
  299. NULL,
  300. ISNOHELPB,     // IsHelpButton
  301. ISNOHELPB,     // IsAltHelpButton
  302. 0xFFFFFFFFL,     // HelpButtonID
  303. 0xFFFFFFFFL,     // AltHelpButtonID
  304. FALSE,     // IsMoreInfoButton
  305. 0xFFFFFFFFL,     // MoreInfoButtonHID
  306. FALSE,     // IsMultiError
  307. FALSE,     // DelButFilDir
  308. 0,     // DelButIDDir
  309. 0xFFFFFFFFL,     // DelButDirHID
  310. FALSE,     // FixButFilDir
  311. 0,     // FixButIDDir
  312. 0xFFFFFFFFL,     // FixButDirHID
  313. FALSE,     // WarnCantDel
  314. 0xFFFF,      // DelButtIndx
  315. 0,     // CantDelTstFlag
  316. FALSE,     // WarnCantFix
  317. 0xFFFF,      // FixButtIndx
  318. 0,     // CantFixTstFlag
  319. FALSE,     // CantFixTstIsRev
  320. FALSE,     // OkIsContinue
  321. FALSE},      // IsNoOk
  322. {ISTR_FATFMISMAT,2,
  323. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  324. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  325. {ERETAFIX,ERETIGN,0,0},
  326. {0xFFFFFFFFL,
  327.  IDH_WINDISK_FATERRMISMAT_REPAIR,
  328.  IDH_WINDISK_FATERRMISMAT_DONT_REPAIR,0xFFFFFFFFL,0xFFFFFFFFL},
  329. {0xFFFFFFFFL,
  330.  IDH_WINDISK_FATERRMISMAT_REPAIR,
  331.  IDH_WINDISK_FATERRMISMAT_DONT_REPAIR,0xFFFFFFFFL,0xFFFFFFFFL},
  332. NULL,
  333. ISNOHELPB,     // IsHelpButton
  334. ISNOHELPB,     // IsAltHelpButton
  335. 0xFFFFFFFFL,     // HelpButtonID
  336. 0xFFFFFFFFL,     // AltHelpButtonID
  337. FALSE,     // IsMoreInfoButton
  338. 0xFFFFFFFFL,     // MoreInfoButtonHID
  339. FALSE,     // IsMultiError
  340. FALSE,     // DelButFilDir
  341. 0,     // DelButIDDir
  342. 0xFFFFFFFFL,     // DelButDirHID
  343. FALSE,     // FixButFilDir
  344. 0,     // FixButIDDir
  345. 0xFFFFFFFFL,     // FixButDirHID
  346. FALSE,     // WarnCantDel
  347. 0xFFFF,      // DelButtIndx
  348. 0,     // CantDelTstFlag
  349. FALSE,     // WarnCantFix
  350. 0xFFFF,      // FixButtIndx
  351. 0,     // CantFixTstFlag
  352. FALSE,     // CantFixTstIsRev
  353. FALSE,     // OkIsContinue
  354. FALSE},      // IsNoOk
  355. {ISTR_FATERRFILE,3,
  356. {ISTR_SE_REPAIR,ISTR_SE_FILDEL,ISTR_SE_IGNORE,0},
  357. {ISTR_SE_REPAIR,ISTR_SE_FILDEL,ISTR_SE_IGNORE,0},
  358. {ERETAFIX,ERETDELALL,ERETIGN,0},
  359. {0xFFFFFFFFL,
  360.  IDH_WINDISK_FATERRFILE_REPAIR,
  361.  IDH_WINDISK_FATERRFILE_DELETE_FILE,
  362.  IDH_WINDISK_FATERRFILE_IGNORE,0xFFFFFFFFL},
  363. {0xFFFFFFFFL,
  364.  IDH_WINDISK_FATERRFILE_REPAIR,
  365.  IDH_WINDISK_FATERRFILE_DELETE_FILE,
  366.  IDH_WINDISK_FATERRFILE_IGNORE,0xFFFFFFFFL},
  367. NULL,
  368. ISHELPBIFCANTDEL,     // IsHelpButton
  369. ISHELPBIFCANTDEL,     // IsAltHelpButton
  370. IDH_SCANDISK,     // HelpButtonID
  371. IDH_SCANDISK,     // AltHelpButtonID
  372. FALSE,     // IsMoreInfoButton
  373. 0xFFFFFFFFL,     // MoreInfoButtonHID
  374. TRUE,     // IsMultiError
  375. TRUE,     // DelButFilDir
  376. ISTR_SE_DIRDEL,      // DelButIDDir
  377. IDH_WINDISK_FATERRFILE_DELETE_FOLDER, // DelButDirHID
  378. FALSE,     // FixButFilDir
  379. 0,     // FixButIDDir
  380. 0xFFFFFFFFL,     // FixButDirHID
  381. TRUE,     // WarnCantDel
  382. 1,     // DelButtIndx
  383. ERRCANTDEL,     // CantDelTstFlag
  384. FALSE,     // WarnCantFix
  385. 0xFFFF,      // FixButtIndx
  386. 0,     // CantFixTstFlag
  387. FALSE,     // CantFixTstIsRev
  388. FALSE,     // OkIsContinue
  389. FALSE},      // IsNoOk
  390. {ISTR_FATERRVOLLAB,3,
  391. {BUTT1(ISTR_FATERRVOLLAB),BUTT2(ISTR_FATERRVOLLAB),ISTR_SE_IGNORE,0},
  392. {ALTBUTT1(ISTR_FATERRVOLLAB),ALTBUTT2(ISTR_FATERRVOLLAB),ISTR_SE_IGNORE,0},
  393. {ERETAFIX,ERETDELALL,ERETIGN,0},
  394. {0xFFFFFFFFL,
  395.  IDH_WINDISK_ISTR_FATERRVOLLAB_REPAIR_ISFRST_SET,
  396.  IDH_WINDISK_ISTR_FATERRVOLLAB_DELETE_ISFRST_SET,
  397.  IDH_WINDISK_ISTR_FATERRVOLLAB_IGNORE_ISFRST_SET,0xFFFFFFFFL},
  398. {0xFFFFFFFFL,
  399.  IDH_WINDISK_ISTR_FATERRVOLLAB_REPAIR_ISFRST_NOTSET,
  400.  IDH_WINDISK_ISTR_FATERRVOLLAB_DELETE_ISFRST_NOTSET,
  401.  IDH_WINDISK_ISTR_FATERRVOLLAB_IGNORE_ISFRST_NOTSET,0xFFFFFFFFL},
  402. NULL,
  403. ISNOHELPB,     // IsHelpButton
  404. ISNOHELPB,     // IsAltHelpButton
  405. 0xFFFFFFFFL,     // HelpButtonID
  406. 0xFFFFFFFFL,     // AltHelpButtonID
  407. FALSE,     // IsMoreInfoButton
  408. 0xFFFFFFFFL,     // MoreInfoButtonHID
  409. FALSE,     // IsMultiError
  410. FALSE,     // DelButFilDir
  411. 0,     // DelButIDDir
  412. 0xFFFFFFFFL,     // DelButDirHID
  413. FALSE,     // FixButFilDir
  414. 0,     // FixButIDDir
  415. 0xFFFFFFFFL,     // FixButDirHID
  416. FALSE,     // WarnCantDel
  417. 0xFFFF,      // DelButtIndx
  418. 0,     // CantDelTstFlag
  419. FALSE,     // WarnCantFix
  420. 0xFFFF,      // FixButtIndx
  421. 0,     // CantFixTstFlag
  422. FALSE,     // CantFixTstIsRev
  423. FALSE,     // OkIsContinue
  424. FALSE},      // IsNoOk
  425. {ISTR_FATERRMXPLENL,3,
  426. {BUTT1(ISTR_FATERRMXPLENL),ISTR_SE_FILDEL,ISTR_SE_IGNORE,0},
  427. {ALTBUTT1(ISTR_FATERRMXPLENL),ISTR_SE_DIRDEL,ISTR_SE_IGNORE,0},
  428. {ERETMVFIL,ERETDELALL,ERETIGN,0},
  429. {0xFFFFFFFFL,
  430.  IDH_WINDISK_FATERRMXPLEN_REPAIR_FILE,
  431.  IDH_WINDISK_FATERRMXPLEN_DELETE_FILE,
  432.  IDH_WINDISK_FATERRMXPLEN_IGNORE_FILE,0xFFFFFFFFL},
  433. {0xFFFFFFFFL,
  434.  IDH_WINDISK_FATERRMXPLEN_REPAIR_FOLDER,
  435.  IDH_WINDISK_FATERRMXPLEN_DELETE_FOLDER,
  436.  IDH_WINDISK_FATERRMXPLEN_IGNORE_FOLDER,0xFFFFFFFFL},
  437. NULL,
  438. ISHELPBIFCANTDEL,     // IsHelpButton
  439. ISHELPBIFCANTDEL,     // IsAltHelpButton
  440. IDH_SCANDISK,     // HelpButtonID
  441. IDH_SCANDISK,     // AltHelpButtonID
  442. FALSE,     // IsMoreInfoButton
  443. 0xFFFFFFFFL,     // MoreInfoButtonHID
  444. FALSE,     // IsMultiError
  445. FALSE,     // DelButFilDir
  446. 0,     // DelButIDDir
  447. 0xFFFFFFFFL,     // DelButDirHID
  448. FALSE,     // FixButFilDir
  449. 0,     // FixButIDDir
  450. 0xFFFFFFFFL,     // FixButDirHID
  451. TRUE,     // WarnCantDel
  452. 1,     // DelButtIndx
  453. ERRCANTDEL,     // CantDelTstFlag
  454. TRUE,     // WarnCantFix
  455. 0,     // FixButtIndx
  456. ERRCANTDEL,     // CantFixTstFlag
  457. FALSE,     // CantFixTstIsRev
  458. FALSE,     // OkIsContinue
  459. FALSE},      // IsNoOk
  460. {ISTR_FATERRMXPLENS,3,
  461. {ISTR_SE_IGNORE,BUTT1(ISTR_FATERRMXPLENL),ISTR_SE_FILDEL,0},
  462. {ISTR_SE_IGNORE,ALTBUTT1(ISTR_FATERRMXPLENL),ISTR_SE_DIRDEL,0},
  463. {ERETIGN,ERETMVFIL,ERETDELALL,0},
  464. {0xFFFFFFFFL,
  465.  IDH_WINDISK_FATERRMXPLEN_IGNORE_FILE,
  466.  IDH_WINDISK_FATERRMXPLEN_REPAIR_FILE,
  467.  IDH_WINDISK_FATERRMXPLEN_DELETE_FILE,0xFFFFFFFFL},
  468. {0xFFFFFFFFL,
  469.  IDH_WINDISK_FATERRMXPLEN_IGNORE_FOLDER,
  470.  IDH_WINDISK_FATERRMXPLEN_REPAIR_FOLDER,
  471.  IDH_WINDISK_FATERRMXPLEN_DELETE_FOLDER,0xFFFFFFFFL},
  472. NULL,
  473. ISHELPBIFCANTDEL,     // IsHelpButton
  474. ISHELPBIFCANTDEL,     // IsAltHelpButton
  475. IDH_SCANDISK,     // HelpButtonID
  476. IDH_SCANDISK,     // AltHelpButtonID
  477. FALSE,     // IsMoreInfoButton
  478. 0xFFFFFFFFL,     // MoreInfoButtonHID
  479. FALSE,     // IsMultiError
  480. FALSE,     // DelButFilDir
  481. 0,     // DelButIDDir
  482. 0xFFFFFFFFL,     // DelButDirHID
  483. FALSE,     // FixButFilDir
  484. 0,     // FixButIDDir
  485. 0xFFFFFFFFL,     // FixButDirHID
  486. TRUE,     // WarnCantDel
  487. 2,     // DelButtIndx
  488. ERRCANTDEL,     // CantDelTstFlag
  489. TRUE,     // WarnCantFix
  490. 1,     // FixButtIndx
  491. ERRCANTDEL,     // CantFixTstFlag
  492. FALSE,     // CantFixTstIsRev
  493. FALSE,     // OkIsContinue
  494. FALSE},      // IsNoOk
  495. {ISTR_FATERRCDLIMIT,3,
  496. {ISTR_SE_IGNORE,ALTBUTT1(ISTR_FATERRMXPLENL),ISTR_SE_DIRDEL,0},
  497. {ISTR_SE_IGNORE,ALTBUTT1(ISTR_FATERRMXPLENL),ISTR_SE_DIRDEL,0},
  498. {ERETIGN,ERETMVDIR,ERETDELDIR,0},
  499. {0xFFFFFFFFL,
  500.  IDH_WINDISK_FATERRCDLIMIT_IGNORE,
  501.  IDH_WINDISK_FATERRCDLIMIT_REPAIR,
  502.  IDH_WINDISK_FATERRCDLIMIT_DELETE,0xFFFFFFFFL},
  503. {0xFFFFFFFFL,
  504.  IDH_WINDISK_FATERRCDLIMIT_IGNORE,
  505.  IDH_WINDISK_FATERRCDLIMIT_REPAIR,
  506.  IDH_WINDISK_FATERRCDLIMIT_DELETE,0xFFFFFFFFL},
  507. NULL,
  508. ISHELPBIFCANTDEL,     // IsHelpButton
  509. ISHELPBIFCANTDEL,     // IsAltHelpButton
  510. IDH_SCANDISK,     // HelpButtonID
  511. IDH_SCANDISK,     // AltHelpButtonID
  512. FALSE,     // IsMoreInfoButton
  513. 0xFFFFFFFFL,     // MoreInfoButtonHID
  514. FALSE,     // IsMultiError
  515. FALSE,     // DelButFilDir
  516. 0,     // DelButIDDir
  517. 0xFFFFFFFFL,     // DelButDirHID
  518. FALSE,     // FixButFilDir
  519. 0,     // FixButIDDir
  520. 0xFFFFFFFFL,     // FixButDirHID
  521. TRUE,     // WarnCantDel
  522. 2,     // DelButtIndx
  523. ERRCANTDEL,     // CantDelTstFlag
  524. TRUE,     // WarnCantFix
  525. 1,     // FixButtIndx
  526. ERRCANTDEL,     // CantFixTstFlag
  527. FALSE,     // CantFixTstIsRev
  528. FALSE,     // OkIsContinue
  529. FALSE},      // IsNoOk
  530. {ISTR_DDERRSIZE1,0,
  531. {0,0,0,0},
  532. {0,0,0,0},
  533. {ERETIGN2,0,0,0},
  534. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  535. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  536. NULL,
  537. ISHELPBALWAYS,     // IsHelpButton
  538. ISHELPBALWAYS,     // IsAltHelpButton
  539. IDH_COMPRESS_CORRECT_SIZE,     // HelpButtonID
  540. IDH_COMPRESS_CORRECT_SIZE,     // AltHelpButtonID
  541. FALSE,     // IsMoreInfoButton
  542. 0xFFFFFFFFL,     // MoreInfoButtonHID
  543. FALSE,     // IsMultiError
  544. FALSE,     // DelButFilDir
  545. 0,     // DelButIDDir
  546. 0xFFFFFFFFL,     // DelButDirHID
  547. FALSE,     // FixButFilDir
  548. 0,     // FixButIDDir
  549. 0xFFFFFFFFL,     // FixButDirHID
  550. FALSE,     // WarnCantDel
  551. 0xFFFF,      // DelButtIndx
  552. 0,     // CantDelTstFlag
  553. FALSE,     // WarnCantFix
  554. 0xFFFF,      // FixButtIndx
  555. 0,     // CantFixTstFlag
  556. FALSE,     // CantFixTstIsRev
  557. TRUE,     // OkIsContinue
  558. FALSE},      // IsNoOk
  559. {ISTR_DDERRFRAG,0,
  560. {0,0,0,0},
  561. {0,0,0,0},
  562. {ERETIGN2,0,0,0},
  563. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  564. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  565. NULL,
  566. ISHELPBALWAYS,     // IsHelpButton
  567. ISHELPBALWAYS,     // IsAltHelpButton
  568. IDH_UTILITIES_DEFRAG_DISK_ERROR,    // HelpButtonID
  569. IDH_UTILITIES_DEFRAG_DISK_ERROR,    // AltHelpButtonID
  570. FALSE,     // IsMoreInfoButton
  571. 0xFFFFFFFFL,     // MoreInfoButtonHID
  572. FALSE,     // IsMultiError
  573. FALSE,     // DelButFilDir
  574. 0,     // DelButIDDir
  575. 0xFFFFFFFFL,     // DelButDirHID
  576. FALSE,     // FixButFilDir
  577. 0,     // FixButIDDir
  578. 0xFFFFFFFFL,     // FixButDirHID
  579. FALSE,     // WarnCantDel
  580. 0xFFFF,      // DelButtIndx
  581. 0,     // CantDelTstFlag
  582. FALSE,     // WarnCantFix
  583. 0xFFFF,      // FixButtIndx
  584. 0,     // CantFixTstFlag
  585. FALSE,     // CantFixTstIsRev
  586. TRUE,     // OkIsContinue
  587. FALSE},      // IsNoOk
  588. {ISTR_DDERRALIGN,0,
  589. {0,0,0,0},
  590. {0,0,0,0},
  591. {ERETIGN2,0,0,0},
  592. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  593. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  594. NULL,
  595. ISHELPBALWAYS,     // IsHelpButton
  596. ISHELPBALWAYS,     // IsAltHelpButton
  597. IDH_COMPRESS_CORRECT_RATIO,     // HelpButtonID
  598. IDH_COMPRESS_CORRECT_RATIO,     // AltHelpButtonID
  599. FALSE,     // IsMoreInfoButton
  600. 0xFFFFFFFFL,     // MoreInfoButtonHID
  601. FALSE,     // IsMultiError
  602. FALSE,     // DelButFilDir
  603. 0,     // DelButIDDir
  604. 0xFFFFFFFFL,     // DelButDirHID
  605. FALSE,     // FixButFilDir
  606. 0,     // FixButIDDir
  607. 0xFFFFFFFFL,     // FixButDirHID
  608. FALSE,     // WarnCantDel
  609. 0xFFFF,      // DelButtIndx
  610. 0,     // CantDelTstFlag
  611. FALSE,     // WarnCantFix
  612. 0xFFFF,      // FixButtIndx
  613. 0,     // CantFixTstFlag
  614. FALSE,     // CantFixTstIsRev
  615. TRUE,     // OkIsContinue
  616. FALSE},      // IsNoOk
  617. {ISTR_DDERRNOXLCHK,0,
  618. {0,0,0,0},
  619. {0,0,0,0},
  620. {ERETIGN2,0,0,0},
  621. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  622. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  623. NULL,
  624. ISNOHELPB,     // IsHelpButton
  625. ISNOHELPB,     // IsAltHelpButton
  626. 0xFFFFFFFFL,     // HelpButtonID
  627. 0xFFFFFFFFL,     // AltHelpButtonID
  628. FALSE,     // IsMoreInfoButton
  629. 0xFFFFFFFFL,     // MoreInfoButtonHID
  630. FALSE,     // IsMultiError
  631. FALSE,     // DelButFilDir
  632. 0,     // DelButIDDir
  633. 0xFFFFFFFFL,     // DelButDirHID
  634. FALSE,     // FixButFilDir
  635. 0,     // FixButIDDir
  636. 0xFFFFFFFFL,     // FixButDirHID
  637. FALSE,     // WarnCantDel
  638. 0xFFFF,      // DelButtIndx
  639. 0,     // CantDelTstFlag
  640. FALSE,     // WarnCantFix
  641. 0xFFFF,      // FixButtIndx
  642. 0,     // CantFixTstFlag
  643. FALSE,     // CantFixTstIsRev
  644. FALSE,     // OkIsContinue
  645. FALSE},      // IsNoOk
  646. {ISTR_DDERRUNSUP,0,
  647. {0,0,0,0},
  648. {0,0,0,0},
  649. {ERETIGN2,0,0,0},
  650. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  651. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  652. NULL,
  653. ISNOHELPB,     // IsHelpButton
  654. ISNOHELPB,     // IsAltHelpButton
  655. 0xFFFFFFFFL,     // HelpButtonID
  656. 0xFFFFFFFFL,     // AltHelpButtonID
  657. FALSE,     // IsMoreInfoButton
  658. 0xFFFFFFFFL,     // MoreInfoButtonHID
  659. FALSE,     // IsMultiError
  660. FALSE,     // DelButFilDir
  661. 0,     // DelButIDDir
  662. 0xFFFFFFFFL,     // DelButDirHID
  663. FALSE,     // FixButFilDir
  664. 0,     // FixButIDDir
  665. 0xFFFFFFFFL,     // FixButDirHID
  666. FALSE,     // WarnCantDel
  667. 0xFFFF,      // DelButtIndx
  668. 0,     // CantDelTstFlag
  669. FALSE,     // WarnCantFix
  670. 0xFFFF,      // FixButtIndx
  671. 0,     // CantFixTstFlag
  672. FALSE,     // CantFixTstIsRev
  673. FALSE,     // OkIsContinue
  674. FALSE},      // IsNoOk
  675. {ISTR_DDERRCVFNM,2,
  676. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  677. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  678. {ERETAFIX,ERETIGN,0,0},
  679. {0xFFFFFFFFL,
  680.  IDH_WINDISK_DDERRCVFNM_REPAIR,
  681.  IDH_WINDISK_DDERRCVFNM_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  682. {0xFFFFFFFFL,
  683.  IDH_WINDISK_DDERRCVFNM_REPAIR,
  684.  IDH_WINDISK_DDERRCVFNM_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  685. NULL,
  686. ISNOHELPB,     // IsHelpButton
  687. ISNOHELPB,     // IsAltHelpButton
  688. 0xFFFFFFFFL,     // HelpButtonID
  689. 0xFFFFFFFFL,     // AltHelpButtonID
  690. FALSE,     // IsMoreInfoButton
  691. 0xFFFFFFFFL,     // MoreInfoButtonHID
  692. FALSE,     // IsMultiError
  693. FALSE,     // DelButFilDir
  694. 0,     // DelButIDDir
  695. 0xFFFFFFFFL,     // DelButDirHID
  696. FALSE,     // FixButFilDir
  697. 0,     // FixButIDDir
  698. 0xFFFFFFFFL,     // FixButDirHID
  699. FALSE,     // WarnCantDel
  700. 0xFFFF,      // DelButtIndx
  701. 0,     // CantDelTstFlag
  702. FALSE,     // WarnCantFix
  703. 0xFFFF,      // FixButtIndx
  704. 0,     // CantFixTstFlag
  705. FALSE,     // CantFixTstIsRev
  706. FALSE,     // OkIsContinue
  707. FALSE},      // IsNoOk
  708. {ISTR_DDERRSIG,2,
  709. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  710. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  711. {ERETAFIX,ERETIGN,0,0},
  712. {0xFFFFFFFFL,
  713.  IDH_WINDISK_DDERRSIG_REPAIR,
  714.  IDH_WINDISK_DDERRSIG_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  715. {0xFFFFFFFFL,
  716.  IDH_WINDISK_DDERRSIG_REPAIR,
  717.  IDH_WINDISK_DDERRSIG_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  718. NULL,
  719. ISNOHELPB,     // IsHelpButton
  720. ISNOHELPB,     // IsAltHelpButton
  721. 0xFFFFFFFFL,     // HelpButtonID
  722. 0xFFFFFFFFL,     // AltHelpButtonID
  723. FALSE,     // IsMoreInfoButton
  724. 0xFFFFFFFFL,     // MoreInfoButtonHID
  725. FALSE,     // IsMultiError
  726. FALSE,     // DelButFilDir
  727. 0,     // DelButIDDir
  728. 0xFFFFFFFFL,     // DelButDirHID
  729. FALSE,     // FixButFilDir
  730. 0,     // FixButIDDir
  731. 0xFFFFFFFFL,     // FixButDirHID
  732. FALSE,     // WarnCantDel
  733. 0xFFFF,      // DelButtIndx
  734. 0,     // CantDelTstFlag
  735. FALSE,     // WarnCantFix
  736. 0xFFFF,      // FixButtIndx
  737. 0,     // CantFixTstFlag
  738. FALSE,     // CantFixTstIsRev
  739. FALSE,     // OkIsContinue
  740. FALSE},      // IsNoOk
  741. {ISTR_DDERRBOOT,2,
  742. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  743. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  744. {ERETAFIX,ERETIGN,0,0},
  745. {0xFFFFFFFFL,
  746.  IDH_WINDISK_DDERRBOOT_REPAIR,
  747.  IDH_WINDISK_DDERRBOOT_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  748. {0xFFFFFFFFL,
  749.  IDH_WINDISK_DDERRBOOT_REPAIR,
  750.  IDH_WINDISK_DDERRBOOT_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  751. NULL,
  752. ISNOHELPB,     // IsHelpButton
  753. ISNOHELPB,     // IsAltHelpButton
  754. 0xFFFFFFFFL,     // HelpButtonID
  755. 0xFFFFFFFFL,     // AltHelpButtonID
  756. FALSE,     // IsMoreInfoButton
  757. 0xFFFFFFFFL,     // MoreInfoButtonHID
  758. FALSE,     // IsMultiError
  759. FALSE,     // DelButFilDir
  760. 0,     // DelButIDDir
  761. 0xFFFFFFFFL,     // DelButDirHID
  762. FALSE,     // FixButFilDir
  763. 0,     // FixButIDDir
  764. 0xFFFFFFFFL,     // FixButDirHID
  765. FALSE,     // WarnCantDel
  766. 0xFFFF,      // DelButtIndx
  767. 0,     // CantDelTstFlag
  768. FALSE,     // WarnCantFix
  769. 0xFFFF,      // FixButtIndx
  770. 0,     // CantFixTstFlag
  771. FALSE,     // CantFixTstIsRev
  772. FALSE,     // OkIsContinue
  773. FALSE},      // IsNoOk
  774. {ISTR_DDERRMDBPB,2,
  775. {BUTT1(ISTR_DDERRMDBPB),ISTR_SE_IGNORE,0,0},
  776. {BUTT1(ISTR_DDERRMDBPB),ISTR_SE_IGNORE,0,0},
  777. {ERETAFIX,ERETIGN,0,0},
  778. {0xFFFFFFFFL,
  779.  IDH_WINDISK_DDEMDBPB_REPAIR,
  780.  IDH_WINDISK_DDEMDBPB_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  781. {0xFFFFFFFFL,
  782.  IDH_WINDISK_DDEMDBPB_REPAIR,
  783.  IDH_WINDISK_DDEMDBPB_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  784. NULL,
  785. ISHELPBIFCANTDEL,     // IsHelpButton
  786. ISHELPBIFCANTDEL,     // IsAltHelpButton
  787. IDH_SCANDISK_FINISH,     // HelpButtonID
  788. IDH_SCANDISK_FINISH,     // AltHelpButtonID
  789. FALSE,     // IsMoreInfoButton
  790. 0xFFFFFFFFL,     // MoreInfoButtonHID
  791. FALSE,     // IsMultiError
  792. FALSE,     // DelButFilDir
  793. 0,     // DelButIDDir
  794. 0xFFFFFFFFL,     // DelButDirHID
  795. FALSE,     // FixButFilDir
  796. 0,     // FixButIDDir
  797. 0xFFFFFFFFL,     // FixButDirHID
  798. FALSE,     // WarnCantDel
  799. 0xFFFF,      // DelButtIndx
  800. 0,     // CantDelTstFlag
  801. TRUE,     // WarnCantFix
  802. 0,     // FixButtIndx
  803. CANTFIX,     // CantFixTstFlag
  804. FALSE,     // CantFixTstIsRev
  805. FALSE,     // OkIsContinue
  806. FALSE},      // IsNoOk
  807. {ISTR_DDERRSIZE2A,0,
  808. {0,0,0,0},
  809. {0,0,0,0},
  810. {ERETCAN,0,0,0},
  811. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  812. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  813. NULL,
  814. ISHELPBALWAYS,     // IsHelpButton
  815. ISHELPBALWAYS,     // IsAltHelpButton
  816. IDH_CVF_TOO_SMALL_CHECK_HOST,     // HelpButtonID
  817. IDH_CVF_TOO_SMALL_CHECK_HOST,     // AltHelpButtonID
  818. FALSE,     // IsMoreInfoButton
  819. 0xFFFFFFFFL,     // MoreInfoButtonHID
  820. FALSE,     // IsMultiError
  821. FALSE,     // DelButFilDir
  822. 0,     // DelButIDDir
  823. 0xFFFFFFFFL,     // DelButDirHID
  824. FALSE,     // FixButFilDir
  825. 0,     // FixButIDDir
  826. 0xFFFFFFFFL,     // FixButDirHID
  827. FALSE,     // WarnCantDel
  828. 0xFFFF,      // DelButtIndx
  829. 0,     // CantDelTstFlag
  830. FALSE,     // WarnCantFix
  831. 0xFFFF,      // FixButtIndx
  832. 0,     // CantFixTstFlag
  833. FALSE,     // CantFixTstIsRev
  834. FALSE,     // OkIsContinue
  835. TRUE},     // IsNoOk
  836. {ISTR_DDERRSIZE2B,1,
  837. {ISTR_SE_REPAIR,0,0,0},
  838. {ISTR_SE_REPAIR,0,0,0},
  839. {ERETAFIX,0,0,0},
  840. {0xFFFFFFFFL,
  841.  IDH_WINDISK_DDESIZE2_REPAIR,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  842. {0xFFFFFFFFL,
  843.  IDH_WINDISK_DDESIZE2_REPAIR,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  844. NULL,
  845. ISHELPBIFCANTDEL,     // IsHelpButton
  846. ISHELPBIFCANTDEL,     // IsAltHelpButton
  847. IDH_SCANDISK_FINISH,     // HelpButtonID
  848. IDH_SCANDISK_FINISH,     // AltHelpButtonID
  849. FALSE,     // IsMoreInfoButton
  850. 0xFFFFFFFFL,     // MoreInfoButtonHID
  851. FALSE,     // IsMultiError
  852. FALSE,     // DelButFilDir
  853. 0,     // DelButIDDir
  854. 0xFFFFFFFFL,     // DelButDirHID
  855. FALSE,     // FixButFilDir
  856. 0,     // FixButIDDir
  857. 0xFFFFFFFFL,     // FixButDirHID
  858. FALSE,     // WarnCantDel
  859. 0xFFFF,      // DelButtIndx
  860. 0,     // CantDelTstFlag
  861. TRUE,     // WarnCantFix
  862. 0,     // FixButtIndx
  863. CANTFIX,     // CantFixTstFlag
  864. FALSE,     // CantFixTstIsRev
  865. FALSE,     // OkIsContinue
  866. FALSE},      // IsNoOk
  867. {ISTR_DDERRMDFAT,2,
  868. {BUTT1(ISTR_DDERRMDFAT),ISTR_SE_IGNORE,0,0},
  869. {BUTT1(ISTR_DDERRMDFAT),ISTR_SE_IGNORE,0,0},
  870. {ERETAFIX,ERETIGN,0,0},
  871. {0xFFFFFFFFL,
  872.  IDH_WINDISK_DDERRMDFAT_REPAIR,
  873.  IDH_WINDISK_DDERRMDFAT_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  874. {0xFFFFFFFFL,
  875.  IDH_WINDISK_DDERRMDFAT_LOST_REPAIR,
  876.  IDH_WINDISK_DDERRMDFAT_LOST_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  877. NULL,
  878. ISNOHELPB,     // IsHelpButton
  879. ISNOHELPB,     // IsAltHelpButton
  880. 0xFFFFFFFFL,     // HelpButtonID
  881. 0xFFFFFFFFL,     // AltHelpButtonID
  882. FALSE,     // IsMoreInfoButton
  883. 0xFFFFFFFFL,     // MoreInfoButtonHID
  884. FALSE,     // IsMultiError
  885. FALSE,     // DelButFilDir
  886. 0,     // DelButIDDir
  887. 0xFFFFFFFFL,     // DelButDirHID
  888. FALSE,     // FixButFilDir
  889. 0,     // FixButIDDir
  890. 0xFFFFFFFFL,     // FixButDirHID
  891. FALSE,     // WarnCantDel
  892. 0xFFFF,      // DelButtIndx
  893. 0,     // CantDelTstFlag
  894. FALSE,     // WarnCantFix
  895. 0xFFFF,      // FixButtIndx
  896. 0,     // CantFixTstFlag
  897. FALSE,     // CantFixTstIsRev
  898. FALSE,     // OkIsContinue
  899. FALSE},      // IsNoOk
  900. {ISTR_DDERRLSTSQZ,3,
  901. {BUTT1(ISTR_DDERRLSTSQZ),BUTT2(ISTR_DDERRLSTSQZ),ISTR_SE_IGNORE,0},
  902. {BUTT1(ISTR_DDERRLSTSQZ),BUTT2(ISTR_DDERRLSTSQZ),ISTR_SE_IGNORE,0},
  903. {ERETFREE,ERETMKFILS,ERETIGN,0},
  904. {0xFFFFFFFFL,
  905.  IDH_WINDISK_DDERRLSTSQZ_DISCARD,
  906.  IDH_WINDISK_DDERRLSTSQZ_KEEP,
  907.  IDH_WINDISK_DDERRLSTSQZ_IGNORE,0xFFFFFFFFL},
  908. {0xFFFFFFFFL,
  909.  IDH_WINDISK_DDERRLSTSQZ_DISCARD,
  910.  IDH_WINDISK_DDERRLSTSQZ_KEEP,
  911.  IDH_WINDISK_DDERRLSTSQZ_IGNORE,0xFFFFFFFFL},
  912. NULL,
  913. ISNOHELPB,     // IsHelpButton
  914. ISNOHELPB,     // IsAltHelpButton
  915. 0xFFFFFFFFL,     // HelpButtonID
  916. 0xFFFFFFFFL,     // AltHelpButtonID
  917. FALSE,     // IsMoreInfoButton
  918. 0xFFFFFFFFL,     // MoreInfoButtonHID
  919. FALSE,     // IsMultiError
  920. FALSE,     // DelButFilDir
  921. 0,     // DelButIDDir
  922. 0xFFFFFFFFL,     // DelButDirHID
  923. FALSE,     // FixButFilDir
  924. 0,     // FixButIDDir
  925. 0xFFFFFFFFL,     // FixButDirHID
  926. FALSE,     // WarnCantDel
  927. 0xFFFF,      // DelButtIndx
  928. 0,     // CantDelTstFlag
  929. FALSE,     // WarnCantFix
  930. 0xFFFF,      // FixButtIndx
  931. 0,     // CantFixTstFlag
  932. FALSE,     // CantFixTstIsRev
  933. FALSE,     // OkIsContinue
  934. FALSE},      // IsNoOk
  935. {ISTR_ERRISNTBAD,3,
  936. {BUTT1(ISTR_ERRISNTBAD),BUTT2(ISTR_ERRISNTBAD),BUTT3(ISTR_ERRISNTBAD),0},
  937. {BUTT1(ISTR_ERRISNTBAD),BUTT2(ISTR_ERRISNTBAD),BUTT3(ISTR_ERRISNTBAD),0},
  938. {ERETIGN2,ERETMRKBAD,ERETRETRY,0},
  939. {0xFFFFFFFFL,
  940.  IDH_WINDISK_ISNTBAD_LEAVE,
  941.  IDH_WINDISK_ISNTBAD_CLEAR,
  942.  IDH_WINDISK_ISNTBAD_RETRY,0xFFFFFFFFL},
  943. {0xFFFFFFFFL,
  944.  IDH_WINDISK_ISNTBAD_LEAVE,
  945.  IDH_WINDISK_ISNTBAD_CLEAR,
  946.  IDH_WINDISK_ISNTBAD_RETRY,0xFFFFFFFFL},
  947. NULL,
  948. ISNOHELPB,     // IsHelpButton
  949. ISNOHELPB,     // IsAltHelpButton
  950. 0xFFFFFFFFL,     // HelpButtonID
  951. 0xFFFFFFFFL,     // AltHelpButtonID
  952. FALSE,     // IsMoreInfoButton
  953. 0xFFFFFFFFL,     // MoreInfoButtonHID
  954. FALSE,     // IsMultiError
  955. FALSE,     // DelButFilDir
  956. 0,     // DelButIDDir
  957. 0xFFFFFFFFL,     // DelButDirHID
  958. FALSE,     // FixButFilDir
  959. 0,     // FixButIDDir
  960. 0xFFFFFFFFL,     // FixButDirHID
  961. FALSE,     // WarnCantDel
  962. 0xFFFF,      // DelButtIndx
  963. 0,     // CantDelTstFlag
  964. FALSE,     // WarnCantFix
  965. 0xFFFF,      // FixButtIndx
  966. 0,     // CantFixTstFlag
  967. FALSE,     // CantFixTstIsRev
  968. FALSE,     // OkIsContinue
  969. FALSE},      // IsNoOk
  970. {ISTR_ERRISBAD1,3,
  971. {BUTT1(ISTR_ERRISBAD1),BUTT2(ISTR_ERRISBAD1),ISTR_SE_IGNORE,0},
  972. {BUTT1(ISTR_ERRISBAD1),BUTT2(ISTR_ERRISBAD1),ISTR_SE_IGNORE,0},
  973. {RESTARTWITHCH,ERETRETRY,ERETIGN2,0},
  974. {0xFFFFFFFFL,
  975.  IDH_WINDISK_ISBAD_COMP_HOST_NOTDONE_RESTART,
  976.  IDH_WINDISK_ISBAD_SYSTEM_RETRY,
  977.  IDH_WINDISK_ISBAD_SYSTEM_IGNORE,0xFFFFFFFFL},
  978. {0xFFFFFFFFL,
  979.  IDH_WINDISK_ISBAD_COMP_HOST_NOTDONE_RESTART,
  980.  IDH_WINDISK_ISBAD_SYSTEM_RETRY,
  981.  IDH_WINDISK_ISBAD_SYSTEM_IGNORE,0xFFFFFFFFL},
  982. NULL,
  983. ISNOHELPB,     // IsHelpButton
  984. ISNOHELPB,     // IsAltHelpButton
  985. 0xFFFFFFFFL,     // HelpButtonID
  986. 0xFFFFFFFFL,     // AltHelpButtonID
  987. FALSE,     // IsMoreInfoButton
  988. 0xFFFFFFFFL,     // MoreInfoButtonHID
  989. FALSE,     // IsMultiError
  990. FALSE,     // DelButFilDir
  991. 0,     // DelButIDDir
  992. 0xFFFFFFFFL,     // DelButDirHID
  993. FALSE,     // FixButFilDir
  994. 0,     // FixButIDDir
  995. 0xFFFFFFFFL,     // FixButDirHID
  996. FALSE,     // WarnCantDel
  997. 0xFFFF,      // DelButtIndx
  998. 0,     // CantDelTstFlag
  999. FALSE,     // WarnCantFix
  1000. 0xFFFF,      // FixButtIndx
  1001. 0,     // CantFixTstFlag
  1002. FALSE,     // CantFixTstIsRev
  1003. FALSE,     // OkIsContinue
  1004. FALSE},      // IsNoOk
  1005. {ISTR_ERRISBAD2,4,
  1006. {BUTT1(ISTR_ERRISBAD1),ISTR_SE_REPAIR,BUTT2(ISTR_ERRISBAD1),ISTR_SE_IGNORE},
  1007. {BUTT1(ISTR_ERRISBAD1),ISTR_SE_REPAIR,BUTT2(ISTR_ERRISBAD1),ISTR_SE_IGNORE},
  1008. {RESTARTWITHCH,ERETMRKBAD,ERETRETRY,ERETIGN2},
  1009. {0xFFFFFFFFL,
  1010.  IDH_WINDISK_ISBAD_COMP_HOST_NOTDONE_RESTART,
  1011.  IDH_WINDISK_ISBAD_COMP_HOST_NOTDONE_REPAIR,
  1012.  IDH_WINDISK_ISBAD_COMP_RETRY,
  1013.  IDH_WINDISK_ISBAD_IGNORE},
  1014. {0xFFFFFFFFL,
  1015.  IDH_WINDISK_ISBAD_COMP_HOST_NOTDONE_RESTART,
  1016.  IDH_WINDISK_ISBAD_COMP_HOST_NOTDONE_REPAIR,
  1017.  IDH_WINDISK_ISBAD_COMP_RETRY,
  1018.  IDH_WINDISK_ISBAD_IGNORE},
  1019. NULL,
  1020. ISHELPBIFCANTDEL,     // IsHelpButton
  1021. ISHELPBIFCANTDEL,     // IsAltHelpButton
  1022. IDH_SCANDISK_FINISH_SURF,     // HelpButtonID
  1023. IDH_SCANDISK_FINISH_SURF,     // AltHelpButtonID
  1024. FALSE,     // IsMoreInfoButton
  1025. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1026. FALSE,     // IsMultiError
  1027. FALSE,     // DelButFilDir
  1028. 0,     // DelButIDDir
  1029. 0xFFFFFFFFL,     // DelButDirHID
  1030. FALSE,     // FixButFilDir
  1031. 0,     // FixButIDDir
  1032. 0xFFFFFFFFL,     // FixButDirHID
  1033. FALSE,     // WarnCantDel
  1034. 0xFFFF,      // DelButtIndx
  1035. 0,     // CantDelTstFlag
  1036. TRUE,     // WarnCantFix
  1037. 1,     // FixButtIndx
  1038. RECOV,     // CantFixTstFlag
  1039. TRUE,     // CantFixTstIsRev
  1040. FALSE,     // OkIsContinue
  1041. FALSE},      // IsNoOk
  1042. {ISTR_ERRISBAD3,2,
  1043. {BUTT2(ISTR_ERRISBAD1),ISTR_SE_IGNORE,0,0},
  1044. {BUTT2(ISTR_ERRISBAD1),ISTR_SE_IGNORE,0,0},
  1045. {ERETRETRY,ERETIGN2,0,0},
  1046. {0xFFFFFFFFL,
  1047.  IDH_WINDISK_ISBAD_SYSTEM_RETRY,
  1048.  IDH_WINDISK_ISBAD_SYSTEM_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  1049. {0xFFFFFFFFL,
  1050.  IDH_WINDISK_ISBAD_SYSTEM_RETRY,
  1051.  IDH_WINDISK_ISBAD_SYSTEM_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  1052. NULL,
  1053. ISNOHELPB,     // IsHelpButton
  1054. ISNOHELPB,     // IsAltHelpButton
  1055. 0xFFFFFFFFL,     // HelpButtonID
  1056. 0xFFFFFFFFL,     // AltHelpButtonID
  1057. FALSE,     // IsMoreInfoButton
  1058. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1059. FALSE,     // IsMultiError
  1060. FALSE,     // DelButFilDir
  1061. 0,     // DelButIDDir
  1062. 0xFFFFFFFFL,     // DelButDirHID
  1063. FALSE,     // FixButFilDir
  1064. 0,     // FixButIDDir
  1065. 0xFFFFFFFFL,     // FixButDirHID
  1066. FALSE,     // WarnCantDel
  1067. 0xFFFF,      // DelButtIndx
  1068. 0,     // CantDelTstFlag
  1069. FALSE,     // WarnCantFix
  1070. 0xFFFF,      // FixButtIndx
  1071. 0,     // CantFixTstFlag
  1072. FALSE,     // CantFixTstIsRev
  1073. FALSE,     // OkIsContinue
  1074. FALSE},      // IsNoOk
  1075. {ISTR_ERRISBAD4,3,
  1076. {ISTR_SE_REPAIR,BUTT2(ISTR_ERRISBAD4),ISTR_SE_IGNORE,0},
  1077. {ISTR_SE_REPAIR,BUTT2(ISTR_ERRISBAD4),ISTR_SE_IGNORE,0},
  1078. {ERETMRKBAD,ERETRETRY,ERETIGN2,0},
  1079. {0xFFFFFFFFL,
  1080.  IDH_WINDISK_ISBAD_COMP_HOST_DONE_REPAIR,
  1081.  IDH_WINDISK_ISBAD_COMP_RETRY,
  1082.  IDH_WINDISK_ISBAD_IGNORE,0xFFFFFFFFL},
  1083. {0xFFFFFFFFL,
  1084.  IDH_WINDISK_ISBAD_COMP_HOST_DONE_REPAIR,
  1085.  IDH_WINDISK_ISBAD_COMP_RETRY,
  1086.  IDH_WINDISK_ISBAD_IGNORE,0xFFFFFFFFL},
  1087. NULL,
  1088. ISHELPBIFCANTDEL,     // IsHelpButton
  1089. ISHELPBIFCANTDEL,     // IsAltHelpButton
  1090. IDH_SCANDISK_FINISH_SURF,     // HelpButtonID
  1091. IDH_SCANDISK_FINISH_SURF,     // AltHelpButtonID
  1092. FALSE,     // IsMoreInfoButton
  1093. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1094. FALSE,     // IsMultiError
  1095. FALSE,     // DelButFilDir
  1096. 0,     // DelButIDDir
  1097. 0xFFFFFFFFL,     // DelButDirHID
  1098. FALSE,     // FixButFilDir
  1099. 0,     // FixButIDDir
  1100. 0xFFFFFFFFL,     // FixButDirHID
  1101. FALSE,     // WarnCantDel
  1102. 0xFFFF,      // DelButtIndx
  1103. 0,     // CantDelTstFlag
  1104. TRUE,     // WarnCantFix
  1105. 0,     // FixButtIndx
  1106. RECOV,     // CantFixTstFlag
  1107. TRUE,     // CantFixTstIsRev
  1108. FALSE,     // OkIsContinue
  1109. FALSE},      // IsNoOk
  1110. {ISTR_ERRISBAD5,3,
  1111. {ISTR_SE_REPAIR,BUTT2(ISTR_ERRISBAD1),ISTR_SE_IGNORE,0},
  1112. {ISTR_SE_REPAIR,BUTT2(ISTR_ERRISBAD1),ISTR_SE_IGNORE,0},
  1113. {ERETMRKBAD,ERETRETRY,ERETIGN2,0},
  1114. {0xFFFFFFFFL,
  1115.  IDH_WINDISK_ISBAD_COMP_HOST_DONE_REPAIR,
  1116.  IDH_WINDISK_ISBAD_COMP_RETRY,
  1117.  IDH_WINDISK_ISBAD_IGNORE,0xFFFFFFFFL},
  1118. {0xFFFFFFFFL,
  1119.  IDH_WINDISK_ISBAD_COMP_HOST_DONE_REPAIR,
  1120.  IDH_WINDISK_ISBAD_COMP_RETRY,
  1121.  IDH_WINDISK_ISBAD_IGNORE,0xFFFFFFFFL},
  1122. NULL,
  1123. ISHELPBIFCANTDEL,     // IsHelpButton
  1124. ISHELPBIFCANTDEL,     // IsAltHelpButton
  1125. IDH_SCANDISK_FINISH_SURF,     // HelpButtonID
  1126. IDH_SCANDISK_FINISH_SURF,     // AltHelpButtonID
  1127. FALSE,     // IsMoreInfoButton
  1128. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1129. FALSE,     // IsMultiError
  1130. FALSE,     // DelButFilDir
  1131. 0,     // DelButIDDir
  1132. 0xFFFFFFFFL,     // DelButDirHID
  1133. FALSE,     // FixButFilDir
  1134. 0,     // FixButIDDir
  1135. 0xFFFFFFFFL,     // FixButDirHID
  1136. FALSE,     // WarnCantDel
  1137. 0xFFFF,      // DelButtIndx
  1138. 0,     // CantDelTstFlag
  1139. TRUE,     // WarnCantFix
  1140. 0,     // FixButtIndx
  1141. RECOV,     // CantFixTstFlag
  1142. TRUE,     // CantFixTstIsRev
  1143. FALSE,     // OkIsContinue
  1144. FALSE},      // IsNoOk
  1145. {ISTR_ERRISBAD6,3,
  1146. {ISTR_SE_REPAIR,BUTT2(ISTR_ERRISBAD1),ISTR_SE_IGNORE,0},
  1147. {ISTR_SE_REPAIR,BUTT2(ISTR_ERRISBAD1),ISTR_SE_IGNORE,0},
  1148. {ERETMRKBAD,ERETRETRY,ERETIGN2,0},
  1149. {0xFFFFFFFFL,
  1150.  IDH_WINDISK_ISBAD_UNCOMP_DATA_REPAIR,
  1151.  IDH_WINDISK_ISBAD_UNCOMP_RETRY,
  1152.  IDH_WINDISK_ISBAD_IGNORE,0xFFFFFFFFL},
  1153. {0xFFFFFFFFL,
  1154.  IDH_WINDISK_ISBAD_UNCOMP_DATA_REPAIR,
  1155.  IDH_WINDISK_ISBAD_UNCOMP_RETRY,
  1156.  IDH_WINDISK_ISBAD_IGNORE,0xFFFFFFFFL},
  1157. NULL,
  1158. ISNOHELPB,     // IsHelpButton
  1159. ISNOHELPB,     // IsAltHelpButton
  1160. 0xFFFFFFFFL,     // HelpButtonID
  1161. 0xFFFFFFFFL,     // AltHelpButtonID
  1162. FALSE,     // IsMoreInfoButton
  1163. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1164. FALSE,     // IsMultiError
  1165. FALSE,     // DelButFilDir
  1166. 0,     // DelButIDDir
  1167. 0xFFFFFFFFL,     // DelButDirHID
  1168. FALSE,     // FixButFilDir
  1169. 0,     // FixButIDDir
  1170. 0xFFFFFFFFL,     // FixButDirHID
  1171. FALSE,     // WarnCantDel
  1172. 0xFFFF,      // DelButtIndx
  1173. 0,     // CantDelTstFlag
  1174. FALSE,     // WarnCantFix
  1175. 0xFFFF,      // FixButtIndx
  1176. 0,     // CantFixTstFlag
  1177. FALSE,     // CantFixTstIsRev
  1178. FALSE,     // OkIsContinue
  1179. FALSE},      // IsNoOk
  1180. {ISTR_ERRMEM,2,
  1181. {BUTT1(ISTR_ERRMEM),BUTT2(ISTR_ERRMEM),0,0},
  1182. {BUTT1(ISTR_ERRMEM),BUTT2(ISTR_ERRMEM),0,0},
  1183. {ERETRETRY,ERETIGN,0,0},
  1184. {0xFFFFFFFFL,
  1185.  IDH_WINDISK_MEMORYERROR_RETRY,
  1186.  IDH_WINDISK_MEMORYERROR_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  1187. {0xFFFFFFFFL,
  1188.  IDH_WINDISK_MEMORYERROR_RETRY,
  1189.  IDH_WINDISK_MEMORYERROR_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  1190. NULL,
  1191. ISHELPBIFCANTDEL,     // IsHelpButton
  1192. ISHELPBIFCANTDEL,     // IsAltHelpButton
  1193. IDH_SCANDISK_FINISH,     // HelpButtonID
  1194. IDH_SCANDISK_FINISH,     // AltHelpButtonID
  1195. FALSE,     // IsMoreInfoButton
  1196. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1197. FALSE,     // IsMultiError
  1198. FALSE,     // DelButFilDir
  1199. 0,     // DelButIDDir
  1200. 0xFFFFFFFFL,     // DelButDirHID
  1201. FALSE,     // FixButFilDir
  1202. 0,     // FixButIDDir
  1203. 0xFFFFFFFFL,     // FixButDirHID
  1204. FALSE,     // WarnCantDel
  1205. 0xFFFF,      // DelButtIndx
  1206. 0,     // CantDelTstFlag
  1207. TRUE,     // WarnCantFix
  1208. 1,     // FixButtIndx
  1209. RECOV,     // CantFixTstFlag
  1210. TRUE,     // CantFixTstIsRev
  1211. FALSE,     // OkIsContinue
  1212. FALSE},      // IsNoOk
  1213. {ISTR_ERRCANTDEL,0,
  1214. {0,0,0,0},
  1215. {0,0,0,0},
  1216. {ERETIGN2,0,0,0},
  1217. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1218. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1219. NULL,
  1220. ISNOHELPB,     // IsHelpButton
  1221. ISNOHELPB,     // IsAltHelpButton
  1222. 0xFFFFFFFFL,     // HelpButtonID
  1223. 0xFFFFFFFFL,     // AltHelpButtonID
  1224. FALSE,     // IsMoreInfoButton
  1225. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1226. FALSE,     // IsMultiError
  1227. FALSE,     // DelButFilDir
  1228. 0,     // DelButIDDir
  1229. 0xFFFFFFFFL,     // DelButDirHID
  1230. FALSE,     // FixButFilDir
  1231. 0,     // FixButIDDir
  1232. 0xFFFFFFFFL,     // FixButDirHID
  1233. FALSE,     // WarnCantDel
  1234. 0xFFFF,      // DelButtIndx
  1235. 0,     // CantDelTstFlag
  1236. FALSE,     // WarnCantFix
  1237. 0xFFFF,      // FixButtIndx
  1238. 0,     // CantFixTstFlag
  1239. FALSE,     // CantFixTstIsRev
  1240. FALSE,     // OkIsContinue
  1241. FALSE},      // IsNoOk
  1242. {ISTR_DDERRMOUNT,0,
  1243. {0,0,0,0},
  1244. {0,0,0,0},
  1245. {ERETIGN2,0,0,0},
  1246. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1247. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1248. NULL,
  1249. ISNOHELPB,     // IsHelpButton
  1250. ISNOHELPB,     // IsAltHelpButton
  1251. 0xFFFFFFFFL,     // HelpButtonID
  1252. 0xFFFFFFFFL,     // AltHelpButtonID
  1253. FALSE,     // IsMoreInfoButton
  1254. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1255. FALSE,     // IsMultiError
  1256. FALSE,     // DelButFilDir
  1257. 0,     // DelButIDDir
  1258. 0xFFFFFFFFL,     // DelButDirHID
  1259. FALSE,     // FixButFilDir
  1260. 0,     // FixButIDDir
  1261. 0xFFFFFFFFL,     // FixButDirHID
  1262. FALSE,     // WarnCantDel
  1263. 0xFFFF,      // DelButtIndx
  1264. 0,     // CantDelTstFlag
  1265. FALSE,     // WarnCantFix
  1266. 0xFFFF,      // FixButtIndx
  1267. 0,     // CantFixTstFlag
  1268. FALSE,     // CantFixTstIsRev
  1269. FALSE,     // OkIsContinue
  1270. FALSE},      // IsNoOk
  1271. {ISTR_READERR1,0,
  1272. {0,0,0,0},
  1273. {0,0,0,0},
  1274. {ERETCAN,0,0,0},
  1275. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1276. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1277. NULL,
  1278. ISNOHELPB,     // IsHelpButton
  1279. ISNOHELPB,     // IsAltHelpButton
  1280. 0xFFFFFFFFL,     // HelpButtonID
  1281. 0xFFFFFFFFL,     // AltHelpButtonID
  1282. FALSE,     // IsMoreInfoButton
  1283. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1284. FALSE,     // IsMultiError
  1285. FALSE,     // DelButFilDir
  1286. 0,     // DelButIDDir
  1287. 0xFFFFFFFFL,     // DelButDirHID
  1288. FALSE,     // FixButFilDir
  1289. 0,     // FixButIDDir
  1290. 0xFFFFFFFFL,     // FixButDirHID
  1291. FALSE,     // WarnCantDel
  1292. 0xFFFF,      // DelButtIndx
  1293. 0,     // CantDelTstFlag
  1294. FALSE,     // WarnCantFix
  1295. 0xFFFF,      // FixButtIndx
  1296. 0,     // CantFixTstFlag
  1297. FALSE,     // CantFixTstIsRev
  1298. FALSE,     // OkIsContinue
  1299. TRUE},     // IsNoOk
  1300. {ISTR_READERR2,0,
  1301. {0,0,0,0},
  1302. {0,0,0,0},
  1303. {ERETIGN,0,0,0},
  1304. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1305. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1306. NULL,
  1307. ISNOHELPB,     // IsHelpButton
  1308. ISNOHELPB,     // IsAltHelpButton
  1309. 0xFFFFFFFFL,     // HelpButtonID
  1310. 0xFFFFFFFFL,     // AltHelpButtonID
  1311. FALSE,     // IsMoreInfoButton
  1312. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1313. FALSE,     // IsMultiError
  1314. FALSE,     // DelButFilDir
  1315. 0,     // DelButIDDir
  1316. 0xFFFFFFFFL,     // DelButDirHID
  1317. FALSE,     // FixButFilDir
  1318. 0,     // FixButIDDir
  1319. 0xFFFFFFFFL,     // FixButDirHID
  1320. FALSE,     // WarnCantDel
  1321. 0xFFFF,      // DelButtIndx
  1322. 0,     // CantDelTstFlag
  1323. FALSE,     // WarnCantFix
  1324. 0xFFFF,      // FixButtIndx
  1325. 0,     // CantFixTstFlag
  1326. FALSE,     // CantFixTstIsRev
  1327. FALSE,     // OkIsContinue
  1328. FALSE},      // IsNoOk
  1329. {ISTR_READERR3,3,
  1330. {BUTT1(ISTR_READERR3),BUTT2(ISTR_READERR3),BUTT3(ISTR_READERR3),0},
  1331. {BUTT1(ISTR_READERR3),BUTT2(ISTR_READERR3),BUTT3(ISTR_READERR3),0},
  1332. {RESTARTWITHSA,ERETRETRY,ERETIGN,0},
  1333. {0xFFFFFFFFL,
  1334.  IDH_WINDISK_READWRITEERROR_UNCOMP_THOROUGH,
  1335.  IDH_WINDISK_READERROR_RETRY,
  1336.  IDH_WINDISK_READWRITEERROR_UNCOMP_SYSTEM_IGNORE,0xFFFFFFFFL},
  1337. {0xFFFFFFFFL,
  1338.  IDH_WINDISK_READWRITEERROR_UNCOMP_THOROUGH,
  1339.  IDH_WINDISK_READERROR_RETRY,
  1340.  IDH_WINDISK_READWRITEERROR_UNCOMP_SYSTEM_IGNORE,0xFFFFFFFFL},
  1341. NULL,
  1342. ISNOHELPB,     // IsHelpButton
  1343. ISNOHELPB,     // IsAltHelpButton
  1344. 0xFFFFFFFFL,     // HelpButtonID
  1345. 0xFFFFFFFFL,     // AltHelpButtonID
  1346. FALSE,     // IsMoreInfoButton
  1347. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1348. FALSE,     // IsMultiError
  1349. FALSE,     // DelButFilDir
  1350. 0,     // DelButIDDir
  1351. 0xFFFFFFFFL,     // DelButDirHID
  1352. FALSE,     // FixButFilDir
  1353. 0,     // FixButIDDir
  1354. 0xFFFFFFFFL,     // FixButDirHID
  1355. FALSE,     // WarnCantDel
  1356. 0xFFFF,      // DelButtIndx
  1357. 0,     // CantDelTstFlag
  1358. FALSE,     // WarnCantFix
  1359. 0xFFFF,      // FixButtIndx
  1360. 0,     // CantFixTstFlag
  1361. FALSE,     // CantFixTstIsRev
  1362. FALSE,     // OkIsContinue
  1363. FALSE},      // IsNoOk
  1364. {ISTR_READERR4,3,
  1365. {BUTT1(ISTR_READERR3),BUTT2(ISTR_READERR3),BUTT3(ISTR_READERR3),0},
  1366. {BUTT1(ISTR_READERR3),BUTT2(ISTR_READERR3),BUTT3(ISTR_READERR3),0},
  1367. {RESTARTWITHSA,ERETRETRY,ERETIGN,0},
  1368. {0xFFFFFFFFL,
  1369.  IDH_WINDISK_READWRITEERROR_UNCOMP_THOROUGH,
  1370.  IDH_WINDISK_READERROR_RETRY,
  1371.  IDH_WINDISK_READWRITEERROR_DATA_IGNORE,0xFFFFFFFFL},
  1372. {0xFFFFFFFFL,
  1373.  IDH_WINDISK_READWRITEERROR_UNCOMP_THOROUGH,
  1374.  IDH_WINDISK_READERROR_RETRY,
  1375.  IDH_WINDISK_READWRITEERROR_DATA_IGNORE,0xFFFFFFFFL},
  1376. NULL,
  1377. ISNOHELPB,     // IsHelpButton
  1378. ISNOHELPB,     // IsAltHelpButton
  1379. 0xFFFFFFFFL,     // HelpButtonID
  1380. 0xFFFFFFFFL,     // AltHelpButtonID
  1381. FALSE,     // IsMoreInfoButton
  1382. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1383. FALSE,     // IsMultiError
  1384. FALSE,     // DelButFilDir
  1385. 0,     // DelButIDDir
  1386. 0xFFFFFFFFL,     // DelButDirHID
  1387. FALSE,     // FixButFilDir
  1388. 0,     // FixButIDDir
  1389. 0xFFFFFFFFL,     // FixButDirHID
  1390. FALSE,     // WarnCantDel
  1391. 0xFFFF,      // DelButtIndx
  1392. 0,     // CantDelTstFlag
  1393. FALSE,     // WarnCantFix
  1394. 0xFFFF,      // FixButtIndx
  1395. 0,     // CantFixTstFlag
  1396. FALSE,     // CantFixTstIsRev
  1397. FALSE,     // OkIsContinue
  1398. FALSE},      // IsNoOk
  1399. {ISTR_READERR5,3,
  1400. {BUTT1(ISTR_READERR5),BUTT2(ISTR_READERR3),ISTR_SE_IGNORE,0},
  1401. {BUTT1(ISTR_READERR5),BUTT2(ISTR_READERR3),ISTR_SE_IGNORE,0},
  1402. {RESTARTWITHCH,ERETRETRY,ERETIGN,0},
  1403. {0xFFFFFFFFL,
  1404.  IDH_WINDISK_READWRITEERROR_COMP_THOROUGH,
  1405.  IDH_WINDISK_READERROR_RETRY,
  1406.  IDH_WINDISK_READWRITEERROR_COMP_SYSTEM_IGNORE,0xFFFFFFFFL},
  1407. {0xFFFFFFFFL,
  1408.  IDH_WINDISK_READWRITEERROR_COMP_THOROUGH,
  1409.  IDH_WINDISK_READERROR_RETRY,
  1410.  IDH_WINDISK_READWRITEERROR_COMP_SYSTEM_IGNORE,0xFFFFFFFFL},
  1411. NULL,
  1412. ISNOHELPB,     // IsHelpButton
  1413. ISNOHELPB,     // IsAltHelpButton
  1414. 0xFFFFFFFFL,     // HelpButtonID
  1415. 0xFFFFFFFFL,     // AltHelpButtonID
  1416. FALSE,     // IsMoreInfoButton
  1417. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1418. FALSE,     // IsMultiError
  1419. FALSE,     // DelButFilDir
  1420. 0,     // DelButIDDir
  1421. 0xFFFFFFFFL,     // DelButDirHID
  1422. FALSE,     // FixButFilDir
  1423. 0,     // FixButIDDir
  1424. 0xFFFFFFFFL,     // FixButDirHID
  1425. FALSE,     // WarnCantDel
  1426. 0xFFFF,      // DelButtIndx
  1427. 0,     // CantDelTstFlag
  1428. FALSE,     // WarnCantFix
  1429. 0xFFFF,      // FixButtIndx
  1430. 0,     // CantFixTstFlag
  1431. FALSE,     // CantFixTstIsRev
  1432. FALSE,     // OkIsContinue
  1433. FALSE},      // IsNoOk
  1434. {ISTR_READERR6,3,
  1435. {BUTT1(ISTR_READERR5),BUTT2(ISTR_READERR3),ISTR_SE_IGNORE,0},
  1436. {BUTT1(ISTR_READERR5),BUTT2(ISTR_READERR3),ISTR_SE_IGNORE,0},
  1437. {RESTARTWITHCH,ERETRETRY,ERETIGN,0},
  1438. {0xFFFFFFFFL,
  1439.  IDH_WINDISK_READWRITEERROR_COMP_THOROUGH,
  1440.  IDH_WINDISK_READERROR_RETRY,
  1441.  IDH_WINDISK_READWRITEERROR_DATA_IGNORE,0xFFFFFFFFL},
  1442. {0xFFFFFFFFL,
  1443.  IDH_WINDISK_READWRITEERROR_COMP_THOROUGH,
  1444.  IDH_WINDISK_READERROR_RETRY,
  1445.  IDH_WINDISK_READWRITEERROR_DATA_IGNORE,0xFFFFFFFFL},
  1446. NULL,
  1447. ISNOHELPB,     // IsHelpButton
  1448. ISNOHELPB,     // IsAltHelpButton
  1449. 0xFFFFFFFFL,     // HelpButtonID
  1450. 0xFFFFFFFFL,     // AltHelpButtonID
  1451. FALSE,     // IsMoreInfoButton
  1452. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1453. FALSE,     // IsMultiError
  1454. FALSE,     // DelButFilDir
  1455. 0,     // DelButIDDir
  1456. 0xFFFFFFFFL,     // DelButDirHID
  1457. FALSE,     // FixButFilDir
  1458. 0,     // FixButIDDir
  1459. 0xFFFFFFFFL,     // FixButDirHID
  1460. FALSE,     // WarnCantDel
  1461. 0xFFFF,      // DelButtIndx
  1462. 0,     // CantDelTstFlag
  1463. FALSE,     // WarnCantFix
  1464. 0xFFFF,      // FixButtIndx
  1465. 0,     // CantFixTstFlag
  1466. FALSE,     // CantFixTstIsRev
  1467. FALSE,     // OkIsContinue
  1468. FALSE},      // IsNoOk
  1469. {ISTR_WRITEERR1,0,
  1470. {0,0,0,0},
  1471. {0,0,0,0},
  1472. {ERETCAN,0,0,0},
  1473. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1474. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1475. NULL,
  1476. ISNOHELPB,     // IsHelpButton
  1477. ISNOHELPB,     // IsAltHelpButton
  1478. 0xFFFFFFFFL,     // HelpButtonID
  1479. 0xFFFFFFFFL,     // AltHelpButtonID
  1480. FALSE,     // IsMoreInfoButton
  1481. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1482. FALSE,     // IsMultiError
  1483. FALSE,     // DelButFilDir
  1484. 0,     // DelButIDDir
  1485. 0xFFFFFFFFL,     // DelButDirHID
  1486. FALSE,     // FixButFilDir
  1487. 0,     // FixButIDDir
  1488. 0xFFFFFFFFL,     // FixButDirHID
  1489. FALSE,     // WarnCantDel
  1490. 0xFFFF,      // DelButtIndx
  1491. 0,     // CantDelTstFlag
  1492. FALSE,     // WarnCantFix
  1493. 0xFFFF,      // FixButtIndx
  1494. 0,     // CantFixTstFlag
  1495. FALSE,     // CantFixTstIsRev
  1496. FALSE,     // OkIsContinue
  1497. TRUE},     // IsNoOk
  1498. {ISTR_WRITEERR2,0,
  1499. {0,0,0,0},
  1500. {0,0,0,0},
  1501. {ERETIGN,0,0,0},
  1502. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1503. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1504. NULL,
  1505. ISNOHELPB,     // IsHelpButton
  1506. ISNOHELPB,     // IsAltHelpButton
  1507. 0xFFFFFFFFL,     // HelpButtonID
  1508. 0xFFFFFFFFL,     // AltHelpButtonID
  1509. FALSE,     // IsMoreInfoButton
  1510. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1511. FALSE,     // IsMultiError
  1512. FALSE,     // DelButFilDir
  1513. 0,     // DelButIDDir
  1514. 0xFFFFFFFFL,     // DelButDirHID
  1515. FALSE,     // FixButFilDir
  1516. 0,     // FixButIDDir
  1517. 0xFFFFFFFFL,     // FixButDirHID
  1518. FALSE,     // WarnCantDel
  1519. 0xFFFF,      // DelButtIndx
  1520. 0,     // CantDelTstFlag
  1521. FALSE,     // WarnCantFix
  1522. 0xFFFF,      // FixButtIndx
  1523. 0,     // CantFixTstFlag
  1524. FALSE,     // CantFixTstIsRev
  1525. FALSE,     // OkIsContinue
  1526. FALSE},      // IsNoOk
  1527. {ISTR_WRITEERR3,3,
  1528. {BUTT1(ISTR_READERR3),BUTT2(ISTR_WRITEERR3),BUTT3(ISTR_READERR3),0},
  1529. {BUTT1(ISTR_READERR3),BUTT2(ISTR_WRITEERR3),BUTT3(ISTR_READERR3),0},
  1530. {RESTARTWITHSA,ERETRETRY,ERETIGN,0},
  1531. {0xFFFFFFFFL,
  1532.  IDH_WINDISK_READWRITEERROR_UNCOMP_THOROUGH,
  1533.  IDH_WINDISK_WRITEERROR_RETRY,
  1534.  IDH_WINDISK_READWRITEERROR_UNCOMP_SYSTEM_IGNORE,0xFFFFFFFFL},
  1535. {0xFFFFFFFFL,
  1536.  IDH_WINDISK_READWRITEERROR_UNCOMP_THOROUGH,
  1537.  IDH_WINDISK_WRITEERROR_RETRY,
  1538.  IDH_WINDISK_READWRITEERROR_UNCOMP_SYSTEM_IGNORE,0xFFFFFFFFL},
  1539. NULL,
  1540. ISNOHELPB,     // IsHelpButton
  1541. ISNOHELPB,     // IsAltHelpButton
  1542. 0xFFFFFFFFL,     // HelpButtonID
  1543. 0xFFFFFFFFL,     // AltHelpButtonID
  1544. FALSE,     // IsMoreInfoButton
  1545. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1546. FALSE,     // IsMultiError
  1547. FALSE,     // DelButFilDir
  1548. 0,     // DelButIDDir
  1549. 0xFFFFFFFFL,     // DelButDirHID
  1550. FALSE,     // FixButFilDir
  1551. 0,     // FixButIDDir
  1552. 0xFFFFFFFFL,     // FixButDirHID
  1553. FALSE,     // WarnCantDel
  1554. 0xFFFF,      // DelButtIndx
  1555. 0,     // CantDelTstFlag
  1556. FALSE,     // WarnCantFix
  1557. 0xFFFF,      // FixButtIndx
  1558. 0,     // CantFixTstFlag
  1559. FALSE,     // CantFixTstIsRev
  1560. FALSE,     // OkIsContinue
  1561. FALSE},      // IsNoOk
  1562. {ISTR_WRITEERR4,3,
  1563. {BUTT1(ISTR_READERR3),BUTT2(ISTR_WRITEERR3),BUTT3(ISTR_READERR3),0},
  1564. {BUTT1(ISTR_READERR3),BUTT2(ISTR_WRITEERR3),BUTT3(ISTR_READERR3),0},
  1565. {RESTARTWITHSA,ERETRETRY,ERETIGN,0},
  1566. {0xFFFFFFFFL,
  1567.  IDH_WINDISK_READWRITEERROR_UNCOMP_THOROUGH,
  1568.  IDH_WINDISK_WRITEERROR_RETRY,
  1569.  IDH_WINDISK_READWRITEERROR_DATA_IGNORE,0xFFFFFFFFL},
  1570. {0xFFFFFFFFL,
  1571.  IDH_WINDISK_READWRITEERROR_UNCOMP_THOROUGH,
  1572.  IDH_WINDISK_WRITEERROR_RETRY,
  1573.  IDH_WINDISK_READWRITEERROR_DATA_IGNORE,0xFFFFFFFFL},
  1574. NULL,
  1575. ISNOHELPB,     // IsHelpButton
  1576. ISNOHELPB,     // IsAltHelpButton
  1577. 0xFFFFFFFFL,     // HelpButtonID
  1578. 0xFFFFFFFFL,     // AltHelpButtonID
  1579. FALSE,     // IsMoreInfoButton
  1580. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1581. FALSE,     // IsMultiError
  1582. FALSE,     // DelButFilDir
  1583. 0,     // DelButIDDir
  1584. 0xFFFFFFFFL,     // DelButDirHID
  1585. FALSE,     // FixButFilDir
  1586. 0,     // FixButIDDir
  1587. 0xFFFFFFFFL,     // FixButDirHID
  1588. FALSE,     // WarnCantDel
  1589. 0xFFFF,      // DelButtIndx
  1590. 0,     // CantDelTstFlag
  1591. FALSE,     // WarnCantFix
  1592. 0xFFFF,      // FixButtIndx
  1593. 0,     // CantFixTstFlag
  1594. FALSE,     // CantFixTstIsRev
  1595. FALSE,     // OkIsContinue
  1596. FALSE},      // IsNoOk
  1597. {ISTR_WRITEERR5,3,
  1598. {BUTT1(ISTR_READERR5),BUTT2(ISTR_WRITEERR3),ISTR_SE_IGNORE,0},
  1599. {BUTT1(ISTR_READERR5),BUTT2(ISTR_WRITEERR3),ISTR_SE_IGNORE,0},
  1600. {RESTARTWITHCH,ERETRETRY,ERETIGN,0},
  1601. {0xFFFFFFFFL,
  1602.  IDH_WINDISK_READWRITEERROR_COMP_THOROUGH,
  1603.  IDH_WINDISK_WRITEERROR_RETRY,
  1604.  IDH_WINDISK_READWRITEERROR_COMP_SYSTEM_IGNORE,0xFFFFFFFFL},
  1605. {0xFFFFFFFFL,
  1606.  IDH_WINDISK_READWRITEERROR_COMP_THOROUGH,
  1607.  IDH_WINDISK_WRITEERROR_RETRY,
  1608.  IDH_WINDISK_READWRITEERROR_COMP_SYSTEM_IGNORE,0xFFFFFFFFL},
  1609. NULL,
  1610. ISNOHELPB,     // IsHelpButton
  1611. ISNOHELPB,     // IsAltHelpButton
  1612. 0xFFFFFFFFL,     // HelpButtonID
  1613. 0xFFFFFFFFL,     // AltHelpButtonID
  1614. FALSE,     // IsMoreInfoButton
  1615. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1616. FALSE,     // IsMultiError
  1617. FALSE,     // DelButFilDir
  1618. 0,     // DelButIDDir
  1619. 0xFFFFFFFFL,     // DelButDirHID
  1620. FALSE,     // FixButFilDir
  1621. 0,     // FixButIDDir
  1622. 0xFFFFFFFFL,     // FixButDirHID
  1623. FALSE,     // WarnCantDel
  1624. 0xFFFF,      // DelButtIndx
  1625. 0,     // CantDelTstFlag
  1626. FALSE,     // WarnCantFix
  1627. 0xFFFF,      // FixButtIndx
  1628. 0,     // CantFixTstFlag
  1629. FALSE,     // CantFixTstIsRev
  1630. FALSE,     // OkIsContinue
  1631. FALSE},      // IsNoOk
  1632. {ISTR_WRITEERR6,3,
  1633. {BUTT1(ISTR_READERR5),BUTT2(ISTR_WRITEERR3),ISTR_SE_IGNORE,0},
  1634. {BUTT1(ISTR_READERR5),BUTT2(ISTR_WRITEERR3),ISTR_SE_IGNORE,0},
  1635. {RESTARTWITHCH,ERETRETRY,ERETIGN,0},
  1636. {0xFFFFFFFFL,
  1637.  IDH_WINDISK_READWRITEERROR_COMP_THOROUGH,
  1638.  IDH_WINDISK_WRITEERROR_RETRY,
  1639.  IDH_WINDISK_READWRITEERROR_DATA_IGNORE,0xFFFFFFFFL},
  1640. {0xFFFFFFFFL,
  1641.  IDH_WINDISK_READWRITEERROR_COMP_THOROUGH,
  1642.  IDH_WINDISK_WRITEERROR_RETRY,
  1643.  IDH_WINDISK_READWRITEERROR_DATA_IGNORE,0xFFFFFFFFL},
  1644. NULL,
  1645. ISNOHELPB,     // IsHelpButton
  1646. ISNOHELPB,     // IsAltHelpButton
  1647. 0xFFFFFFFFL,     // HelpButtonID
  1648. 0xFFFFFFFFL,     // AltHelpButtonID
  1649. FALSE,     // IsMoreInfoButton
  1650. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1651. FALSE,     // IsMultiError
  1652. FALSE,     // DelButFilDir
  1653. 0,     // DelButIDDir
  1654. 0xFFFFFFFFL,     // DelButDirHID
  1655. FALSE,     // FixButFilDir
  1656. 0,     // FixButIDDir
  1657. 0xFFFFFFFFL,     // FixButDirHID
  1658. FALSE,     // WarnCantDel
  1659. 0xFFFF,      // DelButtIndx
  1660. 0,     // CantDelTstFlag
  1661. FALSE,     // WarnCantFix
  1662. 0xFFFF,      // FixButtIndx
  1663. 0,     // CantFixTstFlag
  1664. FALSE,     // CantFixTstIsRev
  1665. FALSE,     // OkIsContinue
  1666. FALSE},      // IsNoOk
  1667. {ISTR_ECORRDISK,0,
  1668. {0,0,0,0},
  1669. {0,0,0,0},
  1670. {0,0,0,0},
  1671. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1672. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1673. NULL,
  1674. ISNOHELPB,     // IsHelpButton
  1675. ISNOHELPB,     // IsAltHelpButton
  1676. 0xFFFFFFFFL,     // HelpButtonID
  1677. 0xFFFFFFFFL,     // AltHelpButtonID
  1678. FALSE,     // IsMoreInfoButton
  1679. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1680. FALSE,     // IsMultiError
  1681. FALSE,     // DelButFilDir
  1682. 0,     // DelButIDDir
  1683. 0xFFFFFFFFL,     // DelButDirHID
  1684. FALSE,     // FixButFilDir
  1685. 0,     // FixButIDDir
  1686. 0xFFFFFFFFL,     // FixButDirHID
  1687. FALSE,     // WarnCantDel
  1688. 0xFFFF,      // DelButtIndx
  1689. 0,     // CantDelTstFlag
  1690. FALSE,     // WarnCantFix
  1691. 0xFFFF,      // FixButtIndx
  1692. 0,     // CantFixTstFlag
  1693. FALSE,     // CantFixTstIsRev
  1694. FALSE,     // OkIsContinue
  1695. FALSE},      // IsNoOk
  1696. {ISTR_ECORRMEM,0,
  1697. {0,0,0,0},
  1698. {0,0,0,0},
  1699. {0,0,0,0},
  1700. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1701. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1702. NULL,
  1703. ISNOHELPB,     // IsHelpButton
  1704. ISNOHELPB,     // IsAltHelpButton
  1705. 0xFFFFFFFFL,     // HelpButtonID
  1706. 0xFFFFFFFFL,     // AltHelpButtonID
  1707. FALSE,     // IsMoreInfoButton
  1708. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1709. FALSE,     // IsMultiError
  1710. FALSE,     // DelButFilDir
  1711. 0,     // DelButIDDir
  1712. 0xFFFFFFFFL,     // DelButDirHID
  1713. FALSE,     // FixButFilDir
  1714. 0,     // FixButIDDir
  1715. 0xFFFFFFFFL,     // FixButDirHID
  1716. FALSE,     // WarnCantDel
  1717. 0xFFFF,      // DelButtIndx
  1718. 0,     // CantDelTstFlag
  1719. FALSE,     // WarnCantFix
  1720. 0xFFFF,      // FixButtIndx
  1721. 0,     // CantFixTstFlag
  1722. FALSE,     // CantFixTstIsRev
  1723. FALSE,     // OkIsContinue
  1724. FALSE},      // IsNoOk
  1725. {ISTR_ECORRFILCOL,0,
  1726. {0,0,0,0},
  1727. {0,0,0,0},
  1728. {0,0,0,0},
  1729. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1730. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1731. NULL,
  1732. ISNOHELPB,     // IsHelpButton
  1733. ISNOHELPB,     // IsAltHelpButton
  1734. 0xFFFFFFFFL,     // HelpButtonID
  1735. 0xFFFFFFFFL,     // AltHelpButtonID
  1736. FALSE,     // IsMoreInfoButton
  1737. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1738. FALSE,     // IsMultiError
  1739. FALSE,     // DelButFilDir
  1740. 0,     // DelButIDDir
  1741. 0xFFFFFFFFL,     // DelButDirHID
  1742. FALSE,     // FixButFilDir
  1743. 0,     // FixButIDDir
  1744. 0xFFFFFFFFL,     // FixButDirHID
  1745. FALSE,     // WarnCantDel
  1746. 0xFFFF,      // DelButtIndx
  1747. 0,     // CantDelTstFlag
  1748. FALSE,     // WarnCantFix
  1749. 0xFFFF,      // FixButtIndx
  1750. 0,     // CantFixTstFlag
  1751. FALSE,     // CantFixTstIsRev
  1752. FALSE,     // OkIsContinue
  1753. FALSE},      // IsNoOk
  1754. {ISTR_ECORRUNEXP,0,
  1755. {0,0,0,0},
  1756. {0,0,0,0},
  1757. {0,0,0,0},
  1758. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1759. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1760. NULL,
  1761. ISNOHELPB,     // IsHelpButton
  1762. ISNOHELPB,     // IsAltHelpButton
  1763. 0xFFFFFFFFL,     // HelpButtonID
  1764. 0xFFFFFFFFL,     // AltHelpButtonID
  1765. FALSE,     // IsMoreInfoButton
  1766. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1767. FALSE,     // IsMultiError
  1768. FALSE,     // DelButFilDir
  1769. 0,     // DelButIDDir
  1770. 0xFFFFFFFFL,     // DelButDirHID
  1771. FALSE,     // FixButFilDir
  1772. 0,     // FixButIDDir
  1773. 0xFFFFFFFFL,     // FixButDirHID
  1774. FALSE,     // WarnCantDel
  1775. 0xFFFF,      // DelButtIndx
  1776. 0,     // CantDelTstFlag
  1777. FALSE,     // WarnCantFix
  1778. 0xFFFF,      // FixButtIndx
  1779. 0,     // CantFixTstFlag
  1780. FALSE,     // CantFixTstIsRev
  1781. FALSE,     // OkIsContinue
  1782. FALSE},      // IsNoOk
  1783. {ISTR_ECORRCLUSA,0,
  1784. {0,0,0,0},
  1785. {0,0,0,0},
  1786. {0,0,0,0},
  1787. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1788. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1789. NULL,
  1790. ISNOHELPB,     // IsHelpButton
  1791. ISNOHELPB,     // IsAltHelpButton
  1792. 0xFFFFFFFFL,     // HelpButtonID
  1793. 0xFFFFFFFFL,     // AltHelpButtonID
  1794. FALSE,     // IsMoreInfoButton
  1795. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1796. FALSE,     // IsMultiError
  1797. FALSE,     // DelButFilDir
  1798. 0,     // DelButIDDir
  1799. 0xFFFFFFFFL,     // DelButDirHID
  1800. FALSE,     // FixButFilDir
  1801. 0,     // FixButIDDir
  1802. 0xFFFFFFFFL,     // FixButDirHID
  1803. FALSE,     // WarnCantDel
  1804. 0xFFFF,      // DelButtIndx
  1805. 0,     // CantDelTstFlag
  1806. FALSE,     // WarnCantFix
  1807. 0xFFFF,      // FixButtIndx
  1808. 0,     // CantFixTstFlag
  1809. FALSE,     // CantFixTstIsRev
  1810. FALSE,     // OkIsContinue
  1811. FALSE},      // IsNoOk
  1812. {ISTR_ECORRFILCRT,0,
  1813. {0,0,0,0},
  1814. {0,0,0,0},
  1815. {0,0,0,0},
  1816. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1817. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1818. NULL,
  1819. ISNOHELPB,     // IsHelpButton
  1820. ISNOHELPB,     // IsAltHelpButton
  1821. 0xFFFFFFFFL,     // HelpButtonID
  1822. 0xFFFFFFFFL,     // AltHelpButtonID
  1823. FALSE,     // IsMoreInfoButton
  1824. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1825. FALSE,     // IsMultiError
  1826. FALSE,     // DelButFilDir
  1827. 0,     // DelButIDDir
  1828. 0xFFFFFFFFL,     // DelButDirHID
  1829. FALSE,     // FixButFilDir
  1830. 0,     // FixButIDDir
  1831. 0xFFFFFFFFL,     // FixButDirHID
  1832. FALSE,     // WarnCantDel
  1833. 0xFFFF,      // DelButtIndx
  1834. 0,     // CantDelTstFlag
  1835. FALSE,     // WarnCantFix
  1836. 0xFFFF,      // FixButtIndx
  1837. 0,     // CantFixTstFlag
  1838. FALSE,     // CantFixTstIsRev
  1839. FALSE,     // OkIsContinue
  1840. FALSE},      // IsNoOk
  1841. {ISTR_ECORROTHWRT,0,
  1842. {0,0,0,0},
  1843. {0,0,0,0},
  1844. {0,0,0,0},
  1845. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1846. {0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL},
  1847. NULL,
  1848. ISNOHELPB,     // IsHelpButton
  1849. ISNOHELPB,     // IsAltHelpButton
  1850. 0xFFFFFFFFL,     // HelpButtonID
  1851. 0xFFFFFFFFL,     // AltHelpButtonID
  1852. FALSE,     // IsMoreInfoButton
  1853. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1854. FALSE,     // IsMultiError
  1855. FALSE,     // DelButFilDir
  1856. 0,     // DelButIDDir
  1857. 0xFFFFFFFFL,     // DelButDirHID
  1858. FALSE,     // FixButFilDir
  1859. 0,     // FixButIDDir
  1860. 0xFFFFFFFFL,     // FixButDirHID
  1861. FALSE,     // WarnCantDel
  1862. 0xFFFF,      // DelButtIndx
  1863. 0,     // CantDelTstFlag
  1864. FALSE,     // WarnCantFix
  1865. 0xFFFF,      // FixButtIndx
  1866. 0,     // CantFixTstFlag
  1867. FALSE,     // CantFixTstIsRev
  1868. FALSE,     // OkIsContinue
  1869. FALSE},      // IsNoOk
  1870. #ifdef OPK2
  1871. {ISTR_FATERRBOOT,2,
  1872. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  1873. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  1874. {ERETAFIX,ERETIGN,0,0},
  1875. {0xFFFFFFFFL,
  1876.  IDH_WINDISK_FATERRBOOT_REPAIR,
  1877.  IDH_WINDISK_FATERRBOOT_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  1878. {0xFFFFFFFFL,
  1879.  IDH_WINDISK_FATERRBOOT_REPAIR,
  1880.  IDH_WINDISK_FATERRBOOT_IGNORE,0xFFFFFFFFL,0xFFFFFFFFL},
  1881. NULL,
  1882. ISNOHELPB,     // IsHelpButton
  1883. ISNOHELPB,     // IsAltHelpButton
  1884. 0xFFFFFFFFL,     // HelpButtonID
  1885. 0xFFFFFFFFL,     // AltHelpButtonID
  1886. FALSE,     // IsMoreInfoButton
  1887. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1888. FALSE,     // IsMultiError
  1889. FALSE,     // DelButFilDir
  1890. 0,     // DelButIDDir
  1891. 0xFFFFFFFFL,     // DelButDirHID
  1892. FALSE,     // FixButFilDir
  1893. 0,     // FixButIDDir
  1894. 0xFFFFFFFFL,     // FixButDirHID
  1895. FALSE,     // WarnCantDel
  1896. 0xFFFF,      // DelButtIndx
  1897. 0,     // CantDelTstFlag
  1898. FALSE,     // WarnCantFix
  1899. 0xFFFF,      // FixButtIndx
  1900. 0,     // CantFixTstFlag
  1901. FALSE,     // CantFixTstIsRev
  1902. FALSE,     // OkIsContinue
  1903. FALSE},      // IsNoOk
  1904. {ISTR_FATERRSHDSURF,2,
  1905. {BUTT1(ISTR_FATERRSHDSURF),BUTT2(ISTR_FATERRSHDSURF),0,0},
  1906. {BUTT1(ISTR_FATERRSHDSURF),BUTT2(ISTR_FATERRSHDSURF),0,0},
  1907. {ERETENABSURF,ERETIGN2,0,0},
  1908. {0xFFFFFFFFL,
  1909.  IDH_WINDISK_SHDSURF_DOSURF,
  1910.  IDH_WINDISK_SHDSURF_IGNORE,
  1911.  0xFFFFFFFFL,0xFFFFFFFFL},
  1912. {0xFFFFFFFFL,
  1913.  IDH_WINDISK_SHDSURF_DOSURF,
  1914.  IDH_WINDISK_SHDSURF_IGNORE,
  1915.  0xFFFFFFFFL,0xFFFFFFFFL},
  1916. NULL,
  1917. ISNOHELPB,     // IsHelpButton
  1918. ISNOHELPB,     // IsAltHelpButton
  1919. 0xFFFFFFFFL,     // HelpButtonID
  1920. 0xFFFFFFFFL,     // AltHelpButtonID
  1921. FALSE,     // IsMoreInfoButton
  1922. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1923. FALSE,     // IsMultiError
  1924. FALSE,     // DelButFilDir
  1925. 0,     // DelButIDDir
  1926. 0xFFFFFFFFL,     // DelButDirHID
  1927. FALSE,     // FixButFilDir
  1928. 0,     // FixButIDDir
  1929. 0xFFFFFFFFL,     // FixButDirHID
  1930. FALSE,     // WarnCantDel
  1931. 0xFFFF,      // DelButtIndx
  1932. 0,     // CantDelTstFlag
  1933. FALSE,     // WarnCantFix
  1934. 0xFFFF,      // FixButtIndx
  1935. 0,     // CantFixTstFlag
  1936. FALSE,     // CantFixTstIsRev
  1937. FALSE,     // OkIsContinue
  1938. FALSE},      // IsNoOk
  1939. {ISTR_FATERRROOTDIR,2,
  1940. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  1941. {ISTR_SE_REPAIR,ISTR_SE_IGNORE,0,0},
  1942. {ERETAFIX,ERETIGN,0},
  1943. {0xFFFFFFFFL,
  1944.  IDH_WINDISK_ISTR_FATERRROOTDIR_REPAIR,
  1945.  IDH_WINDISK_ISTR_FATERRROOTDIR_IGNORE,
  1946.  0xFFFFFFFFL,0xFFFFFFFFL},
  1947. {0xFFFFFFFFL,
  1948.  IDH_WINDISK_ISTR_FATERRROOTDIR_REPAIR,
  1949.  IDH_WINDISK_ISTR_FATERRROOTDIR_IGNORE,
  1950.  0xFFFFFFFFL,0xFFFFFFFFL},
  1951. NULL,
  1952. ISNOHELPB,     // IsHelpButton
  1953. ISNOHELPB,     // IsAltHelpButton
  1954. 0xFFFFFFFFL,     // HelpButtonID
  1955. 0xFFFFFFFFL,     // AltHelpButtonID
  1956. FALSE,     // IsMoreInfoButton
  1957. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1958. TRUE,     // IsMultiError
  1959. FALSE,     // DelButFilDir
  1960. 0,     // DelButIDDir
  1961. 0xFFFFFFFFL,     // DelButDirHID
  1962. FALSE,     // FixButFilDir
  1963. 0,     // FixButIDDir
  1964. 0xFFFFFFFFL,     // FixButDirHID
  1965. FALSE,     // WarnCantDel
  1966. 0xFFFF,      // DelButtIndx
  1967. 0,     // CantDelTstFlag
  1968. FALSE,     // WarnCantFix
  1969. 0xFFFF,      // FixButtIndx
  1970. 0,     // CantFixTstFlag
  1971. FALSE,     // CantFixTstIsRev
  1972. FALSE,     // OkIsContinue
  1973. FALSE},      // IsNoOk
  1974. {ISTR_ERRISBAD7,2,
  1975. {ISTR_SE_IGNORE,BUTT1(ISTR_ERRISBAD7),0,0},
  1976. {ISTR_SE_IGNORE,BUTT1(ISTR_ERRISBAD7),0,0},
  1977. {ERETIGN2,ERETRETRY,0,0},
  1978. {0xFFFFFFFFL,
  1979.  IDH_WINDISK_ISBAD_IGNORE,
  1980.  IDH_WINDISK_ISBAD_UNCOMP_RETRY,
  1981.  0xFFFFFFFFL,0xFFFFFFFFL},
  1982. {0xFFFFFFFFL,
  1983.  IDH_WINDISK_ISBAD_IGNORE,
  1984.  IDH_WINDISK_ISBAD_UNCOMP_RETRY,
  1985.  0xFFFFFFFFL,0xFFFFFFFFL},
  1986. NULL,
  1987. ISNOHELPB,     // IsHelpButton
  1988. ISNOHELPB,     // IsAltHelpButton
  1989. 0xFFFFFFFFL,     // HelpButtonID
  1990. 0xFFFFFFFFL,     // AltHelpButtonID
  1991. FALSE,     // IsMoreInfoButton
  1992. 0xFFFFFFFFL,     // MoreInfoButtonHID
  1993. FALSE,     // IsMultiError
  1994. FALSE,     // DelButFilDir
  1995. 0,     // DelButIDDir
  1996. 0xFFFFFFFFL,     // DelButDirHID
  1997. FALSE,     // FixButFilDir
  1998. 0,     // FixButIDDir
  1999. 0xFFFFFFFFL,     // FixButDirHID
  2000. FALSE,     // WarnCantDel
  2001. 0xFFFF,      // DelButtIndx
  2002. 0,     // CantDelTstFlag
  2003. FALSE,     // WarnCantFix
  2004. 0xFFFF,      // FixButtIndx
  2005. 0,     // CantFixTstFlag
  2006. FALSE,     // CantFixTstIsRev
  2007. FALSE,     // OkIsContinue
  2008. FALSE},      // IsNoOk
  2009. #endif
  2010. };
  2011. #pragma optimize("lge",off)
  2012. DWORD NEAR GetTime(VOID)
  2013. {
  2014.     _asm {
  2015. mov ax, 0x2C00
  2016. int 0x21
  2017. mov ax, dx
  2018. mov dx, cx
  2019.     }
  2020.     if (0)
  2021. return(0L); /* remove warning, gets otimized out */
  2022. }
  2023. DWORD NEAR GetDate(VOID)
  2024. {
  2025.     _asm {
  2026. mov ax, 0x2A00
  2027. int 0x21
  2028. mov ax, dx
  2029. mov dx, cx
  2030.     }
  2031.     if (0)
  2032. return(0L); /* remove warning, gets otimized out */
  2033. }
  2034. #pragma optimize("",on)
  2035. //WARNING--szBuf must be either 2048 characters long or longer than
  2036. //the longest possible message.
  2037. VOID SetTextWIRV(HWND hDlg,WORD resID, LPDWORD rgdwArgs, LPSTR szBuf)
  2038. {
  2039.     //REVIEW -- I pulled a languageID of 0 out of my butt.
  2040.     FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  2041.   (LPVOID)g_hInstance,
  2042.   resID,
  2043.   0,
  2044.   (LPSTR)szBuf,
  2045.   (DWORD)szScratchMax,
  2046.   rgdwArgs);
  2047.     SendMessage(hDlg,WM_SETTEXT,0,(LPARAM)szBuf);
  2048.     return;
  2049. }
  2050. #define SetTextDCRV(hDlg,ctrlID,resID,rgdwArgs,szBuf) {
  2051. SetTextWIRV(GetDlgItem(hDlg,ctrlID),resID,rgdwArgs,szBuf);}
  2052. #define SetTextDCR(hDlg,ctrlID,resID,szBuf) {
  2053. SetTextWIRV(GetDlgItem(hDlg,ctrlID),resID,NULL,szBuf);}
  2054. VOID SEStuffTitle(HWND hwnd,LPMYCHKINFOSTRUCT lpMyChkInf,int resID)
  2055. {
  2056.     DWORD     NmPtr;
  2057.     NmPtr = (DWORD)(LPSTR)(&(lpMyChkInf->lpwddi->driveNameStr[0]));
  2058.     FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  2059.   (LPVOID)g_hInstance,
  2060.   resID,
  2061.   0,
  2062.   (LPSTR)lpMyChkInf->szScratch,
  2063.   (DWORD)sizeof(lpMyChkInf->szScratch),
  2064.   (LPDWORD)&(NmPtr));
  2065.     SetWindowText(hwnd,lpMyChkInf->szScratch);
  2066.     return;
  2067. }
  2068. VOID FAR SEInitLog(LPMYCHKINFOSTRUCT lpMyChkInf)
  2069. {
  2070. #ifdef NEC_98
  2071.     char bootdrv = 0; // C: may not exist on PC-98
  2072. #endif
  2073.     lpMyChkInf->Log.hSz=NULL;
  2074.     lpMyChkInf->Log.cchUsed=0L;
  2075.     lpMyChkInf->Log.cchAlloced=0L;
  2076.     lpMyChkInf->Log.fMemWarned=FALSE;
  2077.     if(lpMyChkInf->Log.LogFileName[0] == '')
  2078.     {
  2079. lstrcpy(lpMyChkInf->Log.LogFileName,SCANDISKLOGFILENAME);
  2080. #ifdef NEC_98
  2081. _asm {
  2082.     mov  ax, 3305h ; get startup drive
  2083.     int  21h
  2084.     dec  dl
  2085.     mov  bootdrv, dl ; bootdrv - 0: A, 1: B,...
  2086. }
  2087. lpMyChkInf->Log.LogFileName[0] = 'A' + bootdrv;
  2088. #endif // NEC_98
  2089.     }
  2090.     return;
  2091. }
  2092. VOID NEAR SEAddLogNoMem(LPMYCHKINFOSTRUCT lpMyChkInf)
  2093. {
  2094.     if(lpMyChkInf->Log.fMemWarned)
  2095. return;
  2096.     MyChkdskMessageBox(lpMyChkInf, IDS_SEADDLOGNOMEM,
  2097.        MB_ICONINFORMATION | MB_OK);
  2098.     lpMyChkInf->Log.fMemWarned = TRUE;
  2099.     return;
  2100. }
  2101. VOID FAR SEAddToLogStart(LPMYCHKINFOSTRUCT lpMyChkInf, BOOL FullHeader)
  2102. {
  2103.     PBYTE pMsgBuf;
  2104.     DWORD rgdwArgs[2];
  2105. #define SZBUFA4       60
  2106. #define SZBUFB4       128
  2107. #define SZBUFC4       200
  2108. #define TOTMSZ4       (SZBUFA4+SZBUFB4+SZBUFC4)
  2109. #define dBuf1 (&(pMsgBuf[0]))
  2110. #define dBuf2 (&(pMsgBuf[SZBUFA4]))
  2111. #define dBuf3 (&(pMsgBuf[SZBUFA4+SZBUFB4]))
  2112.     if(lpMyChkInf->MyFixOpt2 & DLGCHK_NOLOG)
  2113.     {
  2114. return;
  2115.     }
  2116.     pMsgBuf = (PBYTE)LocalAlloc(LMEM_FIXED,TOTMSZ4);
  2117.     if(!pMsgBuf)
  2118.     {
  2119. SEAddLogNoMem(lpMyChkInf);
  2120. return;
  2121.     }
  2122.     if(FullHeader)
  2123.     {
  2124. DWORD dwi;
  2125. WORD  i;
  2126. WORD  j;
  2127. BYTE  TSep[2];
  2128. BYTE  DSep[2];
  2129. BYTE  DtFmt[20];
  2130. BYTE  hBuf[8];
  2131. SEAddToLogRCS(lpMyChkInf,IDL_TITLE1,NULL);
  2132. SEAddToLogRCS(lpMyChkInf,IDL_TITLE1A,NULL);
  2133. GetProfileString("Intl","sTime",":",TSep,sizeof(TSep));
  2134. GetProfileString("Intl","sDate","/",DSep,sizeof(DSep));
  2135. GetProfileString("Intl","sShortDate","M/d/yy",DtFmt,sizeof(DtFmt));
  2136. TSep[1] = '';
  2137. DSep[1] = '';
  2138. dwi = GetTime();
  2139. wsprintf(dBuf1,"%02d",HIBYTE(HIWORD(dwi)));
  2140. lstrcat(dBuf1,TSep);
  2141. wsprintf(hBuf,"%02d",LOBYTE(HIWORD(dwi)));
  2142. lstrcat(dBuf1,hBuf);
  2143. dwi = GetDate();
  2144. i = 0;
  2145. j = 0;
  2146. dBuf2[0] = '';
  2147. while(DtFmt[i])
  2148. {
  2149.     if((DtFmt[i] == 'y') || (DtFmt[i] == 'Y'))
  2150.     {
  2151. if(!(j & 0x0001))
  2152. {
  2153.     j |= 0x0001;
  2154.     wsprintf(hBuf,"%d",HIWORD(dwi));
  2155.     lstrcat(dBuf2,hBuf);
  2156. }
  2157.     } else if((DtFmt[i] == 'm') || (DtFmt[i] == 'M')) {
  2158. if(!(j & 0x0002))
  2159. {
  2160.     j |= 0x0002;
  2161.     wsprintf(hBuf,"%d",HIBYTE(LOWORD(dwi)));
  2162.     lstrcat(dBuf2,hBuf);
  2163. }
  2164.     } else if((DtFmt[i] == 'd') || (DtFmt[i] == 'D')) {
  2165. if(!(j & 0x0004))
  2166. {
  2167.     j |= 0x0004;
  2168.     wsprintf(hBuf,"%d",LOBYTE(LOWORD(dwi)));
  2169.     lstrcat(dBuf2,hBuf);
  2170. }
  2171.     } else if(DtFmt[i] == DSep[0]) {
  2172. lstrcat(dBuf2,DSep);
  2173.     }
  2174.     i++;
  2175. }
  2176. rgdwArgs[0] = (DWORD)(LPSTR)dBuf1;
  2177. rgdwArgs[1] = (DWORD)(LPSTR)dBuf2;
  2178. FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  2179.       (LPVOID)g_hInstance,
  2180.       IDL_TITLE2,
  2181.       0,
  2182.       (LPSTR)dBuf3,
  2183.       SZBUFC4,
  2184.       (LPDWORD)&rgdwArgs);
  2185. SEAddToLog(lpMyChkInf, dBuf3, NULL);
  2186. SEAddToLogRCS(lpMyChkInf,IDL_TITLE3,NULL);
  2187. if(lpMyChkInf->MyFixOpt & DLGCHK_NOBAD)
  2188. {
  2189.     SEAddToLogRCS(lpMyChkInf,IDL_OPTST,NULL);
  2190. } else {
  2191.     SEAddToLogRCS(lpMyChkInf,IDL_OPTTH,NULL);
  2192.     if(lpMyChkInf->MyFixOpt & DLGCHK_NODATA)
  2193.     {
  2194. SEAddToLogRCS(lpMyChkInf,IDL_OPTSYSO,NULL);
  2195.     } else if(lpMyChkInf->MyFixOpt & DLGCHK_NOSYS) {
  2196. SEAddToLogRCS(lpMyChkInf,IDL_OPTDTAO,NULL);
  2197.     }
  2198.     if(lpMyChkInf->MyFixOpt & DLGCHK_ALLHIDSYS)
  2199.     {
  2200. SEAddToLogRCS(lpMyChkInf,IDL_OPTHDSYS,NULL);
  2201.     }
  2202.     if(lpMyChkInf->MyFixOpt & DLGCHK_NOWRTTST)
  2203.     {
  2204. SEAddToLogRCS(lpMyChkInf,IDL_OPTNWRT,NULL);
  2205.     }
  2206. }
  2207. if(lpMyChkInf->MyFixOpt & DLGCHK_RO)
  2208. {
  2209.     SEAddToLogRCS(lpMyChkInf,IDL_OPTPRE,NULL);
  2210. }
  2211. if(!(lpMyChkInf->MyFixOpt & DLGCHK_NOCHKDT))
  2212. {
  2213.     SEAddToLogRCS(lpMyChkInf,IDL_OPTCDT,NULL);
  2214. }
  2215. if(lpMyChkInf->MyFixOpt & DLGCHK_NOCHKNM)
  2216. {
  2217.     SEAddToLogRCS(lpMyChkInf,IDL_OPTCFN,NULL);
  2218. }
  2219. if(lpMyChkInf->MyFixOpt2 & DLGCHK_NOCHKHST)
  2220. {
  2221.     SEAddToLogRCS(lpMyChkInf,IDL_OPTCHST,NULL);
  2222. }
  2223. if(!(lpMyChkInf->MyFixOpt & DLGCHK_INTER))
  2224. {
  2225.     SEAddToLogRCS(lpMyChkInf,IDL_OPTAUTOFIX,NULL);
  2226. }
  2227. SEAddToLogRCS(lpMyChkInf,IDL_CRLF,NULL);
  2228.     }
  2229.     if((lpMyChkInf->IsSplitDrv) && (!(lpMyChkInf->DoingCompDrv)))
  2230.     {
  2231. rgdwArgs[0] = (DWORD)(LPSTR)lpMyChkInf->CompdriveNameStr;
  2232. rgdwArgs[1] = (DWORD)(BYTE)(lpMyChkInf->lpwddi->iDrive + 'A');
  2233. FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  2234.       (LPVOID)g_hInstance,
  2235.       IDL_COMPDISKH,
  2236.       0,
  2237.       (LPSTR)dBuf2,
  2238.       SZBUFB4,
  2239.       (LPDWORD)&rgdwArgs);
  2240. rgdwArgs[0] = (DWORD)(LPSTR)dBuf2;
  2241.     } else {
  2242. rgdwArgs[0] = (DWORD)(LPSTR)lpMyChkInf->lpwddi->driveNameStr;
  2243.     }
  2244.     rgdwArgs[1] = 0L;
  2245.     FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  2246.   (LPVOID)g_hInstance,
  2247.   IDL_TITLE4,
  2248.   0,
  2249.   (LPSTR)dBuf3,
  2250.   SZBUFC4,
  2251.   (LPDWORD)&rgdwArgs);
  2252.     SEAddToLog(lpMyChkInf, dBuf3, NULL);
  2253.     LocalFree((HANDLE)pMsgBuf);
  2254.     return;
  2255. }
  2256. VOID NEAR DoLogXLList(LPMYCHKINFOSTRUCT lpMyChkInf, UINT IDLBasID)
  2257. {
  2258.     LPFATXLNKERR lpXLErr;
  2259.     LPDDXLNKERR  lpDDXLErr;
  2260.     WORD  i;
  2261.     WORD  j;
  2262.     WORD  k;
  2263.     PBYTE  pStrBuf = 0;
  2264.     BYTE  IndexFmt[30];
  2265.     BYTE  SpcChar[2] = " ";
  2266.     BYTE  FilChar[2];
  2267.     BYTE  FolChar[2];
  2268.     BYTE  FrgChar[2];
  2269.     BYTE  UnmChar[2];
  2270.     SEAddToLogRCS(lpMyChkInf,IDLBasID,NULL);
  2271.     pStrBuf = (PBYTE)LocalAlloc(LMEM_FIXED,800);
  2272.     if(!pStrBuf)
  2273.     {
  2274. SEAddLogNoMem(lpMyChkInf);
  2275. return;
  2276.     }
  2277.     LoadString(g_hInstance,IDL_XLLIST,IndexFmt,sizeof(IndexFmt));
  2278.     LoadString(g_hInstance,IDL_XLFILE,FilChar,sizeof(FilChar));
  2279.     LoadString(g_hInstance,IDL_XLFOLD,FolChar,sizeof(FolChar));
  2280.     LoadString(g_hInstance,IDL_XLFRAG,FrgChar,sizeof(FrgChar));
  2281.     LoadString(g_hInstance,IDL_XLUNMO,UnmChar,sizeof(UnmChar));
  2282.     lpXLErr = (LPFATXLNKERR)lpMyChkInf->lParam3;
  2283.     lpDDXLErr = (LPDDXLNKERR)lpMyChkInf->lParam3;
  2284.     if(lpMyChkInf->UseAltDlgTxt)
  2285.     {
  2286. k = 0;
  2287. for(i = 0; i < lpDDXLErr->DDXLnkFileCnt; i++)
  2288. {
  2289.     // Filter out internal cross links to self
  2290.     for(j = 0; j < i; j++)
  2291.     {
  2292. if(lpDDXLErr->DDXLnkList[i].FileFirstCluster == lpDDXLErr->DDXLnkList[j].FileFirstCluster)
  2293.     goto SkipIt;
  2294.     }
  2295.     k++;
  2296.     if(lpDDXLErr->DDXLnkList[i].Flags != 0)
  2297.     {
  2298. if(lpDDXLErr->DDXLnkList[i].FileAttributes & 0x10)
  2299. {
  2300.     wsprintf((LPSTR)pStrBuf,(LPSTR)IndexFmt,FolChar[0],
  2301.      UnmChar[0],k,
  2302.      (LPSTR)lpDDXLErr->DDXLnkList[i].FileName);
  2303. } else {
  2304.     wsprintf((LPSTR)pStrBuf,(LPSTR)IndexFmt,FilChar[0],
  2305.      UnmChar[0],k,
  2306.      (LPSTR)lpDDXLErr->DDXLnkList[i].FileName);
  2307. }
  2308.     } else {
  2309. if(lpDDXLErr->DDXLnkList[i].FileAttributes & 0x10)
  2310. {
  2311.     wsprintf((LPSTR)pStrBuf,(LPSTR)IndexFmt,FolChar[0],
  2312.      SpcChar[0],k,
  2313.      (LPSTR)lpDDXLErr->DDXLnkList[i].FileName);
  2314. } else {
  2315.     wsprintf((LPSTR)pStrBuf,(LPSTR)IndexFmt,FilChar[0],
  2316.      SpcChar[0],k,
  2317.      (LPSTR)lpDDXLErr->DDXLnkList[i].FileName);
  2318. }
  2319.     }
  2320.     SEAddToLog(lpMyChkInf, pStrBuf, NULL);
  2321. SkipIt:
  2322.     ;
  2323. }
  2324. // See if any of the xlinked clusters/MDFAT entries are LOST
  2325. for(i = 0; i < lpDDXLErr->DDXLnkClusCnt; i++)
  2326. {
  2327.     for(j = 0; j < lpDDXLErr->DDXLnkFileCnt; j++)
  2328.     {
  2329. if(lpDDXLErr->DDXLnkList[j].LastSecNumNotXLnked ==
  2330.    lpDDXLErr->DDXLnkClusterList[i])
  2331. {
  2332.     break;
  2333. }
  2334.     }
  2335.     if(j >= lpDDXLErr->DDXLnkFileCnt)
  2336.     {
  2337. LoadString(g_hInstance, IDS_XLNOFIL,
  2338.    lpMyChkInf->szScratch,
  2339.    sizeof(lpMyChkInf->szScratch));
  2340. k++;
  2341. wsprintf((LPSTR)pStrBuf,(LPSTR)IndexFmt,FrgChar[0],
  2342.  SpcChar[0],k,
  2343.  (LPSTR)lpMyChkInf->szScratch);
  2344. SEAddToLog(lpMyChkInf, pStrBuf, NULL);
  2345. goto DoneLstChk;
  2346.     }
  2347. }
  2348. DoneLstChk:
  2349. ;
  2350.     } else {
  2351. for(i = 0; i < lpXLErr->XLnkFileCnt; i++)
  2352. {
  2353.     if(lpXLErr->XLnkList[i].Flags != 0)
  2354.     {
  2355. if(lpXLErr->XLnkList[i].FileAttributes & 0x10)
  2356. {
  2357.     wsprintf((LPSTR)pStrBuf,(LPSTR)IndexFmt,FolChar[0],
  2358.      UnmChar[0],i + 1,
  2359.      (LPSTR)lpXLErr->XLnkList[i].FileName);
  2360. } else {
  2361.     wsprintf((LPSTR)pStrBuf,(LPSTR)IndexFmt,FilChar[0],
  2362.      UnmChar[0],i + 1,
  2363.      (LPSTR)lpXLErr->XLnkList[i].FileName);
  2364. }
  2365.     } else {
  2366. if(lpXLErr->XLnkList[i].FileAttributes & 0x10)
  2367. {
  2368.     wsprintf((LPSTR)pStrBuf,(LPSTR)IndexFmt,FolChar[0],
  2369.      SpcChar[0],i + 1,
  2370.      (LPSTR)lpXLErr->XLnkList[i].FileName);
  2371. } else {
  2372.     wsprintf((LPSTR)pStrBuf,(LPSTR)IndexFmt,FilChar[0],
  2373.      SpcChar[0],i + 1,
  2374.      (LPSTR)lpXLErr->XLnkList[i].FileName);
  2375. }
  2376.     }
  2377.     SEAddToLog(lpMyChkInf, pStrBuf, NULL);
  2378. }
  2379.     }
  2380.     LocalFree((HANDLE)pStrBuf);
  2381.     return;
  2382. }
  2383. VOID FAR SEAddErrToLog(LPMYCHKINFOSTRUCT lpMyChkInf)
  2384. {
  2385.     LPEI pEI;
  2386.     UINT IDLBasID;
  2387.     WORD i;
  2388.     WORD j;
  2389.     if(lpMyChkInf->MyFixOpt2 & DLGCHK_NOLOG)
  2390.     {
  2391. return;
  2392.     }
  2393.     if(LOWORD(lpMyChkInf->lParam2) == ERRLOCKV) // This guy ignored
  2394.     {
  2395. return;
  2396.     }
  2397.     //
  2398.     // NOTE that the following overflows for IERR_FATXLNK and IERR_DDERRXLSQZ
  2399.     //
  2400.     IDLBasID = lpMyChkInf->iErr + IDL_ER_FIRST;
  2401.     pEI = &rgEI[lpMyChkInf->iErr];
  2402.     switch(lpMyChkInf->iErr)
  2403.     {
  2404. case IERR_FATERRFILE:
  2405. case IERR_FATERRDIR:
  2406. case IERR_FATLSTCLUS:
  2407. case IERR_FATCIRCC:
  2408. case IERR_FATINVCLUS:
  2409. case IERR_FATRESVAL:
  2410. case IERR_FATFMISMAT:
  2411. case IERR_FATERRVOLLAB:
  2412. case IERR_FATERRMXPLENL:
  2413. case IERR_FATERRMXPLENS:
  2414. case IERR_FATERRCDLIMIT:
  2415. case IERR_DDERRSIZE1:
  2416. case IERR_DDERRFRAG:
  2417. case IERR_DDERRALIGN:
  2418. case IERR_DDERRNOXLCHK:
  2419. case IERR_DDERRUNSUP:
  2420. case IERR_DDERRCVFNM:
  2421. case IERR_DDERRSIG:
  2422. case IERR_DDERRBOOT:
  2423. case IERR_DDERRMDBPB:
  2424. case IERR_DDERRSIZE2A:
  2425. case IERR_DDERRSIZE2B:
  2426. case IERR_DDERRMDFAT:
  2427. case IERR_DDERRLSTSQZ:
  2428. case IERR_ERRISNTBAD:
  2429. case IERR_ERRISBAD1:
  2430. case IERR_ERRISBAD2:
  2431. case IERR_ERRISBAD3:
  2432. case IERR_ERRISBAD4:
  2433. case IERR_ERRISBAD5:
  2434. case IERR_ERRISBAD6:
  2435. case IERR_ERRMEM:
  2436. case IERR_ERRCANTDEL:
  2437. case IERR_DDERRMOUNT:
  2438. case IERR_READERR1:
  2439. case IERR_READERR2:
  2440. case IERR_READERR3:
  2441. case IERR_READERR4:
  2442. case IERR_READERR5:
  2443. case IERR_READERR6:
  2444. case IERR_WRITEERR1:
  2445. case IERR_WRITEERR2:
  2446. case IERR_WRITEERR3:
  2447. case IERR_WRITEERR4:
  2448. case IERR_WRITEERR5:
  2449. case IERR_WRITEERR6:
  2450. #ifdef OPK2
  2451. case IERR_FATERRBOOT:
  2452. case IERR_FATERRSHDSURF:
  2453. case IERR_FATERRROOTDIR:
  2454. case IERR_ERRISBAD7:
  2455. #endif
  2456.     j = 0;
  2457.     lpMyChkInf->szScratch[j] = '';
  2458.     if(lpMyChkInf->UseAltDlgTxt)
  2459.     {
  2460. switch(lpMyChkInf->iErr)
  2461. {
  2462.     case IERR_FATERRVOLLAB:
  2463. i = IDL_FATERRVOLLABALT;
  2464. break;
  2465.     case IERR_FATERRMXPLENL:
  2466. i = IDL_FATERRMXPLENLALT;
  2467. break;
  2468.     case IERR_FATERRMXPLENS:
  2469. i = IDL_FATERRMXPLENSALT;
  2470. break;
  2471.     case IERR_DDERRMDFAT:
  2472. i = IDL_DDERRMDFATALT;
  2473. break;
  2474. #ifdef OPK2
  2475.     case IERR_FATERRROOTDIR:
  2476. #endif
  2477.     case IERR_FATERRFILE:
  2478.     case IERR_ERRMEM:
  2479.     case IERR_FATRESVAL:
  2480.     default:
  2481. i = IDLBasID;
  2482. break;
  2483. }
  2484.     } else {
  2485. i = IDLBasID;
  2486.     }
  2487.     FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  2488.   (LPVOID)g_hInstance,
  2489.   i,
  2490.   0,
  2491.   (LPSTR)&lpMyChkInf->szScratch[j],
  2492.   szScratchMax-j,
  2493.   (LPDWORD)&lpMyChkInf->rgdwArgs);
  2494.     j = lstrlen(lpMyChkInf->szScratch);
  2495.     if(pEI->IsMultiError)
  2496.     {
  2497. for(i=0;i<MAXMULTSTRNGS;i++)
  2498. {
  2499.     if(lpMyChkInf->MltELogStrings[i] != 0)
  2500.     {
  2501. lpMyChkInf->szScratch[j] = '';
  2502. FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  2503.       (LPVOID)g_hInstance,
  2504.       lpMyChkInf->MltELogStrings[i],
  2505.       0,
  2506.       (LPSTR)&lpMyChkInf->szScratch[j],
  2507.       szScratchMax-j,
  2508.       (LPDWORD)&(lpMyChkInf->MErgdwArgs[i]));
  2509. j = lstrlen(lpMyChkInf->szScratch);
  2510.     }
  2511. }
  2512.     }
  2513.     SEAddToLog(lpMyChkInf, lpMyChkInf->szScratch, NULL);
  2514.     break;
  2515. case IERR_FATXLNK:
  2516.     IDLBasID = IDL_ERFATXL;
  2517.     goto DoXL;
  2518.     break;
  2519. case IERR_DDERRXLSQZ:
  2520.     IDLBasID = IDL_ERDDXLQ;
  2521. DoXL:
  2522.     DoLogXLList(lpMyChkInf,IDLBasID);
  2523.     break;
  2524. default:
  2525.     SEAddToLogRCS(lpMyChkInf,IDL_ERUNKNO,NULL);
  2526.     break;
  2527.     }
  2528.     return;
  2529. }
  2530. VOID FAR SEAddRetToLog(LPMYCHKINFOSTRUCT lpMyChkInf)
  2531. {
  2532.     if(lpMyChkInf->MyFixOpt2 & DLGCHK_NOLOG)
  2533.     {
  2534. return;
  2535.     }
  2536.     if(HIWORD(lpMyChkInf->FixRet) == ERETCAN)
  2537.     {
  2538. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSCAN);
  2539. return;
  2540.     }
  2541.     switch(LOWORD(lpMyChkInf->lParam2))
  2542.     {
  2543. // AUTOFIX IGNORE CANCEL no file/dir involved (for resolution)
  2544. #ifdef OPK2
  2545. case FATERRBOOT:
  2546. #endif
  2547. case FATERRRESVAL:
  2548. case FATERRMISMAT:
  2549. case DDERRSIZE2:
  2550. case DDERRSIG:
  2551. case DDERRBOOT:
  2552. case DDERRMDBPB:
  2553. case DDERRMDFAT:
  2554. case DDERRCVFNM:
  2555.     switch(HIWORD(lpMyChkInf->FixRet))
  2556.     {
  2557.       //case ERETCAN:  FILTERED ABOVE
  2558. case ERETIGN:
  2559.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSIGN);
  2560.     break;
  2561. case ERETAFIX:
  2562.     if(LOWORD(lpMyChkInf->lParam2) == DDERRMDBPB)
  2563.     {
  2564. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSRMDBPB);
  2565.     } else if(LOWORD(lpMyChkInf->lParam2) == DDERRMDFAT) {
  2566. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSRMDF);
  2567.     } else {
  2568. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSREP);
  2569.     }
  2570.     break;
  2571. default:
  2572.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2573.     break;
  2574.     }
  2575.     break;
  2576. // IGNORE2 CANCEL warning only
  2577. case DDERRSIZE1:
  2578. case DDERRFRAG:
  2579. case DDERRALIGN:
  2580. case DDERRUNSUP:
  2581. case DDERRMOUNT:
  2582. case DDERRNOXLCHK:
  2583. case ERRCANTDEL:
  2584.     switch(HIWORD(lpMyChkInf->FixRet))
  2585.     {
  2586.       //case ERETCAN:  FILTERED ABOVE
  2587. case ERETIGN2:
  2588.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSIGN);
  2589.     break;
  2590. default:
  2591.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2592.     break;
  2593.     }
  2594.     break;
  2595. // MKFILS FREE IGNORE CANCEL
  2596. case DDERRLSTSQZ:
  2597. case FATERRLSTCLUS:
  2598.     switch(HIWORD(lpMyChkInf->FixRet))
  2599.     {
  2600.       //case ERETCAN:  FILTERED ABOVE
  2601. case ERETFREE:
  2602.     if(LOWORD(lpMyChkInf->lParam2) == DDERRLSTSQZ)
  2603.     {
  2604. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSFLMDF);
  2605.     } else {
  2606. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSFLC);
  2607.     }
  2608.     break;
  2609. case ERETMKFILS:
  2610.     if(LOWORD(lpMyChkInf->lParam2) == DDERRLSTSQZ)
  2611.     {
  2612. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSKLMDF);
  2613.     } else {
  2614. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSKLC);
  2615.     }
  2616.     break;
  2617. case ERETIGN:
  2618.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSIGN);
  2619.     break;
  2620. default:
  2621.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2622.     break;
  2623.     }
  2624.     break;
  2625. // AUTOFIX DELDIR DELALL IGNORE CANCEL single file or dir
  2626. #ifdef OPK2
  2627. case FATERRROOTDIR:
  2628. #endif
  2629. case FATERRCIRCC:
  2630. case FATERRINVCLUS:
  2631. case FATERRDIR:
  2632. case FATERRFILE:
  2633. case FATERRVOLLAB:
  2634.     switch(HIWORD(lpMyChkInf->FixRet))
  2635.     {
  2636.       //case ERETCAN:  FILTERED ABOVE
  2637. case ERETAFIX:
  2638.     if((LOWORD(lpMyChkInf->lParam2) == FATERRCIRCC) ||
  2639.        (LOWORD(lpMyChkInf->lParam2) == FATERRINVCLUS) )
  2640.     {
  2641. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSTRNC);
  2642.     } else if(LOWORD(lpMyChkInf->lParam2) == FATERRVOLLAB) {
  2643. if(lpMyChkInf->UseAltDlgTxt)
  2644. {
  2645.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSREPFF);
  2646. } else {
  2647.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSREPVL);
  2648. }
  2649.     } else {
  2650. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSREP);
  2651.     }
  2652.     break;
  2653. case ERETDELDIR:
  2654. case ERETDELALL:
  2655.     if((LOWORD(lpMyChkInf->lParam2) == FATERRVOLLAB) &&
  2656.        (!(lpMyChkInf->UseAltDlgTxt))        )
  2657.     {
  2658. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSDELVL);
  2659.     } else {
  2660. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSDEL);
  2661.     }
  2662.     break;
  2663. case ERETIGN:
  2664.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSIGN);
  2665.     break;
  2666. default:
  2667.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2668.     break;
  2669.     }
  2670.     break;
  2671. // AUTOFIX MVDIR MVFIL DELDIR DELALL IGNORE CANCEL single file or dir
  2672. case FATERRCDLIMIT:
  2673. case FATERRMXPLEN:
  2674.     switch(HIWORD(lpMyChkInf->FixRet))
  2675.     {
  2676.       //case ERETCAN:  FILTERED ABOVE
  2677. case ERETMVDIR:
  2678.       //case ERETMVFIL:  SAME VALUE AS ERETMVDIR
  2679. case ERETAFIX:
  2680.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSMVRT);
  2681.     break;
  2682. case ERETDELDIR:
  2683. case ERETDELALL:
  2684.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSDEL);
  2685.     break;
  2686. case ERETIGN:
  2687.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSIGN);
  2688.     break;
  2689. default:
  2690.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2691.     break;
  2692.     }
  2693.     break;
  2694. // MKCPY DELALL IGNORE CANCEL multiple files
  2695. case DDERRXLSQZ:
  2696.     switch(HIWORD(lpMyChkInf->FixRet))
  2697.     {
  2698.       //case ERETCAN:  FILTERED ABOVE
  2699. case ERETMKCPY:
  2700.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSREP);
  2701.     break;
  2702. case ERETDELALL:
  2703.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSDELXLQ);
  2704.     break;
  2705. case ERETIGN:
  2706.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSIGN);
  2707.     break;
  2708. default:
  2709.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2710.     break;
  2711.     }
  2712.     break;
  2713. // MKCPY DELALL TNCALL SVONED SVONET IGNORE CANCEL multiple files
  2714. case FATERRXLNK:
  2715.     switch(HIWORD(lpMyChkInf->FixRet))
  2716.     {
  2717.       //case ERETCAN:  FILTERED ABOVE
  2718. case ERETMKCPY:
  2719.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSMCXL);
  2720.     break;
  2721. case ERETSVONED:
  2722. case ERETSVONET:
  2723.     {
  2724. PBYTE pStrBuf;
  2725. pStrBuf = (PBYTE)LocalAlloc(LMEM_FIXED,(256*2));
  2726. if(!pStrBuf)
  2727. {
  2728.     SEAddLogNoMem(lpMyChkInf);
  2729.     return;
  2730. }
  2731. pStrBuf[0]   = '';
  2732. pStrBuf[256] = '';
  2733. if(HIWORD(lpMyChkInf->FixRet) == ERETSVONED)
  2734.     LoadString(g_hInstance,IDL_RSSODXL,pStrBuf,256);
  2735. else
  2736.     LoadString(g_hInstance,IDL_RSSOTXL,pStrBuf,256);
  2737. wsprintf((LPSTR)&(pStrBuf[256]),(LPSTR)pStrBuf,
  2738.  (WORD)(LOWORD(lpMyChkInf->FixRet) + 1));
  2739. LoadString(g_hInstance,IDL_RSPRE,pStrBuf,256);
  2740. SEAddToLog(lpMyChkInf, pStrBuf, &(pStrBuf[256]));
  2741. LocalFree((HANDLE)pStrBuf);
  2742.     }
  2743.     break;
  2744. case ERETDELALL:
  2745.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSDELXL);
  2746.     break;
  2747. case ERETTNCALL:
  2748.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSTNCXL);
  2749.     break;
  2750. case ERETIGN:
  2751.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSIGN);
  2752.     break;
  2753. default:
  2754.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2755.     break;
  2756.     }
  2757.     break;
  2758. // MRKBAD RETRY IGNORE2 CANCEL single file or dir (or none)
  2759. case ERRISBAD:
  2760. #ifdef OPK2
  2761. case ERRISBAD2:
  2762. #endif
  2763. case ERRISNTBAD:
  2764.     switch(HIWORD(lpMyChkInf->FixRet))
  2765.     {
  2766.       //case ERETCAN:  FILTERED ABOVE
  2767. case ERETMRKBAD:
  2768.     if(LOWORD(lpMyChkInf->lParam2) == ERRISBAD)
  2769.     {
  2770. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSREP);
  2771. #ifdef OPK2
  2772.     } else if(LOWORD(lpMyChkInf->lParam2) == ERRISNTBAD) {
  2773. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNMARK);
  2774.     } else {
  2775. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2776. #else
  2777.     } else {
  2778. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNMARK);
  2779. #endif
  2780.     }
  2781.     break;
  2782. case ERETRETRY:
  2783.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSRETBD);
  2784.     break;
  2785. case ERETIGN2:
  2786.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSIGN);
  2787.     break;
  2788. default:
  2789.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2790.     break;
  2791.     }
  2792.     break;
  2793. #ifdef OPK2
  2794. case FATERRSHDSURF:
  2795.     switch(HIWORD(lpMyChkInf->FixRet))
  2796.     {
  2797.       //case ERETCAN:  FILTERED ABOVE
  2798. case ERETENABSURF:
  2799.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSDOSURF);
  2800.     break;
  2801. case ERETIGN2:
  2802.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSIGN);
  2803.     break;
  2804. default:
  2805.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2806.     break;
  2807.     }
  2808.     break;
  2809. #endif
  2810. // RETRY IGNORE CANCEL
  2811. case MEMORYERROR:
  2812. case READERROR:
  2813. case WRITEERROR:
  2814.     switch(HIWORD(lpMyChkInf->FixRet))
  2815.     {
  2816.       //case ERETCAN:  FILTERED ABOVE
  2817. case ERETRETRY:
  2818.     if(LOWORD(lpMyChkInf->lParam2) == MEMORYERROR)
  2819.     {
  2820. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSRETMM);
  2821.     } else if(LOWORD(lpMyChkInf->lParam2) == READERROR) {
  2822. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSRETRD);
  2823.     } else {
  2824. SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSRETWR);
  2825.     }
  2826.     break;
  2827. case ERETIGN:
  2828.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSIGN);
  2829.     break;
  2830. default:
  2831.     SEAddToLogRCS(lpMyChkInf,IDL_RSPRE,IDL_RSUNK);
  2832.     break;
  2833.     }
  2834.     break;
  2835. case ERRLOCKV: // This guy ignored
  2836. default:
  2837.     break;
  2838.     }
  2839.     return;
  2840. }
  2841. VOID FAR SEAddToLogRCS(LPMYCHKINFOSTRUCT lpMyChkInf, UINT RCId, UINT PostRCId)
  2842. {
  2843.     PBYTE pStrBuf;
  2844.     if(lpMyChkInf->MyFixOpt2 & DLGCHK_NOLOG)
  2845.     {
  2846. return;
  2847.     }
  2848.     pStrBuf = (PBYTE)LocalAlloc(LMEM_FIXED,(256*2));
  2849.     if(!pStrBuf)
  2850.     {
  2851. SEAddLogNoMem(lpMyChkInf);
  2852. return;
  2853.     }
  2854.     pStrBuf[0]  = '';
  2855.     pStrBuf[256] = '';
  2856.     if(RCId)
  2857.     {
  2858. LoadString(g_hInstance, RCId, pStrBuf,256);
  2859.     }
  2860.     if(PostRCId)
  2861.     {
  2862. LoadString(g_hInstance, PostRCId, &(pStrBuf[256]),256);
  2863.     }
  2864.     if((pStrBuf[0] != '') || (pStrBuf[256] != ''))
  2865.     {
  2866. SEAddToLog(lpMyChkInf, pStrBuf, &(pStrBuf[256]));
  2867.     }
  2868.     LocalFree((HANDLE)pStrBuf);
  2869.     return;
  2870. }
  2871. //Appends szNew + szPost to the log (szPost can be NULL)
  2872. VOID FAR SEAddToLog(LPMYCHKINFOSTRUCT lpMyChkInf, LPSTR szNew, LPSTR szPost)
  2873. {
  2874.     HGLOBAL hT;
  2875.     BYTE huge * lpsz = NULL;
  2876.     LPLOG lpLog;
  2877.     DWORD cchAlloc;
  2878.     DWORD cchTotNew;
  2879.     DWORD cchSzNew;
  2880.     char zero='';
  2881.     if(lpMyChkInf->MyFixOpt2 & DLGCHK_NOLOG)
  2882.     {
  2883. return;
  2884.     }
  2885.     lpLog = &(lpMyChkInf->Log);
  2886.     if(szPost == NULL)
  2887.     {
  2888. szPost=&zero;
  2889.     }
  2890.     // NOTE THAT lpLog->cchUsed does not include terminating !!!!!
  2891.     cchSzNew = MAKELONG(lstrlen(szNew),0);
  2892.     cchTotNew = cchSzNew + MAKELONG(lstrlen(szPost),0);
  2893.     if(cchTotNew == 0L)
  2894.     {
  2895. return;
  2896.     }
  2897.     if(lpLog->hSz == NULL)
  2898.     {
  2899. hT = GlobalAlloc(GHND,LOGCHUNK);
  2900. if(hT == NULL)
  2901. {
  2902.     SEAddLogNoMem(lpMyChkInf);
  2903.     return;
  2904. }
  2905. lpLog->hSz=hT;
  2906. lpLog->cchAlloced = LOGCHUNK;
  2907. lpLog->cchUsed = 0L;
  2908.     }
  2909.     if(lpLog->cchAlloced < (lpLog->cchUsed + cchTotNew + 1L))
  2910.     {
  2911. cchAlloc=((cchTotNew + 1L) > LOGCHUNK) ? (cchTotNew + 1L) : LOGCHUNK;
  2912. hT = GlobalReAlloc(lpLog->hSz,
  2913.    lpLog->cchAlloced + cchAlloc,
  2914.    GMEM_MOVEABLE);
  2915. if(hT == NULL)
  2916. {
  2917.     SEAddLogNoMem(lpMyChkInf);
  2918.     return;
  2919. }
  2920. lpLog->hSz = hT;
  2921. lpLog->cchAlloced += cchAlloc;
  2922.     }
  2923.     lpsz = (BYTE huge *)MAKELP(lpLog->hSz,0);
  2924.     lstrcpy(&lpsz[lpLog->cchUsed],szNew);
  2925.     lstrcpy(&lpsz[lpLog->cchUsed+cchSzNew],szPost);
  2926.     lpLog->cchUsed += cchTotNew;
  2927.     return;
  2928. }
  2929. VOID FAR SERecordLog(LPMYCHKINFOSTRUCT lpMyChkInf, BOOL MltiDrvAppnd)
  2930. {
  2931.     BYTE huge * lpData = NULL;
  2932.     OFSTRUCT of;
  2933.     HFILE hf = HFILE_ERROR;
  2934.     UINT OpenMode;
  2935.     UINT i;
  2936.     UINT j;
  2937.     if((lpMyChkInf->MyFixOpt2 & DLGCHK_NOLOG) ||
  2938.        (lpMyChkInf->Log.hSz == NULL)       ||
  2939.        (lpMyChkInf->Log.cchUsed == 0L) )
  2940.     {
  2941. goto AllDone;
  2942.     }
  2943.     lpData = (BYTE huge *)MAKELP(lpMyChkInf->Log.hSz,0);
  2944.     if(lpData == NULL)
  2945.     {
  2946. goto LogErr;
  2947.     }
  2948.     if((lpMyChkInf->MyFixOpt2 & DLGCHK_LOGAPPEND) || MltiDrvAppnd)
  2949.     {
  2950. OpenMode = OF_READWRITE | OF_SHARE_COMPAT;
  2951.     } else {
  2952. OpenMode = OF_CREATE;
  2953.     }
  2954. OpenAgain:
  2955.     hf = OpenFile(lpMyChkInf->Log.LogFileName,&of,OpenMode);
  2956.     if(hf == HFILE_ERROR)
  2957.     {
  2958. if(OpenMode != OF_CREATE)
  2959. {
  2960.     if(of.nErrCode == 0x0002) // File not found (doesn't exist)?
  2961.     {
  2962. OpenMode = OF_CREATE;
  2963. goto OpenAgain;
  2964.     }
  2965. }
  2966. LogErr:
  2967. MyChkdskMessageBox(lpMyChkInf, IDS_SELOGNOWRITE,
  2968.    MB_ICONINFORMATION | MB_OK);
  2969. goto AllDone;
  2970.     }
  2971.     if((lpMyChkInf->MyFixOpt2 & DLGCHK_LOGAPPEND) || MltiDrvAppnd)
  2972.     {
  2973. if(_llseek(hf,0L,2) == -1)
  2974. {
  2975.     goto LogErr;
  2976. }
  2977.     }
  2978.     while(lpMyChkInf->Log.cchUsed)
  2979.     {
  2980. if(lpMyChkInf->Log.cchUsed > (0x00010000L - 512L))
  2981. {
  2982.     i = LOWORD(0x00010000L - 512L);
  2983. } else {
  2984.     i = LOWORD(lpMyChkInf->Log.cchUsed);
  2985. }
  2986. j = _lwrite(hf,lpData,i);
  2987. if(j != i)
  2988. {
  2989.     goto LogErr;
  2990. }
  2991. lpData += i;
  2992. lpMyChkInf->Log.cchUsed -= (DWORD)i;
  2993.     }
  2994. AllDone:
  2995.     if(hf != HFILE_ERROR)
  2996.     {
  2997. _lclose(hf);
  2998. hf = HFILE_ERROR;
  2999.     }
  3000.     if(lpMyChkInf->Log.hSz != NULL)
  3001.     {
  3002. lpData = NULL;
  3003. GlobalFree(lpMyChkInf->Log.hSz);
  3004. lpMyChkInf->Log.hSz = NULL;
  3005.     }
  3006.     return;
  3007. }
  3008. BOOL NEAR SEStuffDlg (HWND hDlg,LPMYCHKINFOSTRUCT lpMyChkInf)
  3009. {
  3010.     LPEI     pEI;
  3011.     WORD     i;
  3012.     WORD     j;
  3013.     WORD     k;
  3014.     DWORD FAR     *pDw;
  3015.     pEI = &rgEI[lpMyChkInf->iErr];
  3016.     // If there's a special function, call it.
  3017.     if(pEI->pfnStuff)
  3018.     {
  3019. return(pEI->pfnStuff(hDlg,lpMyChkInf));
  3020.     }
  3021.     SEStuffTitle(hDlg,lpMyChkInf, TITLE(pEI->idBase));
  3022.     j = 0;
  3023.     for (i=0;i<IDC_SE_CTXT;i++)
  3024.     {
  3025. if(lpMyChkInf->UseAltDlgTxt)
  3026.     k = ALTDLTXT1(pEI->idBase + i);
  3027. else
  3028.     k = DLTXT1(pEI->idBase + i);
  3029. lpMyChkInf->szScratch[j] = '';
  3030. FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  3031.       (LPVOID)g_hInstance,
  3032.       k,
  3033.       0,
  3034.       (LPSTR)&lpMyChkInf->szScratch[j],
  3035.       szScratchMax-j,
  3036.       (LPDWORD)&lpMyChkInf->rgdwArgs);
  3037. j = lstrlen(lpMyChkInf->szScratch);
  3038.     }
  3039.     if(pEI->IsMultiError)
  3040.     {
  3041. for(i=0;i<MAXMULTSTRNGS;i++)
  3042. {
  3043.     if(lpMyChkInf->MltEStrings[i] != 0)
  3044.     {
  3045. lpMyChkInf->szScratch[j] = '';
  3046. FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  3047.       (LPVOID)g_hInstance,
  3048.       lpMyChkInf->MltEStrings[i],
  3049.       0,
  3050.       (LPSTR)&lpMyChkInf->szScratch[j],
  3051.       szScratchMax-j,
  3052.       (LPDWORD)&(lpMyChkInf->MErgdwArgs[i]));
  3053. j = lstrlen(lpMyChkInf->szScratch);
  3054.     }
  3055. }
  3056.     }
  3057.     SendMessage(GetDlgItem(hDlg,IDC_SE_TXT),WM_SETTEXT,0,
  3058. (LPARAM)(LPSTR)lpMyChkInf->szScratch);
  3059.     for(i=0;i<pEI->cButtons;i++)
  3060.     {
  3061. if((i == pEI->DelButtIndx) &&
  3062.    (pEI->DelButFilDir)    &&
  3063.    (lpMyChkInf->IsFolder)    )
  3064. {
  3065.     SetTextDCR(hDlg,
  3066.        IDC_SE_BUT1+i,
  3067.        pEI->DelButIDDir,
  3068.        lpMyChkInf->szScratch);
  3069. } else if((i == pEI->FixButtIndx) &&
  3070.   (pEI->FixButFilDir)   &&
  3071.   (lpMyChkInf->IsFolder)    )
  3072. {
  3073.     SetTextDCR(hDlg,
  3074.        IDC_SE_BUT1+i,
  3075.        pEI->FixButIDDir,
  3076.        lpMyChkInf->szScratch);
  3077. } else {
  3078.     if(lpMyChkInf->UseAltDlgTxt)
  3079. k = pEI->AltrgBut[i];
  3080.     else
  3081. k = pEI->rgBut[i];
  3082.     SetTextDCR(hDlg,
  3083.        IDC_SE_BUT1+i,
  3084.        k,
  3085.        lpMyChkInf->szScratch);
  3086. }
  3087.     }
  3088.     for (i=pEI->cButtons;i<IDC_SE_CBUTTONS;i++)
  3089.     {
  3090. DestroyWindow(GetDlgItem(hDlg,IDC_SE_BUT1+i));
  3091.     }
  3092.     if(!pEI->IsMoreInfoButton)
  3093.     {
  3094. DestroyWindow(GetDlgItem(hDlg,IDC_SE_MOREINFO));
  3095.     }
  3096.     if(lpMyChkInf->UseAltDlgTxt)
  3097.     {
  3098. if(pEI->IsAltHelpButton == ISNOHELPB)
  3099. {
  3100.     DestroyWindow(GetDlgItem(hDlg,IDC_SE_HELP));
  3101. } else if(pEI->IsAltHelpButton == ISHELPBIFCANTDEL) {
  3102.     goto ChkHlpDisable;
  3103. }
  3104.     } else {
  3105. if(pEI->IsHelpButton == ISNOHELPB)
  3106. {
  3107.     DestroyWindow(GetDlgItem(hDlg,IDC_SE_HELP));
  3108. } else if(pEI->IsHelpButton == ISHELPBIFCANTDEL) {
  3109. ChkHlpDisable:
  3110.     if(pEI->WarnCantFix)
  3111.     {
  3112. if(lpMyChkInf->UseAltCantFix)
  3113. {
  3114.     if(!(HIWORD(lpMyChkInf->lParam2) & lpMyChkInf->AltCantFixTstFlag))
  3115.     {
  3116. DestroyWindow(GetDlgItem(hDlg,IDC_SE_HELP));
  3117.     }
  3118. } else {
  3119.     if(pEI->CantFixTstIsRev)
  3120.     {
  3121. if((HIWORD(lpMyChkInf->lParam2) & pEI->CantFixTstFlag))
  3122. {
  3123.     DestroyWindow(GetDlgItem(hDlg,IDC_SE_HELP));
  3124. }
  3125.     } else {
  3126. if(!(HIWORD(lpMyChkInf->lParam2) & pEI->CantFixTstFlag))
  3127. {
  3128.     DestroyWindow(GetDlgItem(hDlg,IDC_SE_HELP));
  3129. }
  3130.     }
  3131. }
  3132.     } else {
  3133. if(!(HIWORD(lpMyChkInf->lParam2) & pEI->CantDelTstFlag))
  3134. {
  3135.     DestroyWindow(GetDlgItem(hDlg,IDC_SE_HELP));
  3136. }
  3137.     }
  3138. }
  3139.     }
  3140.     if(pEI->WarnCantDel)
  3141.     {
  3142. if(HIWORD(lpMyChkInf->lParam2) & pEI->CantDelTstFlag)
  3143. {
  3144.     EnableWindow(GetDlgItem(hDlg,IDC_SE_BUT1+pEI->DelButtIndx),FALSE);
  3145. }
  3146.     }
  3147.     if(pEI->WarnCantFix)
  3148.     {
  3149. if(lpMyChkInf->UseAltCantFix)
  3150. {
  3151.     if((HIWORD(lpMyChkInf->lParam2) & lpMyChkInf->AltCantFixTstFlag))
  3152.     {
  3153. EnableWindow(GetDlgItem(hDlg,IDC_SE_BUT1+pEI->FixButtIndx),FALSE);
  3154.     }
  3155. } else {
  3156.     if(pEI->CantFixTstIsRev)
  3157.     {
  3158. if(!(HIWORD(lpMyChkInf->lParam2) & pEI->CantFixTstFlag))
  3159. {
  3160.     EnableWindow(GetDlgItem(hDlg,IDC_SE_BUT1+pEI->FixButtIndx),FALSE);
  3161. }
  3162.     } else {
  3163. if(HIWORD(lpMyChkInf->lParam2) & pEI->CantFixTstFlag)
  3164. {
  3165.     EnableWindow(GetDlgItem(hDlg,IDC_SE_BUT1+pEI->FixButtIndx),FALSE);
  3166. }
  3167.     }
  3168. }
  3169.     }
  3170.     // Following delayed till SECrunchDlg
  3171.     //
  3172.     // if(pEI->IsNoOk)
  3173.     // {
  3174.     //    DestroyWindow(GetDlgItem(hwnd,IDC_SE_OK));
  3175.     // }
  3176.     if(pEI->OkIsContinue)
  3177.     {
  3178. SetTextDCR(hDlg,
  3179.    IDC_SE_OK,
  3180.    ISTR_SE_CONTB,
  3181.    lpMyChkInf->szScratch);
  3182.     }
  3183.     for (i=0;i<20;i++)
  3184.     {
  3185. lpMyChkInf->aIds[i]=aIdsMaster[i];
  3186.     }
  3187.     if(pEI->IsMoreInfoButton)
  3188.     {
  3189. lpMyChkInf->aIds[17]=pEI->MoreInfoButtonHID;
  3190.     }
  3191.     //
  3192.     // Be CAREFUL, for the following loop:
  3193.     // 0 is the TXT help
  3194.     // 1 is the first radio button
  3195.     // 2 is the second radio button
  3196.     // etc.
  3197.     //
  3198.     for(i=0,pDw = (lpMyChkInf->aIds)+5;i<1+pEI->cButtons;i++,pDw+=2)
  3199.     {
  3200. if((i == (pEI->DelButtIndx + 1)) &&
  3201.    (pEI->DelButFilDir)  &&
  3202.    (lpMyChkInf->IsFolder)    )
  3203. {
  3204.     *pDw=pEI->DelButDirHID;
  3205. } else if((i == (pEI->DelButtIndx + 1)) &&
  3206.   (pEI->FixButFilDir) &&
  3207.   (lpMyChkInf->IsFolder)   )
  3208. {
  3209.     *pDw=pEI->FixButDirHID;
  3210. } else {
  3211.     if((pEI->WarnCantFix)      &&
  3212.        (i == (pEI->FixButtIndx + 1)) &&
  3213.        (lpMyChkInf->UseAltCantFix)   &&
  3214.        (HIWORD(lpMyChkInf->lParam2) & lpMyChkInf->AltCantFixTstFlag))
  3215.     {
  3216. *pDw=lpMyChkInf->AltCantFixRepHID;
  3217.     } else {
  3218. if(lpMyChkInf->UseAltDlgTxt)
  3219. {
  3220.     *pDw=pEI->AltrgHelp[i];
  3221. } else {
  3222.     *pDw=pEI->rgHelp[i];
  3223. }
  3224.     }
  3225. }
  3226.     }
  3227.     return(TRUE);
  3228. }
  3229. VOID NEAR SECrunchXLDDDlg(HWND hwnd)
  3230. {
  3231.     HWND    hWndT;
  3232.     HWND    hWndTT;
  3233.     RECT    rc;
  3234.     RECT    rcStatic;
  3235.     int     i;
  3236.     int     dy;
  3237.     int     dyOkCancel;
  3238.     // Get the rectangle of the third button, this is the last one
  3239.     hWndTT = GetDlgItem(hwnd,IDC_XL_BUT1 + 2);
  3240.     GetWindowRect(hWndTT,&rc);
  3241.     MapWindowRect(NULL,hwnd,&rc);
  3242.     hWndT =  GetDlgItem(hwnd,IDC_SE_OK);
  3243.     GetWindowRect(hWndT,&rcStatic);
  3244.     MapWindowRect(NULL,hwnd,&rcStatic);
  3245.     dyOkCancel = rcStatic.top - rc.bottom - ((5 * HIWORD(GetDialogBaseUnits())) / 8);
  3246.     // Move the OK, Cancel, help buttons up
  3247.     for(i=IDC_SE_OK;i<=IDC_SE_HELP;i++)
  3248.     {
  3249. if(i == IDC_SE_CANCELA)
  3250.    hWndTT=GetDlgItem(hwnd,IDC_SE_CANCEL);
  3251. else
  3252.    hWndTT=GetDlgItem(hwnd,i);
  3253. if(NULL==hWndTT)
  3254.     continue;
  3255. hWndT=hWndTT;
  3256. GetWindowRect(hWndT,&rc);
  3257. MapWindowRect(NULL,hwnd,&rc);
  3258. MoveWindow(hWndT,rc.left,rc.top-dyOkCancel,
  3259.    rc.right-rc.left,rc.bottom-rc.top,FALSE);
  3260.     }
  3261.     // Resize the main window to the bottom of the buttons
  3262.     GetWindowRect(hWndT,&rc);
  3263.     GetWindowRect(hwnd, &rcStatic);
  3264.     dy = ((10 * HIWORD(GetDialogBaseUnits())) / 8);
  3265.     MoveWindow(hwnd,rcStatic.left,rcStatic.top,
  3266.        rcStatic.right-rcStatic.left,rc.bottom-rcStatic.top+dy,FALSE);
  3267.     return;
  3268. }
  3269. VOID NEAR SECrunchDlg(HWND hwnd,LPSTR szScratch,LPMYCHKINFOSTRUCT lpMyChkInf)
  3270. {
  3271.     DWORD   dwi;
  3272.     HWND    hWndT;
  3273.     HWND    hWndTT;
  3274.     HWND    hWndTTT;
  3275.     RECT    rc;
  3276.     RECT    rcStatic;
  3277.     int     cyText;
  3278.     int     i;
  3279.     HDC     hdc;
  3280.     PSTR    szText;
  3281.     LRESULT cchText;
  3282.     int     dy;
  3283.     int     dx;
  3284.     int     dyOkCancel;
  3285.     LPEI    pEI;
  3286.     pEI = &rgEI[lpMyChkInf->iErr];
  3287.     //Get Size of Text box
  3288.     hWndT = GetDlgItem (hwnd,IDC_SE_TXT);
  3289.     if(NULL==hWndT)
  3290. return;
  3291.     cchText = SendMessage(hWndT,WM_GETTEXTLENGTH,(LPARAM)0,(WPARAM)0);
  3292.     szText = (char *) LocalAlloc(LMEM_FIXED,(UINT)cchText);
  3293.     if(NULL==szText)
  3294. return;
  3295.     GetWindowText(hWndT, szText,(UINT)cchText);
  3296.     GetWindowRect(hWndT, &rcStatic);
  3297.     MapWindowRect(NULL,hwnd,&rcStatic);
  3298.     hdc = GetDC(hWndT);
  3299.     SelectObject(hdc, GetWindowFont(hWndT));
  3300.     // Ask DrawText for the right cx and cy
  3301.     rc.left = 0;
  3302.     rc.top = 0;
  3303.     // Even though we may remove the border, we still have to account
  3304.     // for it. NOTE: We say the borders are 3* the edge metric instead
  3305.     // of 2*, this accounts for the text margins.
  3306.     rc.right = (rcStatic.right - rcStatic.left) - (3 * GetSystemMetrics(SM_CXEDGE));
  3307.     rc.bottom = dy = (rcStatic.bottom - rcStatic.top) - (3 * GetSystemMetrics(SM_CYEDGE));
  3308.     cyText = DrawTextEx(hdc, szText, -1, &rc,
  3309.     DT_CALCRECT | DT_WORDBREAK | DT_EXPANDTABS | DT_EDITCONTROL |
  3310.     DT_NOPREFIX | DT_EXTERNALLEADING, NULL);
  3311.     LocalFree((HLOCAL)szText);
  3312.     dy = (cyText - dy);
  3313.     if(dy <= 0)
  3314.     {
  3315. // Remove the scroll bar and border and resize the text
  3316. // control
  3317. dwi = GetWindowLong(hWndT,GWL_STYLE);
  3318. dwi &= ~(WS_VSCROLL | WS_BORDER);
  3319. SetWindowLong(hWndT,GWL_STYLE,dwi);
  3320. dwi = GetWindowLong(hWndT,GWL_EXSTYLE);
  3321. dwi &= ~(WS_EX_CLIENTEDGE);
  3322. SetWindowLong(hWndT,GWL_EXSTYLE,dwi);
  3323. SetWindowPos(hWndT,NULL,rcStatic.left,rcStatic.top,
  3324.      rcStatic.right-rcStatic.left,
  3325.      rcStatic.bottom-rcStatic.top+dy,
  3326.      SWP_DRAWFRAME | SWP_NOMOVE | SWP_NOZORDER | SWP_NOREDRAW |
  3327.      SWP_NOACTIVATE);
  3328.     } else {
  3329. dy = 0;  // Don't move the radio buttons
  3330.     }
  3331.     SendMessage(hWndT,EM_SETSEL,1,0xFFFFFFFFL);
  3332.     // This should automatically deselect the font
  3333.     ReleaseDC(hWndT, hdc);
  3334.     hWndT=NULL;
  3335.     // Move the radio buttons up so that they are just below the text
  3336.     for(i=IDC_SE_BUT1;i<IDC_SE_BUT1 + IDC_SE_CBUTTONS;i++)
  3337.     {
  3338. hWndTT = GetDlgItem(hwnd,i);
  3339. if (NULL==hWndTT) break;
  3340. hWndT=hWndTT;
  3341. GetWindowRect(hWndT,&rc);
  3342. MapWindowRect(NULL,hwnd,&rc);
  3343. dyOkCancel = rc.bottom;
  3344. MoveWindow(hWndT,rc.left,rc.top+dy,
  3345.       rc.right-rc.left,rc.bottom-rc.top,FALSE);
  3346.     }
  3347.     if(NULL!=hWndT)   // Set the delta for the Ok Cancel to be the
  3348.     {       // distance traveled by the last dialog button
  3349. GetWindowRect(hWndT,&rc);
  3350. MapWindowRect(NULL,hwnd,&rc);
  3351. dyOkCancel = rc.bottom - dyOkCancel;
  3352.     } else {
  3353. // In this case, there are no radiobuttons
  3354. dyOkCancel = dy - 42;  //dy is still the dy from the text box
  3355.  //42 is the delta between the top
  3356.  //of the button and the original text
  3357.  //box
  3358.     }
  3359.     // Move the OK, Cancel, more info, help buttons up
  3360.     for(i=IDC_SE_OK;i<=IDC_SE_HELP;i++)
  3361.     {
  3362. if(i == IDC_SE_CANCELA)
  3363.    hWndTT=GetDlgItem(hwnd,IDC_SE_CANCEL);
  3364. else
  3365.    hWndTT=GetDlgItem(hwnd,i);
  3366. if(NULL==hWndTT)
  3367.     continue;
  3368. hWndT=hWndTT;
  3369. GetWindowRect(hWndT,&rc);
  3370. MapWindowRect(NULL,hwnd,&rc);
  3371. MoveWindow(hWndT,rc.left,rc.top+dyOkCancel,
  3372.    rc.right-rc.left,rc.bottom-rc.top,FALSE);
  3373.     }
  3374.     // Compute a "buton width" for following moves
  3375.     hWndTT=GetDlgItem(hwnd,IDC_SE_OK);
  3376.     hWndTTT=GetDlgItem(hwnd,IDC_SE_CANCEL);
  3377.     if((hWndTTT == NULL) || (hWndTT == NULL))
  3378. goto SkipHelpLeft;
  3379.     GetWindowRect(hWndTTT,&rc);
  3380.     MapWindowRect(NULL,hwnd,&rc);
  3381.     GetWindowRect(hWndTT,&rcStatic);
  3382.     MapWindowRect(NULL,hwnd,&rcStatic);
  3383.     dx = rc.left - rcStatic.left;
  3384.     // If no Ok button, destroy it and move other buttons
  3385.     // to the left by a button width.
  3386.     if(pEI->IsNoOk)
  3387.     {
  3388. DestroyWindow(GetDlgItem(hwnd,IDC_SE_OK));
  3389. for(i=IDC_SE_OK+1;i<=IDC_SE_HELP;i++)
  3390. {
  3391.     if(i == IDC_SE_CANCELA)
  3392.        hWndTTT=GetDlgItem(hwnd,IDC_SE_CANCEL);
  3393.     else
  3394.        hWndTTT=GetDlgItem(hwnd,i);
  3395.     if(hWndTTT == NULL)
  3396. continue;
  3397.     GetWindowRect(hWndTTT,&rc);
  3398.     MapWindowRect(NULL,hwnd,&rc);
  3399.     MoveWindow(hWndTTT,rc.left-dx,rc.top,
  3400.        rc.right-rc.left,rc.bottom-rc.top,FALSE);
  3401. }
  3402.     }
  3403.     // If no More Info button, but is a help button, move HELP button
  3404.     // to the left by a button width.
  3405.     if(lpMyChkInf->UseAltDlgTxt)
  3406.     {
  3407. if((pEI->IsAltHelpButton != ISNOHELPB) &&
  3408.    (!(pEI->IsMoreInfoButton))  )
  3409. {
  3410.     goto MoveHelp;
  3411. }
  3412.     } else {
  3413. if((pEI->IsHelpButton != ISNOHELPB) &&
  3414.    (!(pEI->IsMoreInfoButton))       )
  3415. {
  3416. MoveHelp:
  3417.     hWndTTT=GetDlgItem(hwnd,IDC_SE_HELP);
  3418.     if(hWndTTT == NULL)
  3419. goto SkipHelpLeft;
  3420.     GetWindowRect(hWndTTT,&rc);
  3421.     MapWindowRect(NULL,hwnd,&rc);
  3422.     MoveWindow(hWndTTT,rc.left-dx,rc.top,
  3423.        rc.right-rc.left,rc.bottom-rc.top,FALSE);
  3424. }
  3425.     }
  3426. SkipHelpLeft:
  3427.     // Resize the main window to the bottom of the buttons
  3428.     GetWindowRect(hWndT,&rc);
  3429.     GetWindowRect(hwnd, &rcStatic);
  3430.     dy = ((10 * HIWORD(GetDialogBaseUnits())) / 8);
  3431.     MoveWindow(hwnd,rcStatic.left,rcStatic.top,
  3432.        rcStatic.right-rcStatic.left,rc.bottom-rcStatic.top+dy,FALSE);
  3433.     return;
  3434. }
  3435. BOOL WINAPI SEMIDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  3436. {
  3437.     LPMYCHKINFOSTRUCT lpMyChkInf;
  3438.     WORD       i;
  3439.     WORD       j;
  3440.     HMENU       hMenu;
  3441.     LPEI       pEI;
  3442.     lpMyChkInf = (LPMYCHKINFOSTRUCT)GetWindowLong(hwnd,DWL_USER);
  3443.     if(NULL != lpMyChkInf)
  3444. pEI = &rgEI[lpMyChkInf->iErr];
  3445.     switch(msg)
  3446.     {
  3447. case  WM_INITDIALOG:
  3448.     SetWindowLong(hwnd,DWL_USER,lParam);
  3449.     lpMyChkInf = (LPMYCHKINFOSTRUCT)lParam;
  3450.     pEI = &rgEI[lpMyChkInf->iErr];
  3451.     SEStuffTitle(hwnd,lpMyChkInf, MORETIT(pEI->idBase));
  3452.     j = 0;
  3453.     for (i=0;i<IDC_SE_CMORT;i++)
  3454.     {
  3455. lpMyChkInf->szScratch[j] = '';
  3456. FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  3457.       (LPVOID)g_hInstance,
  3458.       MORETXT1(pEI->idBase + i),
  3459.       0,
  3460.       (LPSTR)&lpMyChkInf->szScratch[j],
  3461.       szScratchMax-j,
  3462.       (LPDWORD)&lpMyChkInf->MIrgdwArgs);
  3463. j = lstrlen(lpMyChkInf->szScratch);
  3464.     }
  3465.     SendMessage(GetDlgItem(hwnd,IDC_SE_TXT),WM_SETTEXT,0,(LPARAM)(LPSTR)lpMyChkInf->szScratch);
  3466.     for(i=0;i<IDC_SE_CBUTTONS;i++) {
  3467. DestroyWindow(GetDlgItem(hwnd,IDC_SE_BUT1+i));
  3468.     }
  3469.     DestroyWindow(GetDlgItem(hwnd,IDC_SE_MOREINFO));
  3470.     DestroyWindow(GetDlgItem(hwnd,IDC_SE_HELP));
  3471.     DestroyWindow(GetDlgItem(hwnd,IDC_SE_CANCEL));
  3472.     // Since there is no CANCEL button now, but there was one
  3473.     // in the dialog template, we need to disable the close
  3474.     // menu item which will also disable the X close cookie in
  3475.     // in the title bar.
  3476.     hMenu = GetSystemMenu(hwnd,FALSE);
  3477.     if(hMenu)
  3478.     {
  3479. EnableMenuItem(hMenu,SC_CLOSE,MF_BYCOMMAND | MF_GRAYED);
  3480.     }
  3481.     SECrunchDlg(hwnd,lpMyChkInf->szScratch,lpMyChkInf);
  3482.     SetFocus(GetDlgItem(hwnd,IDC_SE_OK));
  3483.     SendDlgItemMessage(hwnd,IDC_SE_TXT,EM_SETSEL,1,0xFFFFFFFFL);
  3484.     return FALSE;
  3485. case WM_HELP:
  3486.     WinHelp((HWND) ((LPHELPINFO) lParam)->hItemHandle, NULL, HELP_WM_HELP,
  3487.     (DWORD) (LPSTR) MIaIds);
  3488.     return(TRUE);
  3489.     break;
  3490. case WM_CONTEXTMENU:
  3491.     WinHelp((HWND) wParam, NULL, HELP_CONTEXTMENU,
  3492.     (DWORD) (LPSTR) MIaIds);
  3493.     return(TRUE);
  3494.     break;
  3495. case WM_COMMAND:
  3496.     switch(wParam)
  3497.     {
  3498. case IDC_SE_OK:
  3499.     EndDialog(hwnd, IDC_SE_OK);
  3500.     return FALSE;
  3501.     break;
  3502.     }
  3503.     break;
  3504.     }
  3505.     return FALSE;
  3506. }
  3507. BOOL WINAPI SEDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  3508. {
  3509.     LPMYCHKINFOSTRUCT lpMyChkInf;
  3510.     DWORD       dwi;
  3511.     WORD       i;
  3512.     WORD       iChoice;
  3513.     LPEI       pEI;
  3514.     HWND       hWndT;
  3515.     lpMyChkInf = (LPMYCHKINFOSTRUCT)GetWindowLong(hwnd,DWL_USER);
  3516.     if(NULL != lpMyChkInf)
  3517. pEI = &rgEI[lpMyChkInf->iErr];
  3518.     switch(msg)
  3519.     {
  3520. case  WM_INITDIALOG:
  3521.     SetWindowLong(hwnd,DWL_USER,lParam);
  3522.     lpMyChkInf = (LPMYCHKINFOSTRUCT)lParam;
  3523.     pEI = &rgEI[lpMyChkInf->iErr];
  3524.     //BUGBUG  check return for possible failure in dlg stuff
  3525.     SEStuffDlg(hwnd,lpMyChkInf);
  3526.     //Set the default item
  3527.     if(lpMyChkInf->UseAltDefBut)
  3528. i = lpMyChkInf->AltDefButIndx;
  3529.     else
  3530. i = 0;
  3531.     if(pEI->cButtons)
  3532.     {
  3533. if(hWndT=GetDlgItem(hwnd,IDC_SE_BUT1+i))
  3534. {
  3535.     if(!IsWindowEnabled(hWndT))
  3536.     {
  3537. goto LookEnabled;
  3538.     }
  3539.     SendMessage(hWndT,BM_SETCHECK,1,0);
  3540. } else {
  3541. LookEnabled:
  3542.     for(i=0;i<pEI->cButtons;i++)
  3543.     {
  3544. if(IsWindowEnabled(GetDlgItem(hwnd,IDC_SE_BUT1+i)))
  3545.     break;
  3546.     }
  3547.     if(hWndT=GetDlgItem(hwnd,IDC_SE_BUT1+i))
  3548.     {
  3549. SendMessage(hWndT,BM_SETCHECK,1,0);
  3550.     } else {
  3551. // There are buttons, but none of them are enabled,
  3552. // so we can't fix this error.
  3553. if(!pEI->IsNoOk)
  3554. {
  3555.     EnableWindow(GetDlgItem(hwnd,IDC_SE_OK),FALSE);
  3556. }
  3557.     }
  3558. }
  3559.     }
  3560.     SECrunchDlg(hwnd,lpMyChkInf->szScratch,lpMyChkInf);
  3561.     if(pEI->OkIsContinue)
  3562.     {
  3563. if(lpMyChkInf->UseAltDlgTxt)
  3564. {
  3565.     if(pEI->IsAltHelpButton == ISHELPBALWAYS)
  3566.     {
  3567. i = IDC_SE_HELP;
  3568.     } else {
  3569. i = IDC_SE_OK;
  3570.     }
  3571. } else {
  3572.     if(pEI->IsHelpButton == ISHELPBALWAYS)
  3573.     {
  3574. i = IDC_SE_HELP;
  3575.     } else {
  3576. i = IDC_SE_OK;
  3577.     }
  3578. }
  3579.     } else if(pEI->IsNoOk) {
  3580. i = IDC_SE_HELP;
  3581.     } else if(lpMyChkInf->CancelIsDefault) {
  3582. i = IDC_SE_CANCEL;
  3583.     } else {
  3584. i = IDC_SE_OK;
  3585.     }
  3586.     if((i == IDC_SE_OK) &&
  3587.        (!IsWindowEnabled(GetDlgItem(hwnd,IDC_SE_OK))))
  3588.     {
  3589. i = IDC_SE_HELP;
  3590.     }
  3591.     SendDlgItemMessage(hwnd,i,BM_SETSTYLE,(WPARAM)BS_DEFPUSHBUTTON,FALSE);
  3592.     SetFocus(GetDlgItem(hwnd,i));
  3593.     SendDlgItemMessage(hwnd,IDC_SE_TXT,EM_SETSEL,1,0xFFFFFFFFL);
  3594.     if(pEI->cButtons)
  3595. lpMyChkInf->FixRet = MAKELONG(0,ERETIGN);
  3596.     else
  3597. lpMyChkInf->FixRet = MAKELONG(0,ERETIGN2);
  3598.     return FALSE;
  3599.     break;
  3600. case WM_HELP:
  3601.     WinHelp((HWND) ((LPHELPINFO) lParam)->hItemHandle, NULL, HELP_WM_HELP,
  3602.     (DWORD) (LPSTR) lpMyChkInf->aIds);
  3603.     return(TRUE);
  3604.     break;
  3605. case WM_CONTEXTMENU:
  3606.     WinHelp((HWND) wParam, NULL, HELP_CONTEXTMENU,
  3607.     (DWORD) (LPSTR) lpMyChkInf->aIds);
  3608.     return(TRUE);
  3609.     break;
  3610. case WM_COMMAND:
  3611.     switch(wParam)
  3612.     {
  3613. case IDC_SE_MOREINFO:
  3614.     DialogBoxParam(g_hInstance,
  3615.    MAKEINTRESOURCE(IDD_SE_DLG),
  3616.    hwnd,
  3617.    SEMIDlgProc,
  3618.    (LPARAM)lpMyChkInf);
  3619.     return FALSE;
  3620.     break;
  3621. case IDC_SE_HELP:
  3622.     if(lpMyChkInf->UseAltDlgTxt)
  3623.     {
  3624. dwi = pEI->AltHelpButtonID;
  3625.     } else {
  3626. dwi = pEI->HelpButtonID;
  3627.     }
  3628.     if((lpMyChkInf->UseAltCantFix) &&
  3629.        (HIWORD(lpMyChkInf->lParam2) & lpMyChkInf->AltCantFixTstFlag))
  3630.     {
  3631. dwi = lpMyChkInf->AltCantFixHID;
  3632.     }
  3633.     if(dwi != 0L)
  3634. WinHelp(hwnd, "windows.hlp>Proc4", HELP_CONTEXT, dwi);
  3635.     return FALSE;
  3636.     break;
  3637. case IDC_SE_OK:
  3638.     iChoice = 0;
  3639.     //
  3640.     // if cButtons == 0 (no radio buttons) iChoice will be 0
  3641.     //
  3642.     for (i = 0; i<pEI->cButtons;i++)
  3643.     {
  3644. if (IsDlgButtonChecked(hwnd,IDC_SE_BUT1+i))
  3645. {
  3646.     iChoice=i;
  3647.     break;
  3648. }
  3649.     }
  3650.     if((pEI->WarnCantFix)     &&
  3651.        (iChoice == pEI->FixButtIndx)  )
  3652.     {
  3653. if(lpMyChkInf->UseAltCantFix)
  3654. {
  3655.     if((HIWORD(lpMyChkInf->lParam2) & lpMyChkInf->AltCantFixTstFlag))
  3656.     {
  3657. goto DoCantFix;
  3658.     }
  3659. } else {
  3660.     if(pEI->CantFixTstIsRev)
  3661.     {
  3662. if(!(HIWORD(lpMyChkInf->lParam2) & pEI->CantFixTstFlag))
  3663. {
  3664.     goto DoCantFix;
  3665. }
  3666.     } else {
  3667. if(HIWORD(lpMyChkInf->lParam2) & pEI->CantFixTstFlag)
  3668. {
  3669. DoCantFix:
  3670.     MyChkdskMessageBox(lpMyChkInf, IDS_CANTFIX,
  3671.        MB_ICONINFORMATION | MB_OK);
  3672.     i = 0;
  3673.     while((i == pEI->FixButtIndx) || (i == pEI->DelButtIndx))
  3674. i++;
  3675.     SendDlgItemMessage(hwnd,IDC_SE_BUT1+pEI->FixButtIndx,BM_SETCHECK,0,0);
  3676.     SendDlgItemMessage(hwnd,IDC_SE_BUT1+i,BM_SETCHECK,1,0);
  3677.     EnableWindow(GetDlgItem(hwnd,IDC_SE_BUT1+pEI->FixButtIndx),FALSE);
  3678.     return FALSE;
  3679. }
  3680.     }
  3681. }
  3682.     }
  3683.     if((pEI->WarnCantDel)     &&
  3684.        (iChoice == pEI->DelButtIndx)  )
  3685.     {
  3686. if(HIWORD(lpMyChkInf->lParam2) & pEI->CantDelTstFlag)
  3687. {
  3688.     if(lpMyChkInf->IsFolder)
  3689.     {
  3690. i = IDS_CANTDELD;
  3691.     } else {
  3692. i = IDS_CANTDELF;
  3693.     }
  3694.     goto WarnDel;
  3695. }
  3696. if(lpMyChkInf->IsRootFolder)
  3697. {
  3698.     i = IDS_CANTDELROOT;
  3699. WarnDel:
  3700.     MyChkdskMessageBox(lpMyChkInf, i,
  3701.        MB_ICONINFORMATION | MB_OK);
  3702.     if(pEI->DelButtIndx)
  3703. i = 0;
  3704.     else
  3705. i = 1;
  3706.     if((pEI->WarnCantFix) && (i == pEI->FixButtIndx))
  3707.     {
  3708. while((i == pEI->FixButtIndx) || (i == pEI->DelButtIndx))
  3709.     i++;
  3710.     }
  3711.     SendDlgItemMessage(hwnd,IDC_SE_BUT1+pEI->DelButtIndx,BM_SETCHECK,0,0);
  3712.     SendDlgItemMessage(hwnd,IDC_SE_BUT1+i,BM_SETCHECK,1,0);
  3713.     EnableWindow(GetDlgItem(hwnd,IDC_SE_BUT1+pEI->DelButtIndx),FALSE);
  3714.     return FALSE;
  3715. }
  3716. if(lpMyChkInf->IsFolder)
  3717. {
  3718.     if(MyChkdskMessageBox(lpMyChkInf, IDS_DIRDEL,
  3719.   MB_ICONQUESTION | MB_OKCANCEL)
  3720. == IDCANCEL)
  3721.     {
  3722. return FALSE;
  3723.     }
  3724. }
  3725.     }
  3726.     lpMyChkInf->FixRet = MAKELONG(0,pEI->rgRet[iChoice]);
  3727.     DUMP ("Returning %d",pEI->rgRet[iChoice]);
  3728.     EndDialog(hwnd, IDC_SE_OK);
  3729.     return FALSE;
  3730.     break;
  3731. case IDC_SE_CANCEL:
  3732.     lpMyChkInf->FixRet=MAKELONG(0,ERETCAN);
  3733.     EndDialog(hwnd,IDC_SE_CANCEL);
  3734.     return FALSE;
  3735.     break;
  3736.     }
  3737.     break;
  3738.     }
  3739.     return FALSE;
  3740. }
  3741. typedef struct XLData_ {
  3742. LPMYCHKINFOSTRUCT lpMyChkInf;
  3743. WORD iSelected;
  3744. BOOL isDirDel;
  3745. } XLDATA, FAR *LPXLDATA;
  3746. BOOL WINAPI SEXLCantDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
  3747. {
  3748.     LPFATXLNKERR lpXLErr;
  3749.     LPDDXLNKERR  lpDDXLErr;
  3750.     WORD  i;
  3751.     HWND  hWndT;
  3752.     LPXLDATA  lpXLData;
  3753.     lpXLData = (LPXLDATA) GetWindowLong(hDlg,DWL_USER);
  3754.     switch(msg)
  3755.     {
  3756. case WM_INITDIALOG:
  3757.     SetWindowLong(hDlg,DWL_USER,lParam);
  3758.     lpXLData = (LPXLDATA) lParam;
  3759.     lpXLErr = (LPFATXLNKERR)lpXLData->lpMyChkInf->lParam3;
  3760.     lpDDXLErr = (LPDDXLNKERR)lpXLData->lpMyChkInf->lParam3;
  3761.     hWndT = GetDlgItem(hDlg,IDC_XL_LIST);
  3762.     if(lpXLData->lpMyChkInf->UseAltDlgTxt)
  3763.     {
  3764. for(i = 0; i < lpDDXLErr->DDXLnkFileCnt; i++)
  3765. {
  3766.     if(lpXLData->isDirDel)
  3767.     {
  3768. if((lpDDXLErr->DDXLnkList[i].FileAttributes & 0x10))
  3769. {
  3770.     SendMessage(hWndT, LB_ADDSTRING,0,
  3771.     (LPARAM)(LPSTR)lpDDXLErr->DDXLnkList[i].FileName);
  3772. }
  3773.     } else {
  3774. if((lpDDXLErr->DDXLnkList[i].Flags & (XFF_ISSYSFILE |
  3775.       XFF_ISSYSDIR)))
  3776. {
  3777.     SendMessage(hWndT, LB_ADDSTRING,0,
  3778.     (LPARAM)(LPSTR)lpDDXLErr->DDXLnkList[i].FileName);
  3779. }
  3780.     }
  3781. }
  3782.     } else {
  3783. for(i = 0; i < lpXLErr->XLnkFileCnt; i++)
  3784. {
  3785.     // lpXLData->iSelected == 0xFFFF if
  3786.     // delete or truncate ALL
  3787.     if(lpXLData->isDirDel)
  3788.     {
  3789. if ((i!=lpXLData->iSelected) &&
  3790. (lpXLErr->XLnkList[i].FileAttributes & 0x10))
  3791. {
  3792.     SendMessage(hWndT, LB_ADDSTRING,0,
  3793.     (LPARAM)(LPSTR)lpXLErr->XLnkList[i].FileName);
  3794. }
  3795.     } else {
  3796. if ((i!=lpXLData->iSelected) &&
  3797. (lpXLErr->XLnkList[i].Flags & (XFF_ISSYSFILE |
  3798.      XFF_ISSYSDIR)))
  3799. {
  3800.     SendMessage(hWndT, LB_ADDSTRING,0,
  3801.     (LPARAM)(LPSTR)lpXLErr->XLnkList[i].FileName);
  3802. }
  3803.     }
  3804. }
  3805.     }
  3806.     if(lpXLData->isDirDel)
  3807.     {
  3808. SetTextDCR(hDlg,
  3809. IDC_XL_CTXT,
  3810. IDS_CXL_DIRDEL,
  3811. lpXLData->lpMyChkInf->szScratch);
  3812. LoadString(g_hInstance, IDS_CXL_DIRTIT, (LPSTR)lpXLData->lpMyChkInf->szScratch,sizeof(lpXLData->lpMyChkInf->szScratch));
  3813. SetWindowText(hDlg,lpXLData->lpMyChkInf->szScratch);
  3814.     }
  3815.     return TRUE;
  3816.     break;
  3817. case WM_COMMAND:
  3818.     switch(wParam)
  3819.     {
  3820. case IDC_SE_OK:
  3821.     EndDialog(hDlg,TRUE);
  3822.     return FALSE;
  3823.     break;
  3824. case IDC_SE_CANCEL:
  3825.     EndDialog(hDlg,FALSE);
  3826.     return FALSE;
  3827.     break;
  3828.     }
  3829.     break;
  3830.     }
  3831.     return FALSE;
  3832. }
  3833. BOOL WINAPI SEXLDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  3834. {
  3835.     LPMYCHKINFOSTRUCT lpMyChkInf;
  3836.     LPFATXLNKERR      lpXLErr;
  3837.     LPDDXLNKERR       lpDDXLErr;
  3838.     DWORD       dwi;
  3839.     DWORD       dwj;
  3840.     WORD       i;
  3841.     WORD       j;
  3842.     WORD       k;
  3843.     WORD       iChoice;
  3844.     HWND       hWndT;
  3845.     XLDATA       xlData;
  3846.     WORD       lowRet;
  3847.     lpMyChkInf = (LPMYCHKINFOSTRUCT)GetWindowLong(hwnd,DWL_USER);
  3848.     switch(msg)
  3849.     {
  3850. case  WM_INITDIALOG:
  3851.     SetWindowLong(hwnd,DWL_USER,lParam);
  3852.     lpMyChkInf = (LPMYCHKINFOSTRUCT)lParam;
  3853.     lpMyChkInf->MultCantDelFiles = FALSE;
  3854.     if(lpMyChkInf->UseAltDlgTxt)
  3855.     {
  3856. FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  3857.       (LPVOID)g_hInstance,
  3858.       ISTR_XL_ALTTXT1,
  3859.       0,
  3860.       (LPSTR)&lpMyChkInf->szScratch,
  3861.       szScratchMax,
  3862.       (LPDWORD)&lpMyChkInf->rgdwArgs);
  3863. SendMessage(GetDlgItem(hwnd,IDC_XL_TXT1),WM_SETTEXT,0,
  3864.     (LPARAM)(LPSTR)lpMyChkInf->szScratch);
  3865. j = 0;
  3866. for (i=0;i<2;i++)
  3867. {
  3868.     lpMyChkInf->szScratch[j] = '';
  3869.     FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
  3870.   (LPVOID)g_hInstance,
  3871.   ISTR_XL_ALTTXT2A + i,
  3872.   0,
  3873.   (LPSTR)&lpMyChkInf->szScratch[j],
  3874.   szScratchMax-j,
  3875.   (LPDWORD)&lpMyChkInf->rgdwArgs);
  3876.     j = lstrlen(lpMyChkInf->szScratch);
  3877. }
  3878. SendMessage(GetDlgItem(hwnd,IDC_XL_TXT2),WM_SETTEXT,0,
  3879.     (LPARAM)(LPSTR)lpMyChkInf->szScratch);
  3880. SetTextDCR(hwnd,
  3881.    IDC_XL_BUT1,
  3882.    ISTR_XL_ALTBUTTREP,
  3883.    lpMyChkInf->szScratch);
  3884. SetTextDCR(hwnd,
  3885.    IDC_XL_BUT1 + 1,
  3886.    ISTR_XL_ALTBUTTDEL,
  3887.    lpMyChkInf->szScratch);
  3888. SetTextDCR(hwnd,
  3889.    IDC_XL_BUT1 + 2,
  3890.    ISTR_SE_IGNORE,
  3891.    lpMyChkInf->szScratch);
  3892. for(i=3;i<6;i++)
  3893.     DestroyWindow(GetDlgItem(hwnd,IDC_XL_BUT1+i));
  3894. SECrunchXLDDDlg(hwnd);
  3895.     }
  3896.     lpMyChkInf->FixRet = MAKELONG(0,ERETIGN);
  3897.     SEStuffTitle(hwnd,lpMyChkInf, ISTR_XL_TITLE);
  3898.     lpXLErr = (LPFATXLNKERR)lpMyChkInf->lParam3;
  3899.     lpDDXLErr = (LPDDXLNKERR)lpMyChkInf->lParam3;
  3900.     hWndT = GetDlgItem(hwnd, IDC_XL_LIST);
  3901.     SendMessage(hWndT, LB_RESETCONTENT, 0, 0L);
  3902.     j = 0xFFFF;
  3903.     if(lpMyChkInf->UseAltDlgTxt)
  3904.     {
  3905. dwi = 0L;
  3906. k = 0;
  3907. for(i = 0; i < lpDDXLErr->DDXLnkFileCnt; i++)
  3908. {
  3909.     // Filter out internal cross links to self
  3910.     for(j = 0; j < i; j++)
  3911.     {
  3912. if(lpDDXLErr->DDXLnkList[i].FileFirstCluster == lpDDXLErr->DDXLnkList[j].FileFirstCluster)
  3913.     goto SkipIt;
  3914.     }
  3915.     SendMessage(hWndT, LB_ADDSTRING,0,(LPARAM)(LPSTR)lpDDXLErr->DDXLnkList[i].FileName);
  3916.     SendMessage(hWndT, LB_SETITEMDATA,k,(LPARAM)(DWORD)i);
  3917.     k++;
  3918.     if(lpDDXLErr->DDXLnkList[i].Flags != 0)
  3919.     {
  3920. if(dwi)
  3921.     lpMyChkInf->MultCantDelFiles = TRUE;
  3922. dwi++;
  3923.     }
  3924. SkipIt:
  3925.     ;
  3926. }
  3927. // See if any of the xlinked clusters/MDFAT entries are LOST
  3928. for(i = 0; i < lpDDXLErr->DDXLnkClusCnt; i++)
  3929. {
  3930.     for(j = 0; j < lpDDXLErr->DDXLnkFileCnt; j++)
  3931.     {
  3932. if(lpDDXLErr->DDXLnkList[j].LastSecNumNotXLnked ==
  3933.    lpDDXLErr->DDXLnkClusterList[i])
  3934. {
  3935.     break;
  3936. }
  3937.     }
  3938.     if(j >= lpDDXLErr->DDXLnkFileCnt)
  3939.     {
  3940. LoadString(g_hInstance, IDS_XLNOFIL,
  3941.    lpMyChkInf->szScratch,
  3942.    sizeof(lpMyChkInf->szScratch));
  3943. SendMessage(hWndT, LB_ADDSTRING,0,
  3944.     (LPARAM)(LPSTR)lpMyChkInf->szScratch);
  3945. // Following sets item data of this item to LB_ERR
  3946. SendMessage(hWndT, LB_SETITEMDATA,k,(LPARAM)0xFFFFFFFFL);
  3947. k++;
  3948. goto DoneLstChk;
  3949.     }
  3950. }
  3951. DoneLstChk:
  3952. ;
  3953.     } else {
  3954. dwi = 0L;
  3955. for(i = 0; i < lpXLErr->XLnkFileCnt; i++)
  3956. {
  3957.     SendMessage(hWndT, LB_ADDSTRING,0,(LPARAM)(LPSTR)lpXLErr->XLnkList[i].FileName);
  3958.     SendMessage(hWndT, LB_SETITEMDATA,i,(LPARAM)(DWORD)i);
  3959.     if(lpXLErr->XLnkList[i].Flags != 0)
  3960.     {
  3961. if(dwi)
  3962.     lpMyChkInf->MultCantDelFiles = TRUE;
  3963. dwi++;
  3964.     }
  3965.     if((j == 0xFFFF) && (lpXLErr->XLnkList[i].Flags != 0))
  3966.     {
  3967. j = i;
  3968.     }
  3969. }
  3970.     }
  3971.     if(j == 0xFFFF)
  3972.     {
  3973. if(!lpMyChkInf->UseAltDlgTxt)
  3974. {
  3975.     for(i = 0; i < lpXLErr->XLnkFileCnt; i++)
  3976.     {
  3977. if(lpXLErr->XLnkList[i].FileAttributes & 0x10)
  3978. {
  3979.     j = i;
  3980.     break;
  3981. }
  3982.     }
  3983. }
  3984. if(j == 0xFFFF)
  3985. {
  3986.     j = 0;
  3987. }
  3988.     }
  3989.     if(!(HIWORD(lpMyChkInf->lParam2) & ERRCANTDEL))
  3990.     {
  3991. DestroyWindow(GetDlgItem(hwnd,IDC_SE_HELP));
  3992.     } else {
  3993. EnableWindow(GetDlgItem(hwnd,IDC_XL_BUT1+1),FALSE);
  3994. if(!lpMyChkInf->UseAltDlgTxt)
  3995. {
  3996.     EnableWindow(GetDlgItem(hwnd,IDC_XL_BUT1+2),FALSE);
  3997.     if(lpMyChkInf->MultCantDelFiles)
  3998.     {
  3999. EnableWindow(GetDlgItem(hwnd,IDC_XL_BUT1),FALSE);
  4000. EnableWindow(GetDlgItem(hwnd,IDC_XL_BUT1+3),FALSE);
  4001. EnableWindow(GetDlgItem(hwnd,IDC_XL_BUT1+4),FALSE);
  4002.     }
  4003. }
  4004.     }
  4005.     SendMessage(hWndT, LB_SETCURSEL, j, (LONG)NULL);
  4006.     if(lpMyChkInf->UseAltDefBut)
  4007. i = lpMyChkInf->AltDefButIndx;
  4008.     else
  4009. i = 0;
  4010.     if((!lpMyChkInf->UseAltDlgTxt) &&
  4011.        (!IsWindowEnabled(GetDlgItem(hwnd,IDC_XL_BUT1+i))))
  4012.     {
  4013. for(i=0;i<6;i++)
  4014. {
  4015.     if(IsWindowEnabled(GetDlgItem(hwnd,IDC_XL_BUT1+i)))
  4016. break;
  4017. }
  4018.     }
  4019.     if(hWndT=GetDlgItem(hwnd,IDC_XL_BUT1+i))
  4020.     {
  4021. SendMessage(hWndT,BM_SETCHECK,1,0);
  4022.     }
  4023.     return(TRUE);
  4024.     break;
  4025. case WM_HELP:
  4026.     if(lpMyChkInf->UseAltDlgTxt)
  4027.     {
  4028. WinHelp((HWND) ((LPHELPINFO) lParam)->hItemHandle, NULL, HELP_WM_HELP,
  4029. (DWORD) (LPSTR) XLaIdsAlt);
  4030.     } else {
  4031. WinHelp((HWND) ((LPHELPINFO) lParam)->hItemHandle, NULL, HELP_WM_HELP,
  4032. (DWORD) (LPSTR) XLaIds);
  4033.     }
  4034.     return(TRUE);
  4035.     break;
  4036. case WM_CONTEXTMENU:
  4037.     if(lpMyChkInf->UseAltDlgTxt)
  4038.     {
  4039. WinHelp((HWND) wParam, NULL, HELP_CONTEXTMENU,
  4040. (DWORD) (LPSTR) XLaIdsAlt);
  4041.     } else {
  4042. WinHelp((HWND) wParam, NULL, HELP_CONTEXTMENU,
  4043. (DWORD) (LPSTR) XLaIds);
  4044.     }
  4045.     return(TRUE);
  4046.     break;
  4047. case WM_COMMAND:
  4048.     switch (wParam) {
  4049. case IDC_SE_HELP:
  4050.     WinHelp(hwnd, "windows.hlp>Proc4", HELP_CONTEXT,(DWORD)IDH_SCANDISK);
  4051.     return FALSE;
  4052.     break;
  4053.  case IDC_SE_OK:
  4054.     iChoice = 0;
  4055.     for(i = 0; i<6;i++) {
  4056. if(IsDlgButtonChecked(hwnd,IDC_XL_BUT1+i))
  4057. {
  4058.     iChoice=i;
  4059.     break;
  4060. }
  4061.     }
  4062.     if(lpMyChkInf->UseAltDlgTxt)
  4063.     {
  4064. lowRet = 0;
  4065.     } else {
  4066. lowRet = (WORD) SendDlgItemMessage(hwnd,IDC_XL_LIST,LB_GETCURSEL,(WPARAM)0,(LPARAM)0);
  4067.     }
  4068.     //Make sure that we can delete all files that user asks us to
  4069.     //Warn the user if we can't.
  4070.     lpXLErr = (LPFATXLNKERR)lpMyChkInf->lParam3;
  4071.     lpDDXLErr = (LPDDXLNKERR)lpMyChkInf->lParam3;
  4072.     if (HIWORD(lpMyChkInf->lParam2) & ERRCANTDEL)
  4073.     {
  4074. if(lpMyChkInf->UseAltDlgTxt)
  4075. {
  4076.     if((iChoice >= 2) || (0==iChoice))
  4077.     {
  4078. // Ignore, Make Copy
  4079. goto CanDeleteAll;
  4080.     } else {
  4081. xlData.iSelected=0xFFFF;
  4082. goto CantDeleteAll2;
  4083.     }
  4084. } else {
  4085.     if((5==iChoice) || (0==iChoice))
  4086.     {
  4087. // Ignore, Make Copy
  4088. goto CanDeleteAll;
  4089.     } else if ((1==iChoice) || (2==iChoice)) {
  4090. //All files deleted or truncated
  4091. xlData.iSelected=0xFFFF;
  4092. goto CantDeleteAll2;
  4093.     } else {
  4094. //Check non-selected files
  4095. j = lowRet;
  4096.     }
  4097.     for(i=0;i<lpXLErr->XLnkFileCnt;i++)
  4098.     {
  4099. if ((i!=j) &&
  4100.     (lpXLErr->XLnkList[i].Flags & (XFF_ISSYSDIR |
  4101.    XFF_ISSYSFILE)))
  4102.     goto CantDeleteAll;
  4103.     }
  4104. }
  4105. goto CanDeleteAll;
  4106. CantDeleteAll:
  4107. xlData.iSelected=lowRet;
  4108. CantDeleteAll2:
  4109. xlData.lpMyChkInf=lpMyChkInf;
  4110. xlData.isDirDel=FALSE;
  4111. if(!DialogBoxParam(g_hInstance,
  4112.    MAKEINTRESOURCE(IDD_XL_CANT),
  4113.    hwnd,
  4114.    SEXLCantDlgProc,
  4115.    (LPARAM)(LPXLDATA)&xlData))
  4116. {
  4117.     return FALSE;  // Don't end the dialog if the user cancels
  4118. }
  4119.     }  // If ERRCANTDEL  . . .
  4120. CanDeleteAll:
  4121.     if(lpMyChkInf->UseAltDlgTxt)
  4122.     {
  4123. if((iChoice >= 2) || (0==iChoice))
  4124. {
  4125.     // Ignore, Make Copy
  4126.     goto CanDelDir;
  4127. }
  4128. for(i=0;i<lpDDXLErr->DDXLnkFileCnt;i++)
  4129. {
  4130.     if(lpDDXLErr->DDXLnkList[i].FileAttributes & 0x10)
  4131.     {
  4132. xlData.iSelected=0xFFFF;
  4133. goto CantDelDir2;
  4134.     }
  4135. }
  4136. goto CanDelDir;
  4137.     } else {
  4138. if (HIWORD(lpMyChkInf->lParam2) & ERRXLNKDIR)
  4139. {
  4140.     if((5==iChoice) || (0==iChoice) || (2==iChoice) || (4==iChoice))
  4141.     {
  4142. // Ignore, Make Copy, either truncate
  4143. goto CanDelDir;
  4144.     } else if (1==iChoice) {  //All files deleted
  4145. xlData.iSelected=0xFFFF;
  4146. goto CantDelDir2;
  4147.     } else {
  4148. j = lowRet;   //Check non-selected files
  4149.     }
  4150.     for(i=0;i<lpXLErr->XLnkFileCnt;i++)
  4151.     {
  4152. if ((i!=j) &&
  4153.     (lpXLErr->XLnkList[i].FileAttributes & 0x10))
  4154. {
  4155.     goto CantDelDir;
  4156. }
  4157.     }
  4158.     goto CanDelDir;
  4159. CantDelDir:
  4160.     xlData.iSelected=lowRet;
  4161. CantDelDir2:
  4162.     xlData.lpMyChkInf=lpMyChkInf;
  4163.     xlData.isDirDel=TRUE;
  4164.     if(!DialogBoxParam(g_hInstance,
  4165.        MAKEINTRESOURCE(IDD_XL_CANT),
  4166.        hwnd,
  4167.        SEXLCantDlgProc,
  4168.        (LPARAM)(LPXLDATA)&xlData))
  4169.     {
  4170. return FALSE;  // Don't end the dialog if the user cancels
  4171.     }
  4172. }  // If ERRXLNKDIR
  4173.     } // if lpMyChkInf->UseAltDlgTxt
  4174. CanDelDir:
  4175.     // If the response doesn't have to select a file to
  4176.     // salvage, then we have to return a loword of 0.
  4177.     // Hence the ANDing in the low word
  4178.     if(lpMyChkInf->UseAltDlgTxt)
  4179.     {
  4180. lpMyChkInf->FixRet=MAKELONG(
  4181.     LOWORD(XLrgRetAlt[iChoice]&lowRet),HIWORD(XLrgRetAlt[iChoice]));
  4182.     } else {
  4183. lpMyChkInf->FixRet=MAKELONG(
  4184.     LOWORD(XLrgRet[iChoice]&lowRet),HIWORD(XLrgRet[iChoice]));
  4185.     }
  4186.     EndDialog(hwnd, IDC_SE_OK);
  4187.     return FALSE;
  4188. case IDC_SE_CANCEL:
  4189.     lpMyChkInf->FixRet=MAKELONG(0,ERETCAN);
  4190.     EndDialog(hwnd,IDC_SE_CANCEL);
  4191.     return FALSE;
  4192. case IDC_XL_LIST:
  4193.     hWndT = (HWND)LOWORD(lParam);
  4194.     switch(HIWORD(lParam))
  4195.     {
  4196. case LBN_SELCHANGE:
  4197.     if((!lpMyChkInf->UseAltDlgTxt)   &&
  4198.        (HIWORD(lpMyChkInf->lParam2) & ERRCANTDEL) &&
  4199.        (!lpMyChkInf->MultCantDelFiles)     )
  4200.     {
  4201. lpXLErr = (LPFATXLNKERR)lpMyChkInf->lParam3;
  4202. dwi = SendMessage(hWndT,LB_GETCOUNT,0,0L);
  4203. k = 0;
  4204. for(i = 0; i < LOWORD(dwi); i++)
  4205. {
  4206.     dwj = SendMessage(hWndT,LB_GETSEL,i,0L);
  4207.     if(dwj != LB_ERR)
  4208.     {
  4209. if(!dwj)  // Not selected item
  4210. {
  4211.     dwj = SendMessage(hWndT,LB_GETITEMDATA,i,0L);
  4212.     if(dwj != LB_ERR)
  4213.     {
  4214.  if((LOWORD(dwj) < lpXLErr->XLnkFileCnt) &&
  4215.     (lpXLErr->XLnkList[LOWORD(dwj)].Flags != 0))
  4216.  {
  4217.      k++;
  4218.  }
  4219.     }
  4220. }
  4221.     }
  4222. }
  4223. iChoice = 0;
  4224. for(i = 0; i<6;i++) {
  4225.     if(IsDlgButtonChecked(hwnd,IDC_XL_BUT1+i))
  4226.     {
  4227. iChoice=i;
  4228. break;
  4229.     }
  4230. }
  4231. if(k)
  4232. {
  4233.     if((iChoice == 3) || (iChoice == 4))
  4234.     {
  4235. if(hWndT=GetDlgItem(hwnd,IDC_XL_BUT1+iChoice))
  4236. {
  4237.     SendMessage(hWndT,BM_SETCHECK,0,0);
  4238. }
  4239.     }
  4240.     EnableWindow(GetDlgItem(hwnd,IDC_XL_BUT1+3),FALSE);
  4241.     EnableWindow(GetDlgItem(hwnd,IDC_XL_BUT1+4),FALSE);
  4242.     if((iChoice == 3) || (iChoice == 4))
  4243.     {
  4244. for(i=0;i<6;i++)
  4245. {
  4246.     if(IsWindowEnabled(GetDlgItem(hwnd,IDC_XL_BUT1+i)))
  4247. break;
  4248. }
  4249. if(hWndT=GetDlgItem(hwnd,IDC_XL_BUT1+i))
  4250. {
  4251.     SendMessage(hWndT,BM_SETCHECK,1,0);
  4252. }
  4253.     }
  4254. } else {
  4255.     EnableWindow(GetDlgItem(hwnd,IDC_XL_BUT1+3),TRUE);
  4256.     EnableWindow(GetDlgItem(hwnd,IDC_XL_BUT1+4),TRUE);
  4257. }
  4258.     }
  4259.     break;
  4260. default:
  4261.     break;
  4262.     }
  4263.     break;
  4264.     } // Switch (wParam) in WM_COMMAND
  4265.     }  //Switch (msg)
  4266.     return FALSE;
  4267. }