""" Struct constants. """ __all__ = [ 'ST_BC_FIELD_INFO', 'ST_BC_HEAD', 'ST_BE_F32', 'ST_BE_F64', 'ST_BE_I16', 'ST_BE_I32', 'ST_BE_I64', 'ST_BE_I8', 'ST_BE_UI16', 'ST_BE_UI32', 'ST_BE_UI64', 'ST_BE_UI8', 'ST_CF_DIR_ENTRY', 'ST_GUID', 'ST_LE_F32', 'ST_LE_F64', 'ST_LE_I16', 'ST_LE_I32', 'ST_LE_I64', 'ST_LE_I8', 'ST_LE_UI16', 'ST_LE_UI32', 'ST_LE_UI64', 'ST_LE_UI8', 'ST_NP_ENT', 'ST_PEID', 'ST_PROP_BASE', 'ST_PROP_VAR', 'ST_PROPSTORE_HEADER', 'ST_RGB', 'ST_SBO_I8', 'ST_SBO_I16', 'ST_SBO_I32', 'ST_SBO_I64', 'ST_SBO_UI8', 'ST_SBO_UI16', 'ST_SBO_UI32', 'ST_SBO_UI64', 'ST_SYSTEMTIME', 'ST_TZ', ] import struct from typing import Final # Define pre-compiled structs to make unpacking slightly faster. # General structs. ST_PROPSTORE_HEADER: Final[struct.Struct] = struct.Struct('<8x4I') ST_PROP_BASE: Final[struct.Struct] = struct.Struct('<2HI') # Struct used for unpacking a system time. ST_SYSTEMTIME: Final[struct.Struct] = struct.Struct('<8H') # Struct used for unpacking a GUID from bytes. ST_GUID: Final[struct.Struct] = struct.Struct('<IHH8s') # Struct for unpacking a TimeZoneStruct from bytes. ST_TZ: Final[struct.Struct] = struct.Struct('<iiiH16sH16s') # Struct for packing a compount file directory entry. ST_CF_DIR_ENTRY: Final[struct.Struct] = struct.Struct('<64sHBBIII16sIQQIQ') # Struct used for unpacking the entries in the entry stream ST_NP_ENT: Final[struct.Struct] = struct.Struct('<IHH') # Structs used by prop.py ST_PROP_VAR: Final[struct.Struct] = struct.Struct('<2I') # PermanentEntryID parsing struct ST_PEID: Final[struct.Struct] = struct.Struct('<B3x16s4xI') # Struct for unpacking the first part of the BusinessCardDisplayDefinition # structure. ST_BC_HEAD: Final[struct.Struct] = struct.Struct('BBBBBBBBBBBxB') # Struct for completely unpacking the FieldInfo structure. ST_BC_FIELD_INFO: Final[struct.Struct] = struct.Struct('HBBBxHBBBxBBBx') # Structs for parsing basic types. ST_LE_I8: Final[struct.Struct] = struct.Struct('<b') ST_LE_I16: Final[struct.Struct] = struct.Struct('<h') ST_LE_I32: Final[struct.Struct] = struct.Struct('<i') ST_LE_I64: Final[struct.Struct] = struct.Struct('<q') ST_LE_UI8: Final[struct.Struct] = struct.Struct('<B') ST_LE_UI16: Final[struct.Struct] = struct.Struct('<H') ST_LE_UI32: Final[struct.Struct] = struct.Struct('<I') ST_LE_UI64: Final[struct.Struct] = struct.Struct('<Q') ST_LE_F32: Final[struct.Struct] = struct.Struct('<f') ST_LE_F64: Final[struct.Struct] = struct.Struct('<d') ST_BE_I8: Final[struct.Struct] = struct.Struct('>b') ST_BE_I16: Final[struct.Struct] = struct.Struct('>h') ST_BE_I32: Final[struct.Struct] = struct.Struct('>i') ST_BE_I64: Final[struct.Struct] = struct.Struct('>q') ST_BE_UI8: Final[struct.Struct] = struct.Struct('>B') ST_BE_UI16: Final[struct.Struct] = struct.Struct('>H') ST_BE_UI32: Final[struct.Struct] = struct.Struct('>I') ST_BE_UI64: Final[struct.Struct] = struct.Struct('>Q') ST_BE_F32: Final[struct.Struct] = struct.Struct('>f') ST_BE_F64: Final[struct.Struct] = struct.Struct('>d') # Structs that use the system byte order, where consistency on a single system # is all that matters. Mainly used for quick casts between signed and unsigned. ST_SBO_I8: Final[struct.Struct] = struct.Struct('@b') ST_SBO_I16: Final[struct.Struct] = struct.Struct('@h') ST_SBO_I32: Final[struct.Struct] = struct.Struct('@i') ST_SBO_I64: Final[struct.Struct] = struct.Struct('@q') ST_SBO_UI8: Final[struct.Struct] = struct.Struct('@B') ST_SBO_UI16: Final[struct.Struct] = struct.Struct('@H') ST_SBO_UI32: Final[struct.Struct] = struct.Struct('@I') ST_SBO_UI64: Final[struct.Struct] = struct.Struct('@Q') # Struct for an RGB value that, in little endian, would be an int written in hex # as 0x00BBGGRR. ST_RGB: Final[struct.Struct] = struct.Struct('<BBBx')
Memory