diff --git a/files/dos_fs.c b/files/dos_fs.c
index 39b270f..8af8ff1 100644
--- a/files/dos_fs.c
+++ b/files/dos_fs.c
@@ -705,7 +705,7 @@
 /**************************************************************************
  *         DOSFS_CreateCommPort
  */
-static HANDLE DOSFS_CreateCommPort(LPCSTR name, DWORD access, DWORD attributes)
+static HANDLE DOSFS_CreateCommPort(LPCSTR name, DWORD access, DWORD attributes, LPSECURITY_ATTRIBUTES sa)
 {
     HANDLE ret;
     char devname[40];
@@ -723,7 +723,7 @@
     SERVER_START_VAR_REQ( create_serial, len )
     {
         req->access  = access;
-        req->inherit = 0;  /*FIXME*/
+        req->inherit = (sa && (sa->nLength>=sizeof(*sa)) && sa->bInheritHandle);
         req->attributes = attributes;
         req->sharing = FILE_SHARE_READ|FILE_SHARE_WRITE;
         memcpy( server_data_ptr(req), devname, len );
@@ -746,7 +746,7 @@
  * Open a DOS device. This might not map 1:1 into the UNIX device concept.
  * Returns 0 on failure.
  */
-HANDLE DOSFS_OpenDevice( const char *name, DWORD access, DWORD attributes )
+HANDLE DOSFS_OpenDevice( const char *name, DWORD access, DWORD attributes, LPSECURITY_ATTRIBUTES sa )
 {
     int i;
     const char *p;
@@ -765,7 +765,7 @@
 	    	/* got it */
 		if (!strcmp(DOSFS_Devices[i].name,"NUL"))
                     return FILE_CreateFile( "/dev/null", access,
-                                            FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,
+                                            FILE_SHARE_READ|FILE_SHARE_WRITE, sa,
                                             OPEN_EXISTING, 0, 0, TRUE );
 		if (!strcmp(DOSFS_Devices[i].name,"CON")) {
 			HANDLE to_dup;
@@ -781,17 +781,19 @@
 				return 0;
 			}
 			if (!DuplicateHandle( GetCurrentProcess(), to_dup, GetCurrentProcess(),
-					      &handle, 0, FALSE, DUPLICATE_SAME_ACCESS ))
+					      &handle, 0, 
+					      sa && (sa->nLength>=sizeof(*sa)) && sa->bInheritHandle, 
+					      DUPLICATE_SAME_ACCESS ))
 			    handle = 0;
 			return handle;
 		}
 		if (!strcmp(DOSFS_Devices[i].name,"SCSIMGR$") ||
                     !strcmp(DOSFS_Devices[i].name,"HPSCAN"))
                 {
-                    return FILE_CreateDevice( i, access, NULL );
+                    return FILE_CreateDevice( i, access, sa );
 		}
 
-                if( (handle=DOSFS_CreateCommPort(DOSFS_Devices[i].name,access,attributes)) )
+                if( (handle=DOSFS_CreateCommPort(DOSFS_Devices[i].name,access,attributes,sa)) )
                     return handle;
                 FIXME("device open %s not supported (yet)\n",DOSFS_Devices[i].name);
     		return 0;
diff --git a/files/file.c b/files/file.c
index 8f5d3e4..49becca 100644
--- a/files/file.c
+++ b/files/file.c
@@ -488,7 +488,7 @@
     {
         TRACE("opening device '%s'\n", filename );
 
-        if (!(ret = DOSFS_OpenDevice( filename, access, attributes )))
+        if (!(ret = DOSFS_OpenDevice( filename, access, attributes, sa )))
         {
             /* Do not silence this please. It is a critical error. -MM */
             ERR("Couldn't open device '%s'!\n",filename);
