GetBlobCopy() private method

private GetBlobCopy ( int blobIndex ) : byte[]
blobIndex int
return byte[]
コード例 #1
0
        private AssemblyName GetNameImpl(ref AssemblyTable.Record rec)
        {
            AssemblyName name = new AssemblyName();

            name.Name    = manifestModule.GetString(rec.Name);
            name.Version = new Version(rec.MajorVersion, rec.MinorVersion, rec.BuildNumber, rec.RevisionNumber);
            if (rec.PublicKey != 0)
            {
                name.SetPublicKey(manifestModule.GetBlobCopy(rec.PublicKey));
            }
            else
            {
                name.SetPublicKey(Empty <byte> .Array);
            }
            if (rec.Culture != 0)
            {
                name.Culture = manifestModule.GetString(rec.Culture);
            }
            else
            {
                name.Culture = "";
            }
            name.HashAlgorithm = (AssemblyHashAlgorithm)rec.HashAlgId;
            name.CodeBase      = this.CodeBase;
            name.RawFlags      = (AssemblyNameFlags)rec.Flags;
            return(name);
        }
コード例 #2
0
        private AssemblyName GetNameImpl(ref AssemblyTable.Record rec)
        {
            AssemblyName name = new AssemblyName();

            name.Name    = manifestModule.GetString(rec.Name);
            name.Version = new Version(rec.MajorVersion, rec.MinorVersion, rec.BuildNumber, rec.RevisionNumber);
            if (rec.PublicKey != 0)
            {
                name.SetPublicKey(manifestModule.GetBlobCopy(rec.PublicKey));
            }
            else
            {
                name.SetPublicKey(Empty <byte> .Array);
            }
            if (rec.Culture != 0)
            {
                name.CultureInfo = new System.Globalization.CultureInfo(manifestModule.GetString(rec.Culture));
            }
            else
            {
                name.CultureInfo = System.Globalization.CultureInfo.InvariantCulture;
            }
            switch (rec.HashAlgId)
            {
            case 0:
                name.HashAlgorithm = AssemblyHashAlgorithm.None;
                break;

            case 0x8003:
                name.HashAlgorithm = AssemblyHashAlgorithm.MD5;
                break;

            case 0x8004:
                name.HashAlgorithm = AssemblyHashAlgorithm.SHA1;
                break;

            default:
                throw new BadImageFormatException();
            }
            name.CodeBase = this.CodeBase;
            name.Flags    = (AssemblyNameFlags)rec.Flags;
            return(name);
        }
コード例 #3
0
        private AssemblyName GetNameImpl(ref AssemblyTable.Record rec)
        {
            AssemblyName name = new AssemblyName();

            name.Name    = manifestModule.GetString(rec.Name);
            name.Version = new Version(rec.MajorVersion, rec.MinorVersion, rec.BuildNumber, rec.RevisionNumber);
            if (rec.PublicKey != 0)
            {
                name.SetPublicKey(manifestModule.GetBlobCopy(rec.PublicKey));
            }
            else
            {
                name.SetPublicKey(Empty <byte> .Array);
            }
            if (rec.Culture != 0)
            {
                name.Culture = manifestModule.GetString(rec.Culture);
            }
            else
            {
                name.Culture = "";
            }
            name.HashAlgorithm = (AssemblyHashAlgorithm)rec.HashAlgId;
            name.CodeBase      = this.CodeBase;
            PortableExecutableKinds peKind;
            ImageFileMachine        machine;

            manifestModule.GetPEKind(out peKind, out machine);
            switch (machine)
            {
            case ImageFileMachine.I386:
                // FXBUG we copy the .NET bug that Preferred32Bit implies x86
                if ((peKind & (PortableExecutableKinds.Required32Bit | PortableExecutableKinds.Preferred32Bit)) != 0)
                {
                    name.ProcessorArchitecture = ProcessorArchitecture.X86;
                }
                else if ((rec.Flags & 0x70) == 0x70)
                {
                    // it's a reference assembly
                    name.ProcessorArchitecture = ProcessorArchitecture.None;
                }
                else
                {
                    name.ProcessorArchitecture = ProcessorArchitecture.MSIL;
                }
                break;

            case ImageFileMachine.IA64:
                name.ProcessorArchitecture = ProcessorArchitecture.IA64;
                break;

            case ImageFileMachine.AMD64:
                name.ProcessorArchitecture = ProcessorArchitecture.Amd64;
                break;

            case ImageFileMachine.ARM:
                name.ProcessorArchitecture = ProcessorArchitecture.Arm;
                break;
            }
            name.RawFlags = (AssemblyNameFlags)rec.Flags;
            return(name);
        }