2010-06-16 4 views
1

En se fondant sur cette question How to declarate LARGE_INTEGER in C# avec answer de:Comment déclarer ULARGE_INTEGER dans C#?

[StructLayout(LayoutKind.Absolute, Size=8)] 
struct LARGE_INTEGER 
{ 
    [FieldOffset(0)]public Int64 QuadPart; 
    [FieldOffset(0)]public UInt32 LowPart; 
    [FieldOffset(4)]public Int32 HighPart; 
} 

est mon hypothèse ci-dessous pour déclarer ULARGE_INTEGER correcte?

[StructLayout(LayoutKind.Explicit, Size = 8)] 
public struct ULARGE_INTEGER 
{ 
    [FieldOffset(0)] public UInt64 QuadPart; 
    [FieldOffset(0)] public UInt32 LowPart; 
    [FieldOffset(4)] public UInt32 HighPart; 
} 

Répondre

1

C'est simplement un ulong en C#, pas besoin de sauter par le cadre LayoutKind.Explicit. L'union était nécessaire car les compilateurs C et C++ n'avaient pas de type 64 bits natif dans les temps anciens.

+0

Il suffit donc d'échanger toutes les déclarations pour 'UInt64' (' ulong') et ça devrait aller? – Codesleuth

+0

Juste oublier complètement la déclaration de la structure. –

+0

Excellent, merci! J'introduis 'LARGE_INTEGER' pour' Int64' aussi. – Codesleuth