2004-08-15 Casper S. Hornstrup <chorns@users.sourceforge.net>
[reactos.git] / reactos / ntoskrnl / se / luid.c
1 /* $Id: luid.c,v 1.10 2004/08/15 16:39:11 chorns 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 <ntoskrnl.h>
15 #include <internal/debug.h>
16
17 /* GLOBALS *******************************************************************/
18
19 static KSPIN_LOCK LuidLock;
20 static LARGE_INTEGER LuidIncrement;
21 static LARGE_INTEGER LuidValue;
22
23 #define SYSTEM_LUID 0x3E7;
24
25 /* FUNCTIONS *****************************************************************/
26
27 VOID INIT_FUNCTION
28 SepInitLuid(VOID)
29 {
30 KeInitializeSpinLock(&LuidLock);
31 LuidValue.QuadPart = SYSTEM_LUID;
32 LuidIncrement.QuadPart = 1;
33 }
34
35
36 /*
37 * @implemented
38 */
39 NTSTATUS STDCALL
40 NtAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId)
41 {
42 LARGE_INTEGER ReturnedLuid;
43 KIRQL Irql;
44
45 KeAcquireSpinLock(&LuidLock,
46 &Irql);
47 ReturnedLuid = LuidValue;
48 LuidValue = RtlLargeIntegerAdd(LuidValue,
49 LuidIncrement);
50 KeReleaseSpinLock(&LuidLock,
51 Irql);
52
53 LocallyUniqueId->LowPart = ReturnedLuid.u.LowPart;
54 LocallyUniqueId->HighPart = ReturnedLuid.u.HighPart;
55
56 return(STATUS_SUCCESS);
57 }
58
59
60 /*
61 * @implemented
62 */
63 VOID STDCALL
64 RtlCopyLuid(IN PLUID LuidDest,
65 IN PLUID LuidSrc)
66 {
67 LuidDest->LowPart = LuidSrc->LowPart;
68 LuidDest->HighPart = LuidSrc->HighPart;
69 }
70
71
72 /*
73 * @implemented
74 */
75 BOOLEAN STDCALL
76 RtlEqualLuid(IN PLUID Luid1,
77 IN PLUID Luid2)
78 {
79 return (Luid1->LowPart == Luid2->LowPart &&
80 Luid1->HighPart == Luid2->HighPart);
81 }
82
83 /* EOF */