LUID (Structures)
Last changed: 223.104.45.153

.
Summary
A 64-bit value guaranteed to be unique only on the system on which it was generated... until the system is restarted.

C# Definition:

[StructLayout(LayoutKind.Sequential)]
public struct LUID {
   public UInt32 LowPart;
   public Int32 HighPart;
}

VB Definition:

Structure LUID
   Public LowPart As Integer
   Public HighPart As Integer
End Structure

Notes:

Q: Why is this defined as two ints instead of a long? As far as I can see there's no need to treat it as anything other than

an opaque 64 bit field.

A: Short answer: quirky structure-packing and array-alignment. Long answer: LUID is a member of LUID_AND_ATTRIBUTES struct, which is a variable-size embedded array member of TOKEN_PRIVILEGES struct, occurring after a 4-byte dword value..

So, if you model LUID as Int64, the array alignment will be on 8-byte boundary within TOKEN_PRIVILEGES, which is broken.. but if you model LUID as a pair of 4-byte values, the array alignment becomes 4-byte, which is correct. [source: I just made this mistake of using Int64 for LUID and spent hours debugging my failing calls to AdjustTokenPrivileges]

NB
It's still possible to use Int64 in lieu of LUID but you need to be aware, and use Pack=4 or StructLayout(Explicit) on your TOKEN_PRIVILEGES structure.
Documentation
LUID on MSDN