[ros-diffs] [ion] 19089: - Fix error spotted by winetest: some status codes need to be normalized in CreateNamedPipeW

ion at svn.reactos.com ion at svn.reactos.com
Wed Nov 9 05:53:48 CET 2005


- Fix error spotted by winetest: some status codes need to be normalized
in CreateNamedPipeW
- Fix some bugs in CreatePipe: use correct directory, use right access
mask, use correct define name for blocking type, and use correct file
sharing flags.
Results of "kernel32_winetest pipe": 418 tests executed, 0 todo, 0
failures. (with NT NPFS, of course).
Modified: trunk/reactos/lib/kernel32/file/npipe.c
Modified: trunk/reactos/lib/kernel32/file/pipe.c
  _____  

Modified: trunk/reactos/lib/kernel32/file/npipe.c
--- trunk/reactos/lib/kernel32/file/npipe.c	2005-11-09 04:32:44 UTC
(rev 19088)
+++ trunk/reactos/lib/kernel32/file/npipe.c	2005-11-09 04:53:32 UTC
(rev 19089)
@@ -207,6 +207,13 @@

                                    nOutBufferSize,
                                    &DefaultTimeOut);
 
+    /* Normalize special error codes */
+    if ((Status == STATUS_INVALID_DEVICE_REQUEST) ||
+        (Status == STATUS_NOT_SUPPORTED))
+    {
+        Status = STATUS_OBJECT_NAME_INVALID;
+    }
+
     /* Free the name */
     RtlFreeUnicodeString(&NamedPipeName);
 
  _____  

Modified: trunk/reactos/lib/kernel32/file/pipe.c
--- trunk/reactos/lib/kernel32/file/pipe.c	2005-11-09 04:32:44 UTC
(rev 19088)
+++ trunk/reactos/lib/kernel32/file/pipe.c	2005-11-09 04:53:32 UTC
(rev 19089)
@@ -54,7 +54,7 @@

 
     /* Create the pipe name */
     swprintf(Buffer,
-             L"\\\\.\\PIPE\\Win32Pipes.%08x.%08x",
+             L"\\Device\\NamedPipe\\Win32Pipes.%08x.%08x",
              NtCurrentTeb()->Cid.UniqueProcess,
              PipeId);
     RtlInitUnicodeString(&PipeName, Buffer);
@@ -81,15 +81,15 @@
 
     /* Create the named pipe */
     Status = NtCreateNamedPipeFile(&ReadPipeHandle,
-                                   FILE_GENERIC_READ
|FILE_WRITE_ATTRIBUTES | SYNCHRONIZE,
+                                   GENERIC_READ |FILE_WRITE_ATTRIBUTES
| SYNCHRONIZE,
                                    &ObjectAttributes,
                                    &StatusBlock,
-                                   FILE_SHARE_WRITE,
+                                   FILE_SHARE_READ | FILE_SHARE_WRITE,
                                    FILE_CREATE,
                                    FILE_SYNCHRONOUS_IO_NONALERT,
                                    FILE_PIPE_BYTE_STREAM_TYPE,
                                    FILE_PIPE_BYTE_STREAM_MODE,
-                                   FILE_PIPE_BYTE_STREAM_MODE,
+                                   FILE_PIPE_QUEUE_OPERATION,
                                    1,
                                    nSize,
                                    nSize,
@@ -97,6 +97,7 @@
     if (!NT_SUCCESS(Status))
     {
         /* Convert error and fail */
+        DPRINT1("Status: %lx\n", Status);
         SetLastErrorByStatus(Status);
         return FALSE;
     }
@@ -111,6 +112,7 @@
     if (!NT_SUCCESS(Status))
     {
         /* Convert error and fail */
+        DPRINT1("Status: %lx\n", Status);
         NtClose(ReadPipeHandle);
         SetLastErrorByStatus(Status);
         return FALSE;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20051109/0a994cc5/attachment.html


More information about the Ros-diffs mailing list