in src/BinaryParsers/PEBinary/PortableExecutable/PEExtensionMethods.cs [38:71]
public static int GetTypeLen(this ImageFieldData fi)
{
int res = 0;
bool b64bit = false;
PEHeader ioh = fi.ParentHeader;
if (ioh != null)
{
b64bit = (ioh.Magic == PEMagic.PE32Plus);
}
if (b64bit && fi.Is32BitOnly)
{
return 0;
}
switch (fi.Type)
{
case Type.BYTE: res = 1; break;
case Type.SBYTE: res = 1; break;
case Type.UINT16: res = 2; break;
case Type.INT16: res = 2; break;
case Type.UINT32: res = 4; break;
case Type.INT32: res = 4; break;
case Type.UINT64: res = 8; break;
case Type.INT64: res = 8; break;
case Type.POINTER: res = 4; break;
case Type.HEADER: res = fi.Header.Size; break;
case Type.NATIVEINT: res = b64bit ? 8 : 4; break;
default: throw new Exception("Unknown type");
}
return res;
}