+ntoskrnl/se/luid.c
[reactos.git] / ntoskrnl / se / luid.c
1 /* $Id$
2  *
3  * COPYRIGHT:         See COPYING in the top level directory
4  * PROJECT:           ReactOS kernel
5  * PURPOSE:           Security manager
6  * FILE:              ntoskrnl/se/luid.c
7  * PROGRAMER:         ?
8  * REVISION HISTORY:
9  *                 26/07/98: Added stubs for security functions
10  */
11
12 /* INCLUDES *****************************************************************/
13
14 #include <ddk/ntddk.h>
15
16 #include <internal/debug.h>
17
18 /* GLOBALS *******************************************************************/
19
20 static KSPIN_LOCK LuidLock;
21 static LARGE_INTEGER LuidIncrement;
22 static LUID Luid;
23
24 /* FUNCTIONS *****************************************************************/
25
26 VOID
27 SepInitLuid(VOID)
28 {
29   KeInitializeSpinLock(&LuidLock);
30   Luid.QuadPart = 999;   /* SYSTEM_LUID */
31   LuidIncrement.QuadPart = 1;
32 }
33
34
35 NTSTATUS STDCALL
36 NtAllocateLocallyUniqueId(OUT LUID* LocallyUniqueId)
37 {
38   KIRQL oldIrql;
39   LUID ReturnedLuid;
40
41   KeAcquireSpinLock(&LuidLock,
42                     &oldIrql);
43   ReturnedLuid = Luid;
44   Luid = RtlLargeIntegerAdd(Luid,
45                             LuidIncrement);
46   KeReleaseSpinLock(&LuidLock,
47                     oldIrql);
48   *LocallyUniqueId = ReturnedLuid;
49
50   return(STATUS_SUCCESS);
51 }
52
53 #ifndef LIBCAPTIVE
54
55 VOID STDCALL
56 RtlCopyLuid(IN PLUID LuidDest,
57             IN PLUID LuidSrc)
58 {
59   LuidDest->QuadPart = LuidSrc->QuadPart;
60 }
61
62
63 BOOLEAN STDCALL
64 RtlEqualLuid(IN PLUID Luid1,
65              IN PLUID Luid2)
66 {
67   return((Luid1->QuadPart == Luid2->QuadPart) ? TRUE : FALSE);
68 }
69
70 #endif /* LIBCAPTIVE */
71
72 /* EOF */