branch update for HEAD-2003091401
[reactos.git] / ntoskrnl / se / luid.c
index 4484c49..594a714 100644 (file)
@@ -19,7 +19,9 @@
 
 static KSPIN_LOCK LuidLock;
 static LARGE_INTEGER LuidIncrement;
-static LUID Luid;
+static LARGE_INTEGER LuidValue;
+
+#define SYSTEM_LUID   0x3E7;
 
 /* FUNCTIONS *****************************************************************/
 
@@ -27,44 +29,57 @@ VOID
 SepInitLuid(VOID)
 {
   KeInitializeSpinLock(&LuidLock);
-  Luid.QuadPart = 999;   /* SYSTEM_LUID */
+  LuidValue.QuadPart = SYSTEM_LUID;
   LuidIncrement.QuadPart = 1;
 }
 
 
+/*
+ * @implemented
+ */
 NTSTATUS STDCALL
-NtAllocateLocallyUniqueId(OUT LUIDLocallyUniqueId)
+NtAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId)
 {
-  KIRQL oldIrql;
-  LUID ReturnedLuid;
+  LARGE_INTEGER ReturnedLuid;
+  KIRQL Irql;
 
   KeAcquireSpinLock(&LuidLock,
-                   &oldIrql);
-  ReturnedLuid = Luid;
-  Luid = RtlLargeIntegerAdd(Luid,
-                           LuidIncrement);
+                   &Irql);
+  ReturnedLuid = LuidValue;
+  LuidValue = RtlLargeIntegerAdd(LuidValue,
+                                LuidIncrement);
   KeReleaseSpinLock(&LuidLock,
-                   oldIrql);
-  *LocallyUniqueId = ReturnedLuid;
+                   Irql);
+
+  LocallyUniqueId->LowPart = ReturnedLuid.u.LowPart;
+  LocallyUniqueId->HighPart = ReturnedLuid.u.HighPart;
 
   return(STATUS_SUCCESS);
 }
 
 #ifndef LIBCAPTIVE
 
+/*
+ * @implemented
+ */
 VOID STDCALL
 RtlCopyLuid(IN PLUID LuidDest,
            IN PLUID LuidSrc)
 {
-  LuidDest->QuadPart = LuidSrc->QuadPart;
+  LuidDest->LowPart = LuidSrc->LowPart;
+  LuidDest->HighPart = LuidSrc->HighPart;
 }
 
 
+/*
+ * @implemented
+ */
 BOOLEAN STDCALL
 RtlEqualLuid(IN PLUID Luid1,
             IN PLUID Luid2)
 {
-  return((Luid1->QuadPart == Luid2->QuadPart) ? TRUE : FALSE);
+  return (Luid1->LowPart == Luid2->LowPart &&
+         Luid1->HighPart == Luid2->HighPart);
 }
 
 #endif /* LIBCAPTIVE */