Ejemplo n.º 1
0
        private IEnumerable <byte> ReadCustomMetadata(ManagedProcedureSymbol function)
        {
            foreach (OemSymbol oem in function.Children.OfType <OemSymbol>())
            {
                if (oem.Id == MsilMetadataGuid)
                {
                    IBinaryReader reader = oem.UserDataReader;
                    string        name   = reader.ReadCStringWide().String;

                    if (name == "MD2")
                    {
                        byte version = reader.ReadByte();

                        if (version == 4)
                        {
                            int count = reader.ReadByte();

                            reader.Align(4);
                            for (int i = 0; i < count; i++)
                            {
                                long start        = reader.Position;
                                byte entryVersion = reader.ReadByte();
                                byte kind         = reader.ReadByte();

                                reader.Align(4);
                                yield return(kind);

                                uint numberOfBytesInItem = reader.ReadUint();
                                reader.Position = start + numberOfBytesInItem;
                            }
                        }
                    }
                }
            }
        }