[NPFS-NEW]: Activate NPFS-NEW. Let's see what happens.
authorAlex Ionescu <aionescu@gmail.com>
Fri, 13 Sep 2013 08:01:10 +0000 (08:01 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Fri, 13 Sep 2013 08:01:10 +0000 (08:01 +0000)
svn path=/trunk/; revision=60072

reactos/dll/win32/kernel32/client/file/npipe.c
reactos/drivers/filesystems/CMakeLists.txt
reactos/drivers/filesystems/npfs_new/CMakeLists.txt

index 1844ef4..4e33fc6 100644 (file)
@@ -14,8 +14,6 @@
 #include <debug.h>
 DEBUG_CHANNEL(kernel32file);
 
-//#define USING_PROPER_NPFS_WAIT_SEMANTICS
-
 /* GLOBALS ********************************************************************/
 
 LONG ProcessPipeId;
@@ -151,7 +149,6 @@ CreateNamedPipeA(LPCSTR lpName,
                                           lpSecurityAttributes);
 }
 
-
 /*
  * @implemented
  */
@@ -339,7 +336,6 @@ CreateNamedPipeW(LPCWSTR lpName,
     return PipeHandle;
 }
 
-
 /*
  * @implemented
  */
@@ -364,17 +360,6 @@ WaitNamedPipeA(LPCSTR lpNamedPipeName,
     return r;
 }
 
-
-/*
- * When NPFS will work properly, use this code instead. It is compatible with
- * Microsoft's NPFS.SYS. The main difference is that:
- *      - This code actually respects the timeout instead of ignoring it!
- *      - This code validates and creates the proper names for both UNC and local pipes
- *      - On NT, you open the *root* pipe directory (either \DosDevices\Pipe or
- *        \DosDevices\Unc\Server\Pipe) and then send the pipe to wait on in the
- *        FILE_PIPE_WAIT_FOR_BUFFER structure.
- */
-#ifdef USING_PROPER_NPFS_WAIT_SEMANTICS
 /*
  * @implemented
  */
@@ -559,96 +544,6 @@ WaitNamedPipeW(LPCWSTR lpNamedPipeName,
     /* Success */
     return TRUE;
 }
-#else
-/*
- * @implemented
- */
-BOOL
-WINAPI
-WaitNamedPipeW(LPCWSTR lpNamedPipeName,
-               DWORD nTimeOut)
-{
-    UNICODE_STRING NamedPipeName;
-    NTSTATUS Status;
-    OBJECT_ATTRIBUTES ObjectAttributes;
-    FILE_PIPE_WAIT_FOR_BUFFER WaitPipe;
-    HANDLE FileHandle;
-    IO_STATUS_BLOCK Iosb;
-
-    if (RtlDosPathNameToNtPathName_U(lpNamedPipeName,
-                                     &NamedPipeName,
-                                     NULL,
-                                     NULL) == FALSE)
-    {
-        return FALSE;
-    }
-
-    InitializeObjectAttributes(&ObjectAttributes,
-                               &NamedPipeName,
-                               OBJ_CASE_INSENSITIVE,
-                               NULL,
-                               NULL);
-    Status = NtOpenFile(&FileHandle,
-                        FILE_READ_ATTRIBUTES | SYNCHRONIZE,
-                        &ObjectAttributes,
-                        &Iosb,
-                        FILE_SHARE_READ | FILE_SHARE_WRITE,
-                        FILE_SYNCHRONOUS_IO_NONALERT);
-    if (!NT_SUCCESS(Status))
-    {
-        BaseSetLastNTError(Status);
-        RtlFreeUnicodeString(&NamedPipeName);
-        return FALSE;
-    }
-
-    /* Check what timeout we got */
-    if (nTimeOut == NMPWAIT_WAIT_FOREVER)
-    {
-        /* Don't use a timeout */
-        WaitPipe.TimeoutSpecified = FALSE;
-    }
-    else
-    {
-        /* Check if default */
-        if (nTimeOut == NMPWAIT_USE_DEFAULT_WAIT)
-        {
-            /* Set it to 0 */
-            WaitPipe.Timeout.LowPart = 0;
-            WaitPipe.Timeout.HighPart = 0;
-        }
-        else
-        {
-            /* Convert to NT format */
-            WaitPipe.Timeout.QuadPart = UInt32x32To64(-10000, nTimeOut);
-        }
-
-        /* In both cases, we do have a timeout */
-        WaitPipe.TimeoutSpecified = TRUE;
-    }
-
-    Status = NtFsControlFile(FileHandle,
-                             NULL,
-                             NULL,
-                             NULL,
-                             &Iosb,
-                             FSCTL_PIPE_WAIT,
-                             &WaitPipe,
-                             sizeof(WaitPipe),
-                             NULL,
-                             0);
-    NtClose(FileHandle);
-    if (!NT_SUCCESS(Status))
-    {
-        BaseSetLastNTError(Status);
-        RtlFreeUnicodeString(&NamedPipeName);
-        return FALSE;
-    }
-
-    RtlFreeUnicodeString(&NamedPipeName);
-    return TRUE;
-}
-#endif
-
 
 /*
  * @implemented
@@ -1305,7 +1200,6 @@ TransactNamedPipe(IN HANDLE hNamedPipe,
     }
     else
     {
-#if 0 /* We don't implement FSCTL_PIPE_TRANSCEIVE yet */
         IO_STATUS_BLOCK Iosb;
 
         Status = NtFsControlFile(hNamedPipe,
@@ -1339,34 +1233,6 @@ TransactNamedPipe(IN HANDLE hNamedPipe,
             BaseSetLastNTError(Status);
             return FALSE;
         }
-#else /* Workaround while FSCTL_PIPE_TRANSCEIVE not available */
-        DWORD nActualBytes;
-
-        while (0 != nInBufferSize &&
-               WriteFile(hNamedPipe, lpInBuffer, nInBufferSize, &nActualBytes,
-                         NULL))
-        {
-             lpInBuffer = (LPVOID)((char *) lpInBuffer + nActualBytes);
-             nInBufferSize -= nActualBytes;
-        }
-
-        if (0 != nInBufferSize)
-        {
-             /* Must have dropped out of the while 'cause WriteFile failed */
-             return FALSE;
-        }
-
-        if (!ReadFile(hNamedPipe, lpOutBuffer, nOutBufferSize, &nActualBytes,
-                      NULL))
-        {
-             return FALSE;
-        }
-
-        if (NULL != lpBytesRead)
-        {
-            *lpBytesRead = nActualBytes;
-        }
-#endif
     }
 
     return TRUE;
index bf46a8b..3815d89 100644 (file)
@@ -6,6 +6,5 @@ add_subdirectory(fastfat)
 add_subdirectory(fs_rec)
 add_subdirectory(msfs)
 add_subdirectory(mup)
-add_subdirectory(npfs)
 add_subdirectory(npfs_new)
 add_subdirectory(ntfs)
index f96e552..78935e8 100644 (file)
@@ -21,9 +21,9 @@ list(APPEND SOURCE
      write.c
      writesup.c)
 
-add_library(npfs_new SHARED ${SOURCE})
-set_module_type(npfs_new kernelmodedriver)
-target_link_libraries(npfs_new ${PSEH_LIB})
-add_importlibs(npfs_new ntoskrnl hal)
-add_pch(npfs_new npfs.h)
-add_cd_file(TARGET npfs_new DESTINATION reactos/system32/drivers FOR all)
+add_library(npfs SHARED ${SOURCE})
+set_module_type(npfs kernelmodedriver)
+target_link_libraries(npfs ${PSEH_LIB})
+add_importlibs(npfs ntoskrnl hal)
+add_pch(npfs npfs.h)
+add_cd_file(TARGET npfs DESTINATION reactos/system32/drivers FOR all)