diff -ur globus_xio_popen_driver-0.7.orig/globus_xio_popen_driver.c globus_xio_popen_driver-0.7/globus_xio_popen_driver.c
--- globus_xio_popen_driver-0.7.orig/globus_xio_popen_driver.c	2010-01-07 00:46:52.000000000 +0100
+++ globus_xio_popen_driver-0.7/globus_xio_popen_driver.c	2010-03-07 16:08:38.672301504 +0100
@@ -19,11 +19,17 @@
 #include "version.h"
 #include <stdio.h>
 #include <sys/types.h>
+#ifndef WIN32
 #include <sys/wait.h>
+#endif
 
 #define USE_SOCKET_PAIR 1
 #define GLOBUS_L_XIO_POPEN_WAITPID_DELAY 500
 
+#ifdef WIN32
+#define WNOHANG 0
+#endif
+
 GlobusDebugDefine(GLOBUS_XIO_POPEN);
 
 #define GlobusXIOPOpenDebugPrintf(level, message)                            \
@@ -491,7 +497,9 @@
     globus_result_t                     result;
     GlobusXIOName(globus_l_xio_popen_init_child_pipe);
 
+#ifndef WIN32
     fcntl(fd, F_SETFD, FD_CLOEXEC);
+#endif
 
     result = globus_xio_system_file_init(out_system, fd);
     if(result != GLOBUS_SUCCESS)
@@ -531,6 +539,9 @@
     
     GlobusXIOPOpenDebugEnter();
     
+#ifdef WIN32
+    result = GlobusXIOErrorSystemResource("not available for windows");
+#else
     attr = (xio_l_popen_attr_t *) 
         driver_attr ? driver_attr : &xio_l_popen_attr_default;
 
@@ -678,6 +689,7 @@
 error_in_pipe:
     globus_l_xio_popen_handle_destroy(handle);
 error_handle:
+#endif
     GlobusXIOPOpenDebugExitWithError();
     return result;
 }
@@ -710,6 +722,9 @@
     globus_reltime_t                    delay;
     GlobusXIOName(globus_l_popen_waitpid);
 
+#ifdef WIN32
+    result = GlobusXIOErrorSystemResource("not available for windows");
+#else
     rc = waitpid(handle->pid, &status, opts);
     if(rc > 0)
     {
@@ -815,6 +830,7 @@
             handle);         
     }
 
+#endif
     GlobusXIOPOpenDebugExit();
 }
 
