static KSPIN_LOCK LuidLock;
static LARGE_INTEGER LuidIncrement;
-static LUID Luid;
+static LARGE_INTEGER LuidValue;
+
+#define SYSTEM_LUID 0x3E7;
/* FUNCTIONS *****************************************************************/
SepInitLuid(VOID)
{
KeInitializeSpinLock(&LuidLock);
- Luid.QuadPart = 999; /* SYSTEM_LUID */
+ LuidValue.QuadPart = SYSTEM_LUID;
LuidIncrement.QuadPart = 1;
}
+/*
+ * @implemented
+ */
NTSTATUS STDCALL
-NtAllocateLocallyUniqueId(OUT LUID* LocallyUniqueId)
+NtAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId)
{
- KIRQL oldIrql;
- LUID ReturnedLuid;
+ LARGE_INTEGER ReturnedLuid;
+ KIRQL Irql;
KeAcquireSpinLock(&LuidLock,
- &oldIrql);
- ReturnedLuid = Luid;
- Luid = RtlLargeIntegerAdd(Luid,
- LuidIncrement);
+ &Irql);
+ ReturnedLuid = LuidValue;
+ LuidValue = RtlLargeIntegerAdd(LuidValue,
+ LuidIncrement);
KeReleaseSpinLock(&LuidLock,
- oldIrql);
- *LocallyUniqueId = ReturnedLuid;
+ Irql);
+
+ LocallyUniqueId->LowPart = ReturnedLuid.u.LowPart;
+ LocallyUniqueId->HighPart = ReturnedLuid.u.HighPart;
return(STATUS_SUCCESS);
}
#ifndef LIBCAPTIVE
+/*
+ * @implemented
+ */
VOID STDCALL
RtlCopyLuid(IN PLUID LuidDest,
IN PLUID LuidSrc)
{
- LuidDest->QuadPart = LuidSrc->QuadPart;
+ LuidDest->LowPart = LuidSrc->LowPart;
+ LuidDest->HighPart = LuidSrc->HighPart;
}
+/*
+ * @implemented
+ */
BOOLEAN STDCALL
RtlEqualLuid(IN PLUID Luid1,
IN PLUID Luid2)
{
- return((Luid1->QuadPart == Luid2->QuadPart) ? TRUE : FALSE);
+ return (Luid1->LowPart == Luid2->LowPart &&
+ Luid1->HighPart == Luid2->HighPart);
}
#endif /* LIBCAPTIVE */