3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/se/luid.c
6 * PURPOSE: Security manager
8 * PROGRAMMERS: No programmer listed.
11 /* INCLUDES *****************************************************************/
14 #include <internal/debug.h>
16 /* GLOBALS *******************************************************************/
18 static KSPIN_LOCK LuidLock
;
19 static LARGE_INTEGER LuidIncrement
;
20 static LARGE_INTEGER LuidValue
;
22 /* FUNCTIONS *****************************************************************/
27 LARGE_INTEGER DummyLuidValue
= SYSTEM_LUID
;
29 KeInitializeSpinLock(&LuidLock
);
30 LuidValue
= DummyLuidValue
;
31 LuidIncrement
.QuadPart
= 1;
39 NtAllocateLocallyUniqueId(OUT LUID
*LocallyUniqueId
)
41 LARGE_INTEGER ReturnedLuid
;
44 KeAcquireSpinLock(&LuidLock
,
46 ReturnedLuid
= LuidValue
;
47 LuidValue
= RtlLargeIntegerAdd(LuidValue
,
49 KeReleaseSpinLock(&LuidLock
,
52 LocallyUniqueId
->LowPart
= ReturnedLuid
.u
.LowPart
;
53 LocallyUniqueId
->HighPart
= ReturnedLuid
.u
.HighPart
;
55 return(STATUS_SUCCESS
);
63 RtlCopyLuid(IN PLUID LuidDest
,
66 LuidDest
->LowPart
= LuidSrc
->LowPart
;
67 LuidDest
->HighPart
= LuidSrc
->HighPart
;
75 RtlEqualLuid(IN PLUID Luid1
,
78 return (Luid1
->LowPart
== Luid2
->LowPart
&&
79 Luid1
->HighPart
== Luid2
->HighPart
);