82b06f861d1f56173a83fc5e9d031edfb1f5b872
[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
54 VOID STDCALL
55 RtlCopyLuid(IN PLUID LuidDest,
56             IN PLUID LuidSrc)
57 {
58   LuidDest->QuadPart = LuidSrc->QuadPart;
59 }
60
61
62 BOOLEAN STDCALL
63 RtlEqualLuid(IN PLUID Luid1,
64              IN PLUID Luid2)
65 {
66   return((Luid1->QuadPart == Luid2->QuadPart) ? TRUE : FALSE);
67 }
68
69 /* EOF */