internal DbiModuleInfo(BitAccess bits, bool readStrings) { bits.ReadInt32(out opened); new DbiSecCon(bits); bits.ReadUInt16(out flags); bits.ReadInt16(out stream); bits.ReadInt32(out cbSyms); bits.ReadInt32(out cbOldLines); bits.ReadInt32(out cbLines); bits.ReadInt16(out files); bits.ReadInt16(out pad1); bits.ReadUInt32(out offsets); bits.ReadInt32(out niSource); bits.ReadInt32(out niCompiler); if (readStrings) { bits.ReadCString(out moduleName); bits.ReadCString(out objectName); } else { bits.SkipCString(out moduleName); bits.SkipCString(out objectName); } bits.Align(4); //if (opened != 0 || pad1 != 0) { // throw new PdbException("Invalid DBI module. "+ // "(opened={0}, pad={1})", opened, pad1); //} }
internal short stream; // 34..35 #endregion Fields #region Constructors internal DbiModuleInfo(BitAccess bits, bool readStrings) { bits.ReadInt32(out opened); new DbiSecCon(bits); bits.ReadUInt16(out flags); bits.ReadInt16(out stream); bits.ReadInt32(out cbSyms); bits.ReadInt32(out cbOldLines); bits.ReadInt32(out cbLines); bits.ReadInt16(out files); bits.ReadInt16(out pad1); bits.ReadUInt32(out offsets); bits.ReadInt32(out niSource); bits.ReadInt32(out niCompiler); if (readStrings) { bits.ReadCString(out moduleName); bits.ReadCString(out objectName); } else { bits.SkipCString(out moduleName); bits.SkipCString(out objectName); } bits.Align(4); //if (opened != 0 || pad1 != 0) { // throw new PdbException("Invalid DBI module. "+ // "(opened={0}, pad={1})", opened, pad1); //} }
internal DbiSecCon(BitAccess bits) { bits.ReadInt16(out section); bits.ReadInt16(out pad1); bits.ReadInt32(out offset); bits.ReadInt32(out size); bits.ReadUInt32(out flags); bits.ReadInt16(out module); bits.ReadInt16(out pad2); bits.ReadUInt32(out dataCrc); bits.ReadUInt32(out relocCrc); }
internal DbiSecCon(BitAccess bits) { bits.ReadInt16(out section); bits.ReadInt16(out pad1); bits.ReadInt32(out offset); bits.ReadInt32(out size); bits.ReadUInt32(out flags); bits.ReadInt16(out module); bits.ReadInt16(out pad2); bits.ReadUInt32(out dataCrc); bits.ReadUInt32(out relocCrc); //if (pad1 != 0 || pad2 != 0) { // throw new PdbException("Invalid DBI section. "+ // "(pad1={0}, pad2={1})", // pad1, pad2); //} }
internal int size; // 8..11 #endregion Fields #region Constructors internal DbiSecCon(BitAccess bits) { bits.ReadInt16(out section); bits.ReadInt16(out pad1); bits.ReadInt32(out offset); bits.ReadInt32(out size); bits.ReadUInt32(out flags); bits.ReadInt16(out module); bits.ReadInt16(out pad2); bits.ReadUInt32(out dataCrc); bits.ReadUInt32(out relocCrc); //if (pad1 != 0 || pad2 != 0) { // throw new PdbException("Invalid DBI section. "+ // "(pad1={0}, pad2={1})", // pad1, pad2); //} }
internal ushort vers; // 14..15 /// <summary> /// </summary> /// <param name="bits"> /// </param> internal DbiHeader(BitAccess bits) { bits.ReadInt32(out this.sig); bits.ReadInt32(out this.ver); bits.ReadInt32(out this.age); bits.ReadInt16(out this.gssymStream); bits.ReadUInt16(out this.vers); bits.ReadInt16(out this.pssymStream); bits.ReadUInt16(out this.pdbver); bits.ReadInt16(out this.symrecStream); bits.ReadUInt16(out this.pdbver2); bits.ReadInt32(out this.gpmodiSize); bits.ReadInt32(out this.secconSize); bits.ReadInt32(out this.secmapSize); bits.ReadInt32(out this.filinfSize); bits.ReadInt32(out this.tsmapSize); bits.ReadInt32(out this.mfcIndex); bits.ReadInt32(out this.dbghdrSize); bits.ReadInt32(out this.ecinfoSize); bits.ReadUInt16(out this.flags); bits.ReadUInt16(out this.machine); bits.ReadInt32(out this.reserved); }
internal ushort vers; // 14..15 #endregion Fields #region Constructors internal DbiHeader(BitAccess bits) { bits.ReadInt32(out sig); bits.ReadInt32(out ver); bits.ReadInt32(out age); bits.ReadInt16(out gssymStream); bits.ReadUInt16(out vers); bits.ReadInt16(out pssymStream); bits.ReadUInt16(out pdbver); bits.ReadInt16(out symrecStream); bits.ReadUInt16(out pdbver2); bits.ReadInt32(out gpmodiSize); bits.ReadInt32(out secconSize); bits.ReadInt32(out secmapSize); bits.ReadInt32(out filinfSize); bits.ReadInt32(out tsmapSize); bits.ReadInt32(out mfcIndex); bits.ReadInt32(out dbghdrSize); bits.ReadInt32(out ecinfoSize); bits.ReadUInt16(out flags); bits.ReadUInt16(out machine); bits.ReadInt32(out reserved); }
internal DbiHeader(BitAccess bits) { bits.ReadInt32(out sig); bits.ReadInt32(out ver); bits.ReadInt32(out age); bits.ReadInt16(out gssymStream); bits.ReadUInt16(out vers); bits.ReadInt16(out pssymStream); bits.ReadUInt16(out pdbver); bits.ReadInt16(out symrecStream); bits.ReadUInt16(out pdbver2); bits.ReadInt32(out gpmodiSize); bits.ReadInt32(out secconSize); bits.ReadInt32(out secmapSize); bits.ReadInt32(out filinfSize); bits.ReadInt32(out tsmapSize); bits.ReadInt32(out mfcIndex); bits.ReadInt32(out dbghdrSize); bits.ReadInt32(out ecinfoSize); bits.ReadUInt16(out flags); bits.ReadUInt16(out machine); bits.ReadInt32(out reserved); }
internal PdbConstant(BitAccess bits) { uint token; bits.ReadUInt32(out token); Token = token; byte tag1; bits.ReadUInt8(out tag1); byte tag2; bits.ReadUInt8(out tag2); if (tag2 == 0) { Value = tag1; } else if (tag2 == 0x80) { switch (tag1) { case 0x00: //sbyte sbyte sb; bits.ReadInt8(out sb); Value = sb; break; case 0x01: //short short s; bits.ReadInt16(out s); Value = s; break; case 0x02: //ushort ushort us; bits.ReadUInt16(out us); Value = us; break; case 0x03: //int int i; bits.ReadInt32(out i); Value = i; break; case 0x04: //uint uint ui; bits.ReadUInt32(out ui); Value = ui; break; case 0x05: //float Value = bits.ReadFloat(); break; case 0x06: //double Value = bits.ReadDouble(); break; case 0x09: //long long sl; bits.ReadInt64(out sl); Value = sl; break; case 0x0a: //ulong ulong ul; bits.ReadUInt64(out ul); Value = ul; break; case 0x10: //string string str; bits.ReadBString(out str); Value = str; break; case 0x19: //decimal Value = bits.ReadDecimal(); break; } } bits.ReadCString(out string name); Name = name; }
/// <summary> /// </summary> /// <param name="bits"> /// </param> internal PdbConstant(BitAccess bits) { bits.ReadUInt32(out this.token); byte tag1; bits.ReadUInt8(out tag1); byte tag2; bits.ReadUInt8(out tag2); if (tag2 == 0) { this.value = tag1; } else if (tag2 == 0x80) { switch (tag1) { case 0x01: // short short s; bits.ReadInt16(out s); this.value = s; break; case 0x02: // ushort ushort us; bits.ReadUInt16(out us); this.value = us; break; case 0x03: // int int i; bits.ReadInt32(out i); this.value = i; break; case 0x04: // uint uint ui; bits.ReadUInt32(out ui); this.value = ui; break; case 0x05: // float this.value = bits.ReadFloat(); break; case 0x06: // double this.value = bits.ReadDouble(); break; case 0x09: // long long sl; bits.ReadInt64(out sl); this.value = sl; break; case 0x0a: // ulong ulong ul; bits.ReadUInt64(out ul); this.value = ul; break; case 0x10: // string string str; bits.ReadBString(out str); this.value = str; break; case 0x19: // decimal this.value = bits.ReadDecimal(); break; default: // TODO: error break; } } else { // TODO: error } bits.ReadCString(out this.name); }
internal PdbConstant(BitAccess bits) { bits.ReadUInt32(out this.token); byte tag1; bits.ReadUInt8(out tag1); byte tag2; bits.ReadUInt8(out tag2); if (tag2 == 0) { this.value = tag1; } else if (tag2 == 0x80) { switch (tag1) { case 0x00: //sbyte sbyte sb; bits.ReadInt8(out sb); this.value = sb; break; case 0x01: //short short s; bits.ReadInt16(out s); this.value = s; break; case 0x02: //ushort ushort us; bits.ReadUInt16(out us); this.value = us; break; case 0x03: //int int i; bits.ReadInt32(out i); this.value = i; break; case 0x04: //uint uint ui; bits.ReadUInt32(out ui); this.value = ui; break; case 0x05: //float this.value = bits.ReadFloat(); break; case 0x06: //double this.value = bits.ReadDouble(); break; case 0x09: //long long sl; bits.ReadInt64(out sl); this.value = sl; break; case 0x0a: //ulong ulong ul; bits.ReadUInt64(out ul); this.value = ul; break; case 0x10: //string string str; bits.ReadBString(out str); this.value = str; break; case 0x19: //decimal this.value = bits.ReadDecimal(); break; default: //TODO: error break; } } else { //TODO: error } bits.ReadCString(out name); }
internal DbiModuleInfo(BitAccess bits, bool readStrings) { bits.ReadInt32(out opened); new DbiSecCon(bits); bits.ReadUInt16(out flags); bits.ReadInt16(out stream); bits.ReadInt32(out cbSyms); bits.ReadInt32(out cbOldLines); bits.ReadInt32(out cbLines); bits.ReadInt16(out files); bits.ReadInt16(out pad1); bits.ReadUInt32(out offsets); bits.ReadInt32(out niSource); bits.ReadInt32(out niCompiler); if (readStrings) { bits.ReadCString(out moduleName); bits.ReadCString(out objectName); } else { bits.SkipCString(out moduleName); bits.SkipCString(out objectName); } bits.Align(4); }