ए DWORD
uint
और WORD
ushort
है।
[StructLayout(LayoutKind.Sequential)]
struct CACHE_DESCRIPTOR
{
public byte Level;
public byte Associativity;
public ushort LineSize;
public uint Size;
public PROCESSOR_CACHE_TYPE Type;
}
enum PROCESSOR_CACHE_TYPE
{
Unified = 0,
Instruction = 1,
Data = 2,
Trace = 3,
}
एक union
एक Explicit
लेआउट और FieldOffset
के साथ एक संरचना है।
[StructLayout(LayoutKind.Sequential)]
struct SYSTEM_LOGICAL_PROCESSOR_INFORMATION
{
public UIntPtr ProcessorMask;
public LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
public ProcessorRelationUnion RelationUnion;
}
[StructLayout(LayoutKind.Explicit)]
struct ProcessorRelationUnion
{
[FieldOffset(0)] public CACHE_DESCRIPTOR Cache;
[FieldOffset(0)] public uint NumaNodeNumber;
[FieldOffset(0)] public byte ProcessorCoreFlags;
[FieldOffset(0)] private UInt64 Reserved1;
[FieldOffset(8)] private UInt64 Reserved2;
}
[StructLayout(LayoutKind.Sequential)]
struct CACHE_DESCRIPTOR
{
public byte Level;
public byte Associativity;
public ushort LineSize;
public uint Size;
public PROCESSOR_CACHE_TYPE Type;
}
enum LOGICAL_PROCESSOR_RELATIONSHIP : uint
{
ProcessorCore = 0,
NumaNode = 1,
RelationCache = 2,
}
एक ULONGLONG
एक UInt64
है। यह संरचना को 8 बाइट सीमा (24 बाइट्स) में संरेखित करना है। जैसा कि डेविड ने टिप्पणियों में बताया, यह आवश्यक है और किसी कारण से यह माइक्रोसॉफ्ट इंटरऑप लाइब्रेरी से गायब था।
अद्यतन: माइक्रोसॉफ्ट रिसर्च से विंडोज इंटरऑप लाइब्रेरी में लापता संरचनाएं और लिंक जोड़ा गया।
स्रोत: WindowsInteropLib/Kernel32.cs
डाउनवोट के लिए कोई कारण? – VMAtm