python 构建结构无效的 DWORD LONG 值

python construct struct invalid DWORDLONG vallues

我正在尝试使用构造库在 python 中解析一个 c 结构 这是我的结构:

typedef struct _MACHINEID {
    UINT32        ui32Hash;
    DWORD        dwLength;
    DWORD        dwMemoryLoad;
    DWORDLONG    ullTotalPhys;
    DWORDLONG    ullAvailPhys;
    DWORDLONG    ullTotalPageFile;
    DWORDLONG    ullAvailPageFile;
    DWORDLONG    ullTotalVirtual;
    DWORDLONG    ullAvailVirtual;
    DWORDLONG    ullAvailExtendedVirtual;
} MACHINEID, * PMACHINEID;
from construct import Int32un, Int8sn, Int16un, Int64un, Int
from construct import Array, Struct
MACHINE_ID = Struct(
    'ui32Hash' / Int32un,
    'dwLength' / Int32un,
    'dwMemoryLoad' / Int32un,
    'ullTotalPhys' / Int64un,
    'ullAvailPhys' / Int64un,
    'ullTotalPageFile' / Int64un,
    'ullAvailPageFile' / Int64un,
    'ullTotalVirtual' / Int64un,
    'ullAvailVirtual' / Int64un,
    'ullAvailExtendedVirtual' / Int64un
)

但是当我收到 python 中的结构作为字节对象时,所有 DWORDLONG 成员的值都不正确。有谁知道是什么原因造成的?

正如“一些程序员老兄”所说,它与填充有关。在我的结构周围放置 __pragma(pack(push, 1))__pragma(pack(pop)) 以禁用填充解决了这个问题。