fixed calls to NtDuplicateObject
[reactos.git] / reactos / lib / kernel32 / misc / handle.c
index a20fe7a..3ee219c 100644 (file)
@@ -43,13 +43,13 @@ GetHandleInformation (HANDLE hObject,
   switch ((ULONG)hObject)
   {
     case STD_INPUT_HANDLE:
-      hObject = Ppb->hStdInput;
+      hObject = Ppb->StandardInput;
       break;
     case STD_OUTPUT_HANDLE:
-      hObject = Ppb->hStdOutput;
+      hObject = Ppb->StandardOutput;
       break;
     case STD_ERROR_HANDLE:
-      hObject = Ppb->hStdError;
+      hObject = Ppb->StandardError;
       break;
   }
 
@@ -95,13 +95,13 @@ SetHandleInformation (HANDLE hObject,
   switch ((ULONG)hObject)
   {
     case STD_INPUT_HANDLE:
-      hObject = Ppb->hStdInput;
+      hObject = Ppb->StandardInput;
       break;
     case STD_OUTPUT_HANDLE:
-      hObject = Ppb->hStdOutput;
+      hObject = Ppb->StandardOutput;
       break;
     case STD_ERROR_HANDLE:
-      hObject = Ppb->hStdError;
+      hObject = Ppb->StandardError;
       break;
   }
 
@@ -112,8 +112,11 @@ SetHandleInformation (HANDLE hObject,
                          &BytesWritten);
   if (NT_SUCCESS(Status))
   {
-    HandleInfo.Inherit = (dwFlags & HANDLE_FLAG_INHERIT) != 0;
-    HandleInfo.ProtectFromClose = (dwFlags & HANDLE_FLAG_PROTECT_FROM_CLOSE) != 0;
+    if (dwMask & HANDLE_FLAG_INHERIT)
+      HandleInfo.Inherit = (dwFlags & HANDLE_FLAG_INHERIT) != 0;
+    if (dwMask & HANDLE_FLAG_PROTECT_FROM_CLOSE)
+      HandleInfo.ProtectFromClose = (dwFlags & HANDLE_FLAG_PROTECT_FROM_CLOSE) != 0;
+
     Status = NtSetInformationObject (hObject,
                                     ObjectHandleInformation,
                                     &HandleInfo,
@@ -153,13 +156,13 @@ BOOL STDCALL CloseHandle(HANDLE  hObject)
    switch ((ULONG)hObject)
    {
      case STD_INPUT_HANDLE:
-       hObject = Ppb->hStdInput;
+       hObject = Ppb->StandardInput;
        break;
      case STD_OUTPUT_HANDLE:
-       hObject = Ppb->hStdOutput;
+       hObject = Ppb->StandardOutput;
        break;
      case STD_ERROR_HANDLE:
-       hObject = Ppb->hStdError;
+       hObject = Ppb->StandardError;
        break;
    }
 
@@ -198,13 +201,13 @@ BOOL STDCALL DuplicateHandle(HANDLE hSourceProcessHandle,
    switch ((ULONG)hSourceHandle)
    {
      case STD_INPUT_HANDLE:
-       hSourceHandle = Ppb->hStdInput;
+       hSourceHandle = Ppb->StandardInput;
        break;
      case STD_OUTPUT_HANDLE:
-       hSourceHandle = Ppb->hStdOutput;
+       hSourceHandle = Ppb->StandardOutput;
        break;
      case STD_ERROR_HANDLE:
-       hSourceHandle = Ppb->hStdError;
+       hSourceHandle = Ppb->StandardError;
        break;
    }
 
@@ -229,7 +232,7 @@ BOOL STDCALL DuplicateHandle(HANDLE hSourceProcessHandle,
                              hTargetProcessHandle,
                              lpTargetHandle,
                              dwDesiredAccess,
-                             (BOOLEAN)bInheritHandle,
+                             bInheritHandle ? OBJ_INHERIT : 0,
                              dwOptions);
    if (!NT_SUCCESS(Status))
      {