コード例 #1
0
ファイル: TableIndex.cs プロジェクト: Astaelan/Fusion
        public void LoadData(CLIFile pFile)
        {
            int token = 0;

            if (pFile.ModuleTable.Length > ResolutionScopeTypeMax16BitRows ||
                pFile.ModuleRefTable.Length > ResolutionScopeTypeMax16BitRows ||
                pFile.AssemblyRefTable.Length > ResolutionScopeTypeMax16BitRows ||
                pFile.TypeRefTable.Length > ResolutionScopeTypeMax16BitRows)
            {
                token = pFile.ReadInt32();
            }
            else
            {
                token = pFile.ReadUInt16();
            }
            Type  = (ResolutionScopeType)(token & ResolutionScopeTypeMask);
            token = (token >> ResolutionScopeTypeBits) - 1;
            if (token >= 0)
            {
                switch (Type)
                {
                case ResolutionScopeType.Module: Module = pFile.ModuleTable[token]; break;

                case ResolutionScopeType.ModuleRef: ModuleRef = pFile.ModuleRefTable[token]; break;

                case ResolutionScopeType.AssemblyRef: AssemblyRef = pFile.AssemblyRefTable[token]; break;

                case ResolutionScopeType.TypeRef: TypeRef = pFile.TypeRefTable[token]; break;

                default: throw new BadImageFormatException("ResolutionScope Type");
                }
            }
        }
コード例 #2
0
ファイル: TableIndex.cs プロジェクト: Astaelan/Fusion
        public void LoadData(CLIFile pFile)
        {
            int token = 0;

            if (pFile.TypeDefTable.Length > TypeDefRefOrSpecTypeMax16BitRows ||
                pFile.TypeRefTable.Length > TypeDefRefOrSpecTypeMax16BitRows ||
                pFile.TypeSpecTable.Length > TypeDefRefOrSpecTypeMax16BitRows)
            {
                token = pFile.ReadInt32();
            }
            else
            {
                token = pFile.ReadUInt16();
            }
            Type  = (TypeDefRefOrSpecType)(token & TypeDefRefOrSpecTypeMask);
            token = (token >> TypeDefRefOrSpecTypeBits) - 1;
            if (token >= 0)
            {
                switch (Type)
                {
                case TypeDefRefOrSpecType.TypeDef: TypeDef = pFile.TypeDefTable[token]; break;

                case TypeDefRefOrSpecType.TypeRef: TypeRef = pFile.TypeRefTable[token]; break;

                case TypeDefRefOrSpecType.TypeSpec: TypeSpec = pFile.TypeSpecTable[token]; break;

                default: throw new BadImageFormatException("TypeDefRefOrSpec Type");
                }
            }
        }
コード例 #3
0
ファイル: TableIndex.cs プロジェクト: Astaelan/Fusion
        public void LoadData(CLIFile pFile)
        {
            int token = 0;

            if (pFile.TypeDefTable.Length > MemberRefParentTypeMax16BitRows ||
                pFile.TypeRefTable.Length > MemberRefParentTypeMax16BitRows ||
                pFile.ModuleRefTable.Length > MemberRefParentTypeMax16BitRows ||
                pFile.MethodDefTable.Length > MemberRefParentTypeMax16BitRows ||
                pFile.TypeSpecTable.Length > MemberRefParentTypeMax16BitRows)
            {
                token = pFile.ReadInt32();
            }
            else
            {
                token = pFile.ReadUInt16();
            }
            Type  = (MemberRefParentType)(token & MemberRefParentTypeMask);
            token = (token >> MemberRefParentTypeBits) - 1;
            if (token >= 0)
            {
                switch (Type)
                {
                case MemberRefParentType.TypeDef: TypeDef = pFile.TypeDefTable[token]; break;

                case MemberRefParentType.TypeRef: TypeRef = pFile.TypeRefTable[token]; break;

                case MemberRefParentType.ModuleRef: ModuleRef = pFile.ModuleRefTable[token]; break;

                case MemberRefParentType.MethodDef: MethodDef = pFile.MethodDefTable[token]; break;

                case MemberRefParentType.TypeSpec: TypeSpec = pFile.TypeSpecTable[token]; break;

                default: throw new BadImageFormatException("MemberRefParent Type");
                }
            }
        }
コード例 #4
0
ファイル: TableIndex.cs プロジェクト: Astaelan/Fusion
        public void LoadData(CLIFile pFile)
        {
            int token = 0;

            if (pFile.MethodDefTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.FieldTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.TypeRefTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.TypeDefTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.ParamTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.InterfaceImplTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.MemberRefTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.ModuleTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.DeclSecurityTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.PropertyTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.EventTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.StandAloneSigTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.ModuleRefTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.TypeSpecTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.AssemblyTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.AssemblyRefTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.FileTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.ExportedTypeTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.ManifestResourceTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.GenericParamTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.GenericParamConstraintTable.Length > HasCustomAttributeTypeMax16BitRows ||
                pFile.MethodSpecTable.Length > HasCustomAttributeTypeMax16BitRows)
            {
                token = pFile.ReadInt32();
            }
            else
            {
                token = pFile.ReadUInt16();
            }
            Type  = (HasCustomAttributeType)(token & HasCustomAttributeTypeMask);
            token = (token >> HasCustomAttributeTypeBits) - 1;
            if (token >= 0)
            {
                switch (Type)
                {
                case HasCustomAttributeType.MethodDef: MethodDef = pFile.MethodDefTable[token]; break;

                case HasCustomAttributeType.Field: Field = pFile.FieldTable[token]; break;

                case HasCustomAttributeType.TypeRef: TypeRef = pFile.TypeRefTable[token]; break;

                case HasCustomAttributeType.TypeDef: TypeDef = pFile.TypeDefTable[token]; break;

                case HasCustomAttributeType.Param: Param = pFile.ParamTable[token]; break;

                case HasCustomAttributeType.InterfaceImpl: InterfaceImpl = pFile.InterfaceImplTable[token]; break;

                case HasCustomAttributeType.MemberRef: MemberRef = pFile.MemberRefTable[token]; break;

                case HasCustomAttributeType.Module: Module = pFile.ModuleTable[token]; break;

                case HasCustomAttributeType.DeclSecurity: DeclSecurity = pFile.DeclSecurityTable[token]; break;

                case HasCustomAttributeType.Property: Property = pFile.PropertyTable[token]; break;

                case HasCustomAttributeType.Event: Event = pFile.EventTable[token]; break;

                case HasCustomAttributeType.StandAloneSig: StandAloneSig = pFile.StandAloneSigTable[token]; break;

                case HasCustomAttributeType.ModuleRef: ModuleRef = pFile.ModuleRefTable[token]; break;

                case HasCustomAttributeType.TypeSpec: TypeSpec = pFile.TypeSpecTable[token]; break;

                case HasCustomAttributeType.Assembly: Assembly = pFile.AssemblyTable[token]; break;

                case HasCustomAttributeType.AssemblyRef: AssemblyRef = pFile.AssemblyRefTable[token]; break;

                case HasCustomAttributeType.File: File = pFile.FileTable[token]; break;

                case HasCustomAttributeType.ExportedType: ExportedType = pFile.ExportedTypeTable[token]; break;

                case HasCustomAttributeType.ManifestResource: ManifestResource = pFile.ManifestResourceTable[token]; break;

                case HasCustomAttributeType.GenericParam: GenericParam = pFile.GenericParamTable[token]; break;

                case HasCustomAttributeType.GenericParamConstraint: GenericParamConstraint = pFile.GenericParamConstraintTable[token]; break;

                case HasCustomAttributeType.MethodSpec: MethodSpec = pFile.MethodSpecTable[token]; break;

                default: throw new BadImageFormatException("HasCustomAttribute Type");
                }
            }
        }