Desktop Functions: Smart Device Functions:
|
LUID (Structures)
C# Definition:
[StructLayout(LayoutKind.Sequential)] VB Definition:
Structure LUID Notes: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 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] Please edit this page!Do you have...
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing any supporting types needed. |
|