- Update to r53061
[reactos.git] / dll / win32 / kernel32 / client / job.c
similarity index 69%
rename from dll/win32/kernel32/process/job.c
rename to dll/win32/kernel32/client/job.c
index 43a77c9..da5ee9b 100644 (file)
 
 /* FUNCTIONS ****************************************************************/
 
-
 /*
  * @implemented
  */
 HANDLE
 WINAPI
-CreateJobObjectA(LPSECURITY_ATTRIBUTES lpJobAttributes,
-                 LPCSTR lpName)
+CreateJobObjectA(IN LPSECURITY_ATTRIBUTES lpJobAttributes,
+                 IN LPCSTR lpName)
 {
-    HANDLE hJob;
-    ANSI_STRING AnsiName;
-    UNICODE_STRING UnicodeName;
-
-    if (lpName != NULL)
-    {
-        NTSTATUS Status;
-
-        RtlInitAnsiString(&AnsiName, lpName);
-        Status = RtlAnsiStringToUnicodeString(&UnicodeName, &AnsiName, TRUE);
-        if (!NT_SUCCESS(Status))
-        {
-            SetLastErrorByStatus(Status);
-            return FALSE;
-        }
-    }
-
-    hJob = CreateJobObjectW(lpJobAttributes,
-                            ((lpName != NULL) ? UnicodeName.Buffer : NULL));
-
-    if (lpName != NULL)
-    {
-        RtlFreeUnicodeString(&UnicodeName);
-    }
-
-    return hJob;
+    /* Call the W(ide) function */
+    ConvertWin32AnsiObjectApiToUnicodeApi(JobObject, lpName, lpJobAttributes);
 }
 
-
 /*
  * @implemented
  */
 HANDLE
 WINAPI
-CreateJobObjectW(LPSECURITY_ATTRIBUTES lpJobAttributes,
-                 LPCWSTR lpName)
+CreateJobObjectW(IN LPSECURITY_ATTRIBUTES lpJobAttributes,
+                 IN LPCWSTR lpName)
 {
-    UNICODE_STRING JobName;
-    OBJECT_ATTRIBUTES ObjectAttributes;
-    ULONG Attributes = 0;
-    PVOID SecurityDescriptor;
-    HANDLE hJob;
-    NTSTATUS Status;
-
-    if (lpName != NULL)
-    {
-        RtlInitUnicodeString(&JobName, lpName);
-    }
-
-    if (lpJobAttributes != NULL)
-    {
-        if (lpJobAttributes->bInheritHandle)
-        {
-            Attributes |= OBJ_INHERIT;
-        }
-
-        SecurityDescriptor = lpJobAttributes->lpSecurityDescriptor;
-    }
-    else
-    {
-        SecurityDescriptor = NULL;
-    }
-
-    InitializeObjectAttributes(&ObjectAttributes,
-                               ((lpName != NULL) ? &JobName : NULL),
-                               Attributes,
-                               NULL,
-                               SecurityDescriptor);
-
-    Status = NtCreateJobObject(&hJob,
-                               JOB_OBJECT_ALL_ACCESS,
-                               &ObjectAttributes);
-    if (!NT_SUCCESS(Status))
-    {
-        SetLastErrorByStatus(Status);
-        return NULL;
-    }
-
-    return hJob;
+    /* Create the NT object */
+    CreateNtObjectFromWin32Api(JobObject, JobObject, JOB, lpJobAttributes, lpName);
 }
 
-
 /*
  * @implemented
  */
@@ -118,35 +51,8 @@ OpenJobObjectW(DWORD dwDesiredAccess,
                BOOL bInheritHandle,
                LPCWSTR lpName)
 {
-    OBJECT_ATTRIBUTES ObjectAttributes;
-    UNICODE_STRING JobName;
-    HANDLE hJob;
-    NTSTATUS Status;
-
-    if (lpName == NULL)
-    {
-        SetLastError(ERROR_INVALID_PARAMETER);
-        return NULL;
-    }
-
-    RtlInitUnicodeString(&JobName, lpName);
-
-    InitializeObjectAttributes(&ObjectAttributes,
-                               &JobName,
-                               (bInheritHandle ? OBJ_INHERIT : 0),
-                               NULL,
-                               NULL);
-
-    Status = NtOpenJobObject(&hJob,
-                             dwDesiredAccess,
-                             &ObjectAttributes);
-    if (!NT_SUCCESS(Status))
-    {
-        SetLastErrorByStatus(Status);
-        return NULL;
-    }
-
-    return hJob;
+    /* Open the NT object */
+    OpenNtObjectFromWin32Api(JobObject, dwDesiredAccess, bInheritHandle, lpName);
 }
 
 
@@ -159,31 +65,8 @@ OpenJobObjectA(DWORD dwDesiredAccess,
                BOOL bInheritHandle,
                LPCSTR lpName)
 {
-    ANSI_STRING AnsiName;
-    UNICODE_STRING UnicodeName;
-    HANDLE hJob;
-    NTSTATUS Status;
-
-    if (lpName == NULL)
-    {
-        SetLastError(ERROR_INVALID_PARAMETER);
-        return NULL;
-    }
-
-    RtlInitAnsiString(&AnsiName, lpName);
-    Status = RtlAnsiStringToUnicodeString(&UnicodeName, &AnsiName, TRUE);
-    if (!NT_SUCCESS(Status))
-    {
-        SetLastErrorByStatus(Status);
-        return FALSE;
-    }
-
-    hJob = OpenJobObjectW(dwDesiredAccess,
-                          bInheritHandle,
-                          UnicodeName.Buffer);
-
-    RtlFreeUnicodeString(&UnicodeName);
-    return hJob;
+    /* Call the W(ide) function */
+    ConvertOpenWin32AnsiObjectApiToUnicodeApi(JobObject, dwDesiredAccess, bInheritHandle, lpName);
 }
 
 
@@ -205,7 +88,7 @@ IsProcessInJob(HANDLE ProcessHandle,
         return TRUE;
     }
 
-    SetLastErrorByStatus(Status);
+    BaseSetLastNTError(Status);
     return FALSE;
 }
 
@@ -223,7 +106,7 @@ AssignProcessToJobObject(HANDLE hJob,
     Status = NtAssignProcessToJobObject(hJob, hProcess);
     if (!NT_SUCCESS(Status))
     {
-        SetLastErrorByStatus(Status);
+        BaseSetLastNTError(Status);
         return FALSE;
     }
 
@@ -308,7 +191,7 @@ QueryInformationJobObject(HANDLE hJob,
         return TRUE;
     }
 
-    SetLastErrorByStatus(Status);
+    BaseSetLastNTError(Status);
     return FALSE;
 }
 
@@ -403,7 +286,7 @@ SetInformationJobObject(HANDLE hJob,
                                        cbJobObjectInformationLength);
     if (!NT_SUCCESS(Status))
     {
-        SetLastErrorByStatus(Status);
+        BaseSetLastNTError(Status);
         return FALSE;
     }
 
@@ -424,11 +307,25 @@ TerminateJobObject(HANDLE hJob,
     Status = NtTerminateJobObject(hJob, uExitCode);
     if (!NT_SUCCESS(Status))
     {
-        SetLastErrorByStatus(Status);
+        BaseSetLastNTError(Status);
         return FALSE;
     }
 
     return TRUE;
 }
 
+/*
+ * @unimplemented
+ */
+BOOL
+WINAPI
+CreateJobSet (
+    ULONG NumJob,
+    PJOB_SET_ARRAY UserJobSet,
+    ULONG Flags)
+{
+    STUB;
+    return 0;
+}
+
 /* EOF */