- Implemented RtlAdjustPrivileges().
[reactos.git] / reactos / ntoskrnl / se / luid.c
1 /* $Id: luid.c,v 1.7 2003/05/31 11:10:30 ekohl Exp $
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 LARGE_INTEGER LuidValue;
23
24 #define SYSTEM_LUID 0x3E7;
25
26 /* FUNCTIONS *****************************************************************/
27
28 VOID
29 SepInitLuid(VOID)
30 {
31 KeInitializeSpinLock(&LuidLock);
32 LuidValue.QuadPart = SYSTEM_LUID;
33 LuidIncrement.QuadPart = 1;
34 }
35
36
37 NTSTATUS STDCALL
38 NtAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId)
39 {
40 LARGE_INTEGER ReturnedLuid;
41 KIRQL Irql;
42
43 KeAcquireSpinLock(&LuidLock,
44 &Irql);
45 ReturnedLuid = LuidValue;
46 LuidValue = RtlLargeIntegerAdd(LuidValue,
47 LuidIncrement);
48 KeReleaseSpinLock(&LuidLock,
49 Irql);
50
51 LocallyUniqueId->LowPart = ReturnedLuid.u.LowPart;
52 LocallyUniqueId->HighPart = ReturnedLuid.u.HighPart;
53
54 return(STATUS_SUCCESS);
55 }
56
57
58 VOID STDCALL
59 RtlCopyLuid(IN PLUID LuidDest,
60 IN PLUID LuidSrc)
61 {
62 LuidDest->LowPart = LuidSrc->LowPart;
63 LuidDest->HighPart = LuidSrc->HighPart;
64 }
65
66
67 BOOLEAN STDCALL
68 RtlEqualLuid(IN PLUID Luid1,
69 IN PLUID Luid2)
70 {
71 return (Luid1->LowPart == Luid2->LowPart &&
72 Luid1->HighPart == Luid2->HighPart);
73 }
74
75 /* EOF */