// Code generated by kaitai-struct-compiler from a .ksy source file. DO NOT EDIT. import ( "github.com/kaitai-io/kaitai_struct_go_runtime/kaitai" "bytes" "io" "golang.org/x/text/encoding/unicode" ) /** * Windows MiniDump (MDMP) file provides a concise way to store process * core dumps, which is useful for debugging. Given its small size, * modularity, some cross-platform features and native support in some * debuggers, it is particularly useful for crash reporting, and is * used for that purpose in Windows and Google Chrome projects. * * The file itself is a container, which contains a number of typed * "streams", which contain some data according to its type attribute. * @see Source */ type WindowsMinidump_StreamTypes int const ( WindowsMinidump_StreamTypes__Unused WindowsMinidump_StreamTypes = 0 WindowsMinidump_StreamTypes__Reserved0 WindowsMinidump_StreamTypes = 1 WindowsMinidump_StreamTypes__Reserved1 WindowsMinidump_StreamTypes = 2 WindowsMinidump_StreamTypes__ThreadList WindowsMinidump_StreamTypes = 3 WindowsMinidump_StreamTypes__ModuleList WindowsMinidump_StreamTypes = 4 WindowsMinidump_StreamTypes__MemoryList WindowsMinidump_StreamTypes = 5 WindowsMinidump_StreamTypes__Exception WindowsMinidump_StreamTypes = 6 WindowsMinidump_StreamTypes__SystemInfo WindowsMinidump_StreamTypes = 7 WindowsMinidump_StreamTypes__ThreadExList WindowsMinidump_StreamTypes = 8 WindowsMinidump_StreamTypes__Memory64List WindowsMinidump_StreamTypes = 9 WindowsMinidump_StreamTypes__CommentA WindowsMinidump_StreamTypes = 10 WindowsMinidump_StreamTypes__CommentW WindowsMinidump_StreamTypes = 11 WindowsMinidump_StreamTypes__HandleData WindowsMinidump_StreamTypes = 12 WindowsMinidump_StreamTypes__FunctionTable WindowsMinidump_StreamTypes = 13 WindowsMinidump_StreamTypes__UnloadedModuleList WindowsMinidump_StreamTypes = 14 WindowsMinidump_StreamTypes__MiscInfo WindowsMinidump_StreamTypes = 15 WindowsMinidump_StreamTypes__MemoryInfoList WindowsMinidump_StreamTypes = 16 WindowsMinidump_StreamTypes__ThreadInfoList WindowsMinidump_StreamTypes = 17 WindowsMinidump_StreamTypes__HandleOperationList WindowsMinidump_StreamTypes = 18 WindowsMinidump_StreamTypes__Token WindowsMinidump_StreamTypes = 19 WindowsMinidump_StreamTypes__JavaScriptData WindowsMinidump_StreamTypes = 20 WindowsMinidump_StreamTypes__SystemMemoryInfo WindowsMinidump_StreamTypes = 21 WindowsMinidump_StreamTypes__ProcessVmCounters WindowsMinidump_StreamTypes = 22 WindowsMinidump_StreamTypes__IptTrace WindowsMinidump_StreamTypes = 23 WindowsMinidump_StreamTypes__ThreadNames WindowsMinidump_StreamTypes = 24 WindowsMinidump_StreamTypes__CeNull WindowsMinidump_StreamTypes = 32768 WindowsMinidump_StreamTypes__CeSystemInfo WindowsMinidump_StreamTypes = 32769 WindowsMinidump_StreamTypes__CeException WindowsMinidump_StreamTypes = 32770 WindowsMinidump_StreamTypes__CeModuleList WindowsMinidump_StreamTypes = 32771 WindowsMinidump_StreamTypes__CeProcessList WindowsMinidump_StreamTypes = 32772 WindowsMinidump_StreamTypes__CeThreadList WindowsMinidump_StreamTypes = 32773 WindowsMinidump_StreamTypes__CeThreadContextList WindowsMinidump_StreamTypes = 32774 WindowsMinidump_StreamTypes__CeThreadCallStackList WindowsMinidump_StreamTypes = 32775 WindowsMinidump_StreamTypes__CeMemoryVirtualList WindowsMinidump_StreamTypes = 32776 WindowsMinidump_StreamTypes__CeMemoryPhysicalList WindowsMinidump_StreamTypes = 32777 WindowsMinidump_StreamTypes__CeBucketParameters WindowsMinidump_StreamTypes = 32778 WindowsMinidump_StreamTypes__CeProcessModuleMap WindowsMinidump_StreamTypes = 32779 WindowsMinidump_StreamTypes__CeDiagnosisList WindowsMinidump_StreamTypes = 32780 WindowsMinidump_StreamTypes__MdCrashpadInfoStream WindowsMinidump_StreamTypes = 1129316353 WindowsMinidump_StreamTypes__MdRawBreakpadInfo WindowsMinidump_StreamTypes = 1197932545 WindowsMinidump_StreamTypes__MdRawAssertionInfo WindowsMinidump_StreamTypes = 1197932546 WindowsMinidump_StreamTypes__MdLinuxCpuInfo WindowsMinidump_StreamTypes = 1197932547 WindowsMinidump_StreamTypes__MdLinuxProcStatus WindowsMinidump_StreamTypes = 1197932548 WindowsMinidump_StreamTypes__MdLinuxLsbRelease WindowsMinidump_StreamTypes = 1197932549 WindowsMinidump_StreamTypes__MdLinuxCmdLine WindowsMinidump_StreamTypes = 1197932550 WindowsMinidump_StreamTypes__MdLinuxEnviron WindowsMinidump_StreamTypes = 1197932551 WindowsMinidump_StreamTypes__MdLinuxAuxv WindowsMinidump_StreamTypes = 1197932552 WindowsMinidump_StreamTypes__MdLinuxMaps WindowsMinidump_StreamTypes = 1197932553 WindowsMinidump_StreamTypes__MdLinuxDsoDebug WindowsMinidump_StreamTypes = 1197932554 ) type WindowsMinidump struct { Magic1 []byte Magic2 []byte Version uint16 NumStreams uint32 OfsStreams uint32 Checksum uint32 Timestamp uint32 Flags uint64 _io *kaitai.Stream _root *WindowsMinidump _parent interface{} _f_streams bool streams []*WindowsMinidump_Dir } func NewWindowsMinidump() *WindowsMinidump { return &WindowsMinidump{ } } func (this *WindowsMinidump) Read(io *kaitai.Stream, parent interface{}, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp1, err := this._io.ReadBytes(int(4)) if err != nil { return err } tmp1 = tmp1 this.Magic1 = tmp1 if !(bytes.Equal(this.Magic1, []uint8{77, 68, 77, 80})) { return kaitai.NewValidationNotEqualError([]uint8{77, 68, 77, 80}, this.Magic1, this._io, "/seq/0") } tmp2, err := this._io.ReadBytes(int(2)) if err != nil { return err } tmp2 = tmp2 this.Magic2 = tmp2 if !(bytes.Equal(this.Magic2, []uint8{147, 167})) { return kaitai.NewValidationNotEqualError([]uint8{147, 167}, this.Magic2, this._io, "/seq/1") } tmp3, err := this._io.ReadU2le() if err != nil { return err } this.Version = uint16(tmp3) tmp4, err := this._io.ReadU4le() if err != nil { return err } this.NumStreams = uint32(tmp4) tmp5, err := this._io.ReadU4le() if err != nil { return err } this.OfsStreams = uint32(tmp5) tmp6, err := this._io.ReadU4le() if err != nil { return err } this.Checksum = uint32(tmp6) tmp7, err := this._io.ReadU4le() if err != nil { return err } this.Timestamp = uint32(tmp7) tmp8, err := this._io.ReadU8le() if err != nil { return err } this.Flags = uint64(tmp8) return err } func (this *WindowsMinidump) Streams() (v []*WindowsMinidump_Dir, err error) { if (this._f_streams) { return this.streams, nil } _pos, err := this._io.Pos() if err != nil { return nil, err } _, err = this._io.Seek(int64(this.OfsStreams), io.SeekStart) if err != nil { return nil, err } for i := 0; i < int(this.NumStreams); i++ { _ = i tmp9 := NewWindowsMinidump_Dir() err = tmp9.Read(this._io, this, this._root) if err != nil { return nil, err } this.streams = append(this.streams, tmp9) } _, err = this._io.Seek(_pos, io.SeekStart) if err != nil { return nil, err } this._f_streams = true this._f_streams = true return this.streams, nil } /** * @see Source */ type WindowsMinidump_ThreadList struct { NumThreads uint32 Threads []*WindowsMinidump_Thread _io *kaitai.Stream _root *WindowsMinidump _parent *WindowsMinidump_Dir } func NewWindowsMinidump_ThreadList() *WindowsMinidump_ThreadList { return &WindowsMinidump_ThreadList{ } } func (this *WindowsMinidump_ThreadList) Read(io *kaitai.Stream, parent *WindowsMinidump_Dir, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp10, err := this._io.ReadU4le() if err != nil { return err } this.NumThreads = uint32(tmp10) for i := 0; i < int(this.NumThreads); i++ { _ = i tmp11 := NewWindowsMinidump_Thread() err = tmp11.Read(this._io, this, this._root) if err != nil { return err } this.Threads = append(this.Threads, tmp11) } return err } /** * @see Source */ type WindowsMinidump_LocationDescriptor struct { LenData uint32 OfsData uint32 _io *kaitai.Stream _root *WindowsMinidump _parent interface{} _f_data bool data []byte } func NewWindowsMinidump_LocationDescriptor() *WindowsMinidump_LocationDescriptor { return &WindowsMinidump_LocationDescriptor{ } } func (this *WindowsMinidump_LocationDescriptor) Read(io *kaitai.Stream, parent interface{}, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp12, err := this._io.ReadU4le() if err != nil { return err } this.LenData = uint32(tmp12) tmp13, err := this._io.ReadU4le() if err != nil { return err } this.OfsData = uint32(tmp13) return err } func (this *WindowsMinidump_LocationDescriptor) Data() (v []byte, err error) { if (this._f_data) { return this.data, nil } thisIo := this._root._io _pos, err := thisIo.Pos() if err != nil { return nil, err } _, err = thisIo.Seek(int64(this.OfsData), io.SeekStart) if err != nil { return nil, err } tmp14, err := thisIo.ReadBytes(int(this.LenData)) if err != nil { return nil, err } tmp14 = tmp14 this.data = tmp14 _, err = thisIo.Seek(_pos, io.SeekStart) if err != nil { return nil, err } this._f_data = true this._f_data = true return this.data, nil } /** * Specific string serialization scheme used in MiniDump format is * actually a simple 32-bit length-prefixed UTF-16 string. * @see Source */ type WindowsMinidump_MinidumpString struct { LenStr uint32 Str string _io *kaitai.Stream _root *WindowsMinidump _parent *WindowsMinidump_SystemInfo } func NewWindowsMinidump_MinidumpString() *WindowsMinidump_MinidumpString { return &WindowsMinidump_MinidumpString{ } } func (this *WindowsMinidump_MinidumpString) Read(io *kaitai.Stream, parent *WindowsMinidump_SystemInfo, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp15, err := this._io.ReadU4le() if err != nil { return err } this.LenStr = uint32(tmp15) tmp16, err := this._io.ReadBytes(int(this.LenStr)) if err != nil { return err } tmp16 = tmp16 tmp17, err := kaitai.BytesToStr(tmp16, unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM).NewDecoder()) if err != nil { return err } this.Str = tmp17 return err } /** * "System info" stream provides basic information about the * hardware and operating system which produces this dump. * @see Source */ type WindowsMinidump_SystemInfo_CpuArchs int const ( WindowsMinidump_SystemInfo_CpuArchs__Intel WindowsMinidump_SystemInfo_CpuArchs = 0 WindowsMinidump_SystemInfo_CpuArchs__Arm WindowsMinidump_SystemInfo_CpuArchs = 5 WindowsMinidump_SystemInfo_CpuArchs__Ia64 WindowsMinidump_SystemInfo_CpuArchs = 6 WindowsMinidump_SystemInfo_CpuArchs__Amd64 WindowsMinidump_SystemInfo_CpuArchs = 9 WindowsMinidump_SystemInfo_CpuArchs__Unknown WindowsMinidump_SystemInfo_CpuArchs = 65535 ) type WindowsMinidump_SystemInfo struct { CpuArch WindowsMinidump_SystemInfo_CpuArchs CpuLevel uint16 CpuRevision uint16 NumCpus uint8 OsType uint8 OsVerMajor uint32 OsVerMinor uint32 OsBuild uint32 OsPlatform uint32 OfsServicePack uint32 OsSuiteMask uint16 Reserved2 uint16 _io *kaitai.Stream _root *WindowsMinidump _parent *WindowsMinidump_Dir _f_servicePack bool servicePack *WindowsMinidump_MinidumpString } func NewWindowsMinidump_SystemInfo() *WindowsMinidump_SystemInfo { return &WindowsMinidump_SystemInfo{ } } func (this *WindowsMinidump_SystemInfo) Read(io *kaitai.Stream, parent *WindowsMinidump_Dir, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp18, err := this._io.ReadU2le() if err != nil { return err } this.CpuArch = WindowsMinidump_SystemInfo_CpuArchs(tmp18) tmp19, err := this._io.ReadU2le() if err != nil { return err } this.CpuLevel = uint16(tmp19) tmp20, err := this._io.ReadU2le() if err != nil { return err } this.CpuRevision = uint16(tmp20) tmp21, err := this._io.ReadU1() if err != nil { return err } this.NumCpus = tmp21 tmp22, err := this._io.ReadU1() if err != nil { return err } this.OsType = tmp22 tmp23, err := this._io.ReadU4le() if err != nil { return err } this.OsVerMajor = uint32(tmp23) tmp24, err := this._io.ReadU4le() if err != nil { return err } this.OsVerMinor = uint32(tmp24) tmp25, err := this._io.ReadU4le() if err != nil { return err } this.OsBuild = uint32(tmp25) tmp26, err := this._io.ReadU4le() if err != nil { return err } this.OsPlatform = uint32(tmp26) tmp27, err := this._io.ReadU4le() if err != nil { return err } this.OfsServicePack = uint32(tmp27) tmp28, err := this._io.ReadU2le() if err != nil { return err } this.OsSuiteMask = uint16(tmp28) tmp29, err := this._io.ReadU2le() if err != nil { return err } this.Reserved2 = uint16(tmp29) return err } func (this *WindowsMinidump_SystemInfo) ServicePack() (v *WindowsMinidump_MinidumpString, err error) { if (this._f_servicePack) { return this.servicePack, nil } if (this.OfsServicePack > 0) { thisIo := this._root._io _pos, err := thisIo.Pos() if err != nil { return nil, err } _, err = thisIo.Seek(int64(this.OfsServicePack), io.SeekStart) if err != nil { return nil, err } tmp30 := NewWindowsMinidump_MinidumpString() err = tmp30.Read(thisIo, this, this._root) if err != nil { return nil, err } this.servicePack = tmp30 _, err = thisIo.Seek(_pos, io.SeekStart) if err != nil { return nil, err } this._f_servicePack = true } this._f_servicePack = true return this.servicePack, nil } /** * @see Source */ type WindowsMinidump_ExceptionRecord struct { Code uint32 Flags uint32 InnerException uint64 Addr uint64 NumParams uint32 Reserved uint32 Params []uint64 _io *kaitai.Stream _root *WindowsMinidump _parent *WindowsMinidump_ExceptionStream } func NewWindowsMinidump_ExceptionRecord() *WindowsMinidump_ExceptionRecord { return &WindowsMinidump_ExceptionRecord{ } } func (this *WindowsMinidump_ExceptionRecord) Read(io *kaitai.Stream, parent *WindowsMinidump_ExceptionStream, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp31, err := this._io.ReadU4le() if err != nil { return err } this.Code = uint32(tmp31) tmp32, err := this._io.ReadU4le() if err != nil { return err } this.Flags = uint32(tmp32) tmp33, err := this._io.ReadU8le() if err != nil { return err } this.InnerException = uint64(tmp33) tmp34, err := this._io.ReadU8le() if err != nil { return err } this.Addr = uint64(tmp34) tmp35, err := this._io.ReadU4le() if err != nil { return err } this.NumParams = uint32(tmp35) tmp36, err := this._io.ReadU4le() if err != nil { return err } this.Reserved = uint32(tmp36) for i := 0; i < int(15); i++ { _ = i tmp37, err := this._io.ReadU8le() if err != nil { return err } this.Params = append(this.Params, tmp37) } return err } /** * Memory address where exception has occurred */ /** * Additional parameters passed along with exception raise * function (for WinAPI, that is `RaiseException`). Meaning is * exception-specific. Given that this type is originally * defined by a C structure, it is described there as array of * fixed number of elements (`EXCEPTION_MAXIMUM_PARAMETERS` = * 15), but in reality only first `num_params` would be used. */ /** * @see Source */ type WindowsMinidump_MiscInfo struct { LenInfo uint32 Flags1 uint32 ProcessId uint32 ProcessCreateTime uint32 ProcessUserTime uint32 ProcessKernelTime uint32 CpuMaxMhz uint32 CpuCurMhz uint32 CpuLimitMhz uint32 CpuMaxIdleState uint32 CpuCurIdleState uint32 _io *kaitai.Stream _root *WindowsMinidump _parent *WindowsMinidump_Dir } func NewWindowsMinidump_MiscInfo() *WindowsMinidump_MiscInfo { return &WindowsMinidump_MiscInfo{ } } func (this *WindowsMinidump_MiscInfo) Read(io *kaitai.Stream, parent *WindowsMinidump_Dir, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp38, err := this._io.ReadU4le() if err != nil { return err } this.LenInfo = uint32(tmp38) tmp39, err := this._io.ReadU4le() if err != nil { return err } this.Flags1 = uint32(tmp39) tmp40, err := this._io.ReadU4le() if err != nil { return err } this.ProcessId = uint32(tmp40) tmp41, err := this._io.ReadU4le() if err != nil { return err } this.ProcessCreateTime = uint32(tmp41) tmp42, err := this._io.ReadU4le() if err != nil { return err } this.ProcessUserTime = uint32(tmp42) tmp43, err := this._io.ReadU4le() if err != nil { return err } this.ProcessKernelTime = uint32(tmp43) tmp44, err := this._io.ReadU4le() if err != nil { return err } this.CpuMaxMhz = uint32(tmp44) tmp45, err := this._io.ReadU4le() if err != nil { return err } this.CpuCurMhz = uint32(tmp45) tmp46, err := this._io.ReadU4le() if err != nil { return err } this.CpuLimitMhz = uint32(tmp46) tmp47, err := this._io.ReadU4le() if err != nil { return err } this.CpuMaxIdleState = uint32(tmp47) tmp48, err := this._io.ReadU4le() if err != nil { return err } this.CpuCurIdleState = uint32(tmp48) return err } /** * @see Source */ type WindowsMinidump_Dir struct { StreamType WindowsMinidump_StreamTypes LenData uint32 OfsData uint32 _io *kaitai.Stream _root *WindowsMinidump _parent *WindowsMinidump _raw_data []byte _f_data bool data interface{} } func NewWindowsMinidump_Dir() *WindowsMinidump_Dir { return &WindowsMinidump_Dir{ } } func (this *WindowsMinidump_Dir) Read(io *kaitai.Stream, parent *WindowsMinidump, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp49, err := this._io.ReadU4le() if err != nil { return err } this.StreamType = WindowsMinidump_StreamTypes(tmp49) tmp50, err := this._io.ReadU4le() if err != nil { return err } this.LenData = uint32(tmp50) tmp51, err := this._io.ReadU4le() if err != nil { return err } this.OfsData = uint32(tmp51) return err } func (this *WindowsMinidump_Dir) Data() (v interface{}, err error) { if (this._f_data) { return this.data, nil } _pos, err := this._io.Pos() if err != nil { return nil, err } _, err = this._io.Seek(int64(this.OfsData), io.SeekStart) if err != nil { return nil, err } switch (this.StreamType) { case WindowsMinidump_StreamTypes__MemoryList: tmp52, err := this._io.ReadBytes(int(this.LenData)) if err != nil { return nil, err } tmp52 = tmp52 this._raw_data = tmp52 _io__raw_data := kaitai.NewStream(bytes.NewReader(this._raw_data)) tmp53 := NewWindowsMinidump_MemoryList() err = tmp53.Read(_io__raw_data, this, this._root) if err != nil { return nil, err } this.data = tmp53 case WindowsMinidump_StreamTypes__MiscInfo: tmp54, err := this._io.ReadBytes(int(this.LenData)) if err != nil { return nil, err } tmp54 = tmp54 this._raw_data = tmp54 _io__raw_data := kaitai.NewStream(bytes.NewReader(this._raw_data)) tmp55 := NewWindowsMinidump_MiscInfo() err = tmp55.Read(_io__raw_data, this, this._root) if err != nil { return nil, err } this.data = tmp55 case WindowsMinidump_StreamTypes__ThreadList: tmp56, err := this._io.ReadBytes(int(this.LenData)) if err != nil { return nil, err } tmp56 = tmp56 this._raw_data = tmp56 _io__raw_data := kaitai.NewStream(bytes.NewReader(this._raw_data)) tmp57 := NewWindowsMinidump_ThreadList() err = tmp57.Read(_io__raw_data, this, this._root) if err != nil { return nil, err } this.data = tmp57 case WindowsMinidump_StreamTypes__Exception: tmp58, err := this._io.ReadBytes(int(this.LenData)) if err != nil { return nil, err } tmp58 = tmp58 this._raw_data = tmp58 _io__raw_data := kaitai.NewStream(bytes.NewReader(this._raw_data)) tmp59 := NewWindowsMinidump_ExceptionStream() err = tmp59.Read(_io__raw_data, this, this._root) if err != nil { return nil, err } this.data = tmp59 case WindowsMinidump_StreamTypes__SystemInfo: tmp60, err := this._io.ReadBytes(int(this.LenData)) if err != nil { return nil, err } tmp60 = tmp60 this._raw_data = tmp60 _io__raw_data := kaitai.NewStream(bytes.NewReader(this._raw_data)) tmp61 := NewWindowsMinidump_SystemInfo() err = tmp61.Read(_io__raw_data, this, this._root) if err != nil { return nil, err } this.data = tmp61 default: tmp62, err := this._io.ReadBytes(int(this.LenData)) if err != nil { return nil, err } tmp62 = tmp62 this._raw_data = tmp62 } _, err = this._io.Seek(_pos, io.SeekStart) if err != nil { return nil, err } this._f_data = true this._f_data = true return this.data, nil } /** * @see Source */ /** * @see Source */ type WindowsMinidump_Thread struct { ThreadId uint32 SuspendCount uint32 PriorityClass uint32 Priority uint32 Teb uint64 Stack *WindowsMinidump_MemoryDescriptor ThreadContext *WindowsMinidump_LocationDescriptor _io *kaitai.Stream _root *WindowsMinidump _parent *WindowsMinidump_ThreadList } func NewWindowsMinidump_Thread() *WindowsMinidump_Thread { return &WindowsMinidump_Thread{ } } func (this *WindowsMinidump_Thread) Read(io *kaitai.Stream, parent *WindowsMinidump_ThreadList, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp63, err := this._io.ReadU4le() if err != nil { return err } this.ThreadId = uint32(tmp63) tmp64, err := this._io.ReadU4le() if err != nil { return err } this.SuspendCount = uint32(tmp64) tmp65, err := this._io.ReadU4le() if err != nil { return err } this.PriorityClass = uint32(tmp65) tmp66, err := this._io.ReadU4le() if err != nil { return err } this.Priority = uint32(tmp66) tmp67, err := this._io.ReadU8le() if err != nil { return err } this.Teb = uint64(tmp67) tmp68 := NewWindowsMinidump_MemoryDescriptor() err = tmp68.Read(this._io, this, this._root) if err != nil { return err } this.Stack = tmp68 tmp69 := NewWindowsMinidump_LocationDescriptor() err = tmp69.Read(this._io, this, this._root) if err != nil { return err } this.ThreadContext = tmp69 return err } /** * Thread Environment Block */ /** * @see Source */ type WindowsMinidump_MemoryList struct { NumMemRanges uint32 MemRanges []*WindowsMinidump_MemoryDescriptor _io *kaitai.Stream _root *WindowsMinidump _parent *WindowsMinidump_Dir } func NewWindowsMinidump_MemoryList() *WindowsMinidump_MemoryList { return &WindowsMinidump_MemoryList{ } } func (this *WindowsMinidump_MemoryList) Read(io *kaitai.Stream, parent *WindowsMinidump_Dir, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp70, err := this._io.ReadU4le() if err != nil { return err } this.NumMemRanges = uint32(tmp70) for i := 0; i < int(this.NumMemRanges); i++ { _ = i tmp71 := NewWindowsMinidump_MemoryDescriptor() err = tmp71.Read(this._io, this, this._root) if err != nil { return err } this.MemRanges = append(this.MemRanges, tmp71) } return err } /** * @see Source */ type WindowsMinidump_MemoryDescriptor struct { AddrMemoryRange uint64 Memory *WindowsMinidump_LocationDescriptor _io *kaitai.Stream _root *WindowsMinidump _parent interface{} } func NewWindowsMinidump_MemoryDescriptor() *WindowsMinidump_MemoryDescriptor { return &WindowsMinidump_MemoryDescriptor{ } } func (this *WindowsMinidump_MemoryDescriptor) Read(io *kaitai.Stream, parent interface{}, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp72, err := this._io.ReadU8le() if err != nil { return err } this.AddrMemoryRange = uint64(tmp72) tmp73 := NewWindowsMinidump_LocationDescriptor() err = tmp73.Read(this._io, this, this._root) if err != nil { return err } this.Memory = tmp73 return err } /** * @see Source */ type WindowsMinidump_ExceptionStream struct { ThreadId uint32 Reserved uint32 ExceptionRec *WindowsMinidump_ExceptionRecord ThreadContext *WindowsMinidump_LocationDescriptor _io *kaitai.Stream _root *WindowsMinidump _parent *WindowsMinidump_Dir } func NewWindowsMinidump_ExceptionStream() *WindowsMinidump_ExceptionStream { return &WindowsMinidump_ExceptionStream{ } } func (this *WindowsMinidump_ExceptionStream) Read(io *kaitai.Stream, parent *WindowsMinidump_Dir, root *WindowsMinidump) (err error) { this._io = io this._parent = parent this._root = root tmp74, err := this._io.ReadU4le() if err != nil { return err } this.ThreadId = uint32(tmp74) tmp75, err := this._io.ReadU4le() if err != nil { return err } this.Reserved = uint32(tmp75) tmp76 := NewWindowsMinidump_ExceptionRecord() err = tmp76.Read(this._io, this, this._root) if err != nil { return err } this.ExceptionRec = tmp76 tmp77 := NewWindowsMinidump_LocationDescriptor() err = tmp77.Read(this._io, this, this._root) if err != nil { return err } this.ThreadContext = tmp77 return err }