Browse Source

KWSys: Fix process tree kill on 64-bit Windows

We enumerate processes to identify those whose parent is being killed so
that we can recursively kill the children.  Enumeration uses the
Process32(First|Next) windows API functions, which accept PROCESSENTRY32
objects to be filled.  This commit corrects the declaration of the entry
structure to account for its size on 64-bit Windows.
Brad King 16 years ago
parent
commit
2aaa967715
1 changed files with 6 additions and 1 deletions
  1. 6 1
      Source/kwsys/ProcessWin32.c

+ 6 - 1
Source/kwsys/ProcessWin32.c

@@ -2516,6 +2516,11 @@ struct _SYSTEM_PROCESS_INFORMATION
 /*--------------------------------------------------------------------------*/
 /* Toolhelp32 API definitions.  */
 #define TH32CS_SNAPPROCESS  0x00000002
+#if defined(_WIN64)
+typedef unsigned __int64 ProcessULONG_PTR;
+#else
+typedef unsigned long ProcessULONG_PTR;
+#endif
 typedef struct tagPROCESSENTRY32 PROCESSENTRY32;
 typedef PROCESSENTRY32* LPPROCESSENTRY32;
 struct tagPROCESSENTRY32
@@ -2523,7 +2528,7 @@ struct tagPROCESSENTRY32
   DWORD dwSize;
   DWORD cntUsage;
   DWORD th32ProcessID;
-  DWORD th32DefaultHeapID;
+  ProcessULONG_PTR th32DefaultHeapID;
   DWORD th32ModuleID;
   DWORD cntThreads;
   DWORD th32ParentProcessID;