updated for version 7.4.512
Problem:    Cannot generate prototypes for Win32 files and VMS.
Solution:   Add typedefs and #ifdef
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 374ed47..b81a74d 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -29,12 +29,14 @@
 # include "gui_dwrite.h"
 #endif
 
-#if defined(FEAT_DIRECTX) || defined(PROTO)
+#if defined(FEAT_DIRECTX)
 static DWriteContext *s_dwc = NULL;
 static int s_directx_enabled = 0;
 static int s_directx_load_attempted = 0;
 # define IS_ENABLE_DIRECTX() (s_directx_enabled && s_dwc != NULL)
+#endif
 
+#if defined(FEAT_DIRECTX) || defined(PROTO)
     int
 directx_enabled(void)
 {
diff --git a/src/os_vms.c b/src/os_vms.c
index 55876b2..12eceed 100644
--- a/src/os_vms.c
+++ b/src/os_vms.c
@@ -12,7 +12,7 @@
 #include	"vim.h"
 
 /* define _generic_64 for use in time functions */
-#ifndef VAX
+#if !defined(VAX) && !defined(PROTO)
 #   include <gen64def.h>
 #else
 /* based on Alpha's gen64def.h; the file is absent on VAX */
diff --git a/src/os_win32.c b/src/os_win32.c
index fcfafa0..9395638 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -135,6 +135,8 @@
 typedef int SE_OBJECT_TYPE;
 typedef int PSNSECINFO;
 typedef int PSNSECINFOW;
+typedef int STARTUPINFO;
+typedef int PROCESS_INFORMATION;
 #endif
 
 #ifndef FEAT_GUI_W32
diff --git a/src/version.c b/src/version.c
index f2b1ca7..2aaef3c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    512,
+/**/
     511,
 /**/
     510,