diff --git a/dumper/SDKmaker/Il2CppSDK.exe b/dumper/SDKmaker/Il2CppSDK.exe new file mode 100644 index 000000000..ce87fd1ca Binary files /dev/null and b/dumper/SDKmaker/Il2CppSDK.exe differ diff --git a/dumper/SDKmaker/Il2CppSDK.exe.config b/dumper/SDKmaker/Il2CppSDK.exe.config new file mode 100644 index 000000000..56efbc7b5 --- /dev/null +++ b/dumper/SDKmaker/Il2CppSDK.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dumper/SDKmaker/Il2CppSDK.pdb b/dumper/SDKmaker/Il2CppSDK.pdb new file mode 100644 index 000000000..197c3a263 Binary files /dev/null and b/dumper/SDKmaker/Il2CppSDK.pdb differ diff --git a/dumper/SDKmaker/dnlib.dll b/dumper/SDKmaker/dnlib.dll new file mode 100644 index 000000000..c43c9b676 Binary files /dev/null and b/dumper/SDKmaker/dnlib.dll differ diff --git a/dumper/SDKmaker/dnlib.xml b/dumper/SDKmaker/dnlib.xml new file mode 100644 index 000000000..9c0ad0206 --- /dev/null +++ b/dumper/SDKmaker/dnlib.xml @@ -0,0 +1,38514 @@ + + + + dnlib + + + + + Returns types without getting stuck in an infinite loop + + + + + Gets a list of all types and nested types + + A list of types + + + + Assembly flags from Assembly.Flags column. + + See CorHdr.h/CorAssemblyFlags + + + No flags set + + + The assembly ref holds the full (unhashed) public key. + + + Processor Architecture unspecified + + + Processor Architecture: neutral (PE32) + + + Processor Architecture: x86 (PE32) + + + Processor Architecture: Itanium (PE32+) + + + Processor Architecture: AMD X64 (PE32+) + + + Processor Architecture: ARM (PE32) + + + applies to any platform but cannot run on any (e.g. reference assembly), should not have "specified" set + + + Propagate PA flags to AssemblyRef record + + + Bits describing the processor architecture + + + Bits describing the PA incl. Specified + + + NOT A FLAG, shift count in PA flags <--> index conversion + + + From "DebuggableAttribute". + + + From "DebuggableAttribute". + + + The assembly can be retargeted (at runtime) to an assembly from a different publisher. + + + + + + + + + Bits describing ContentType + + + + A high-level representation of a row in the Assembly table + + + + + The row id in its table + + + + + + + + + + + + + + + + + From column Assembly.HashAlgId + + + + + + + + From columns Assembly.MajorVersion, Assembly.MinorVersion, Assembly.BuildNumber, + Assembly.RevisionNumber. + + If is null + + + + + + + From column Assembly.Flags + + + + Attributes + + + + From column Assembly.PublicKey + + An empty is created if the caller writes null + + + + + + + Gets the public key token which is calculated from + + + + + From column Assembly.Name + + + + Name + + + + From column Assembly.Locale + + + + Name + + + + + + + + + Initializes + + + + + + + + + + + + + Gets all modules. The first module is always the . + + + + + + + Initializes + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + + + + true if is not empty + + + + + Gets the manifest (main) module. This is always the first module in . + null is returned if is empty. + + + + + Modify property: = + ( & ) | . + + Value to AND + Value to OR + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the bit + + + + + Gets/sets the processor architecture + + + + + Gets/sets the processor architecture + + + + + true if unspecified processor architecture + + + + + true if neutral (PE32) architecture + + + + + true if x86 (PE32) architecture + + + + + true if IA-64 (PE32+) architecture + + + + + true if x64 (PE32+) architecture + + + + + true if ARM (PE32) architecture + + + + + true if eg. reference assembly (not runnable) + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the content type + + + + + true if content type is Default + + + + + true if content type is WindowsRuntime + + + + + Finds a module in this assembly + + Name of module + A instance or null if it wasn't found. + + + + Creates an instance from a file + + File name of an existing .NET assembly + Module context or null + A new instance + If is null + If it's not a .NET assembly (eg. not a .NET file or only a .NET module) + + + + Creates an instance from a file + + File name of an existing .NET assembly + Module creation options or null + A new instance + If is null + If it's not a .NET assembly (eg. not a .NET file or only a .NET module) + + + + Creates an instance from a byte[] + + Contents of a .NET assembly + Module context or null + A new instance + If is null + If it's not a .NET assembly (eg. not a .NET file or only a .NET module) + + + + Creates an instance from a byte[] + + Contents of a .NET assembly + Module creation options or null + A new instance + If is null + If it's not a .NET assembly (eg. not a .NET file or only a .NET module) + + + + Creates an instance from a memory location + + Address of a .NET assembly + Module context or null + A new instance + If is null + If it's not a .NET assembly (eg. not a .NET file or only a .NET module) + + + + Creates an instance from a memory location + + Address of a .NET assembly + Module creation options or null + A new instance + If is null + If it's not a .NET assembly (eg. not a .NET file or only a .NET module) + + + + Creates an instance from a stream + + This will read all bytes from the stream and call . + It's better to use one of the other Load() methods. + The stream + Module context or null + A new instance + If is null + If it's not a .NET assembly (eg. not a .NET file or only a .NET module) + + + + Creates an instance from a stream + + This will read all bytes from the stream and call . + It's better to use one of the other Load() methods. + The stream + Module creation options or null + A new instance + If is null + If it's not a .NET assembly (eg. not a .NET file or only a .NET module) + + + + Gets the assembly name with the public key + + + + + Gets the assembly name with the public key token + + + + + Finds a . For speed, enable + if possible (read the documentation first). + + Full name of the type (no assembly information) + true if it's a reflection name, and nested + type names are separated by a + character. If false, nested type names + are separated by a / character. + An existing or null if it wasn't found. + + + + Finds a . Its scope (i.e., module or assembly) is ignored when + looking up the type. For speed, enable + if possible (read the documentation first). + + The type ref + An existing or null if it wasn't found. + + + + Writes the assembly to a file on disk. If the file exists, it will be truncated. + + Filename + Writer options + + + + Writes the assembly to a stream. + + Destination stream + Writer options + + + + Checks whether this assembly is a friend assembly of + + Target assembly + + + + Adds or updates an existing System.Reflection.AssemblySignatureKeyAttribute + attribute. This attribute is used in enhanced strong naming with key migration. + See http://msdn.microsoft.com/en-us/library/hh415055.aspx + + Identity public key + Identity strong name key pair + Signature public key + + + + Gets the original System.Runtime.Versioning.TargetFrameworkAttribute custom attribute information if possible. + It reads this from the original metadata and doesn't use . + Returns false if the custom attribute isn't present or if it is invalid. + + Framework name + Version + Profile + + + + + + + + + + + + + + + + + + + + + + + An Assembly row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + Simple name + If any of the args is invalid + + + + Constructor + + Simple name + Version + If any of the args is invalid + + + + Constructor + + Simple name + Version + Public key + If any of the args is invalid + + + + Constructor + + Simple name + Version + Public key + Locale + If any of the args is invalid + + + + Constructor + + Assembly name info + If is null + + + + Constructor + + Assembly name info + If is null + + + + Created from a row in the Assembly table + + + + The module where this instance is located + + + + + + + + + + + + + + + + + + + + + + Constructor + + The module which contains this Assembly row + Row ID + If is null + If is invalid + + + + Hashes some data according to a + + + + + Constructor + + If is an unsupported hash algorithm, then + will be used as the hash algorithm. + The algorithm to use + + + + + + + Hash data + + If is an unsupported hash algorithm, then + will be used as the hash algorithm. + The data + The algorithm to use + Hashed data or null if was null + + + + Hash data + + Data + + + + Hash data + + Data + Offset + Length + + + + Hash stream data + + Stream + Number of bytes to hash + Temp buffer + + + + Computes the hash + + + + + Creates a public key token from the hash of some + + A public key is hashed, and the last 8 bytes of the hash, in reverse + order, is used as the public key token + The data + A new instance + + + + Any ALG_CLASS_HASH type in WinCrypt.h can be used by Microsoft's CLI implementation + + + + + + + + + + + + + This is a reserved value in the CLI + + + The only algorithm supported by the CLI + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extension methods + + + + + Gets the field type + + this + Field type or null if none + + + + Gets the return type + + this + Return type or null if none + + + + Gets the parameters + + this + The parameters + + + + Gets the parameter count + + this + Parameter count + + + + Gets the generic parameter count + + this + Generic parameter count + + + + Gets the parameters after the sentinel + + this + Parameters after sentinel or null if none + + + + Gets the locals + + this + All locals + + + + Gets the generic arguments + + this + All generic arguments + + + + Gets the property + + this + The type's property or + false if input isnull + + + + Returns true if it's an integer or a floating point type + + Element type + + + + + Returns the size of the element type in bytes or -1 if it's unknown + + Element type + Size of a pointer + + + + + Checks whether it's a value type + + this + true if it's a value type, false if it's not a value type or + if we couldn't determine whether it's a value type. Eg., it could be a generic + instance type. + + + + Finds and returns an + + this + The assembly to find + The module that needs to resolve an assembly or null + An instance owned by the assembly resolver or + null if the assembly couldn't be found. + + + + Finds and returns an + + this + The assembly to find + The module that needs to resolve an assembly or null + An instance owned by the assembly resolver or + null if the assembly couldn't be found. + + + + Finds and returns an + + this + The assembly to find + The module that needs to resolve an assembly or null + An instance owned by the assembly resolver + If the assembly couldn't be found. + + + + Finds and returns an + + this + The assembly to find + The module that needs to resolve an assembly or null + An instance owned by the assembly resolver + If the assembly couldn't be found. + + + + Finds and returns an + + this + The assembly to find + The module that needs to resolve an assembly or null + An instance owned by the assembly resolver + If the assembly couldn't be found. + + + + Checks whether appears to be the core library (eg. + mscorlib, System.Runtime or corefx). + + If is a reference to a private corlib (eg. System.Private.CoreLib), + this method returns false unless is an + whose manifest (first) module defines System.Object. This check is performed in + the constructor and the result can be found in . + + Note that this method also returns true if it appears to be a 'public' corlib, + eg. mscorlib, etc, even if it internally possibly references a private corlib. + + The assembly + + + + Converts to a instance + + The assembly + A new instance + + + + Converts to a + + The type + true if we should try to figure out whether + is a + A instance or null if + is invalid + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns the base type of . Throws if we can't resolve + a . + + The type + The base type or null if there's no base type + + + + Returns the base type of + + The type + true if we should throw if we can't + resolve a . false if we should ignore the error and + just return null. + The base type or null if there's no base type, or if + is true and we couldn't resolve + a + + + + Gets the scope type, resolves it, and returns the + + Type + A or null if input was null or if we + couldn't resolve the reference. + + + + Gets the scope type, resolves it, and returns the + + Type + A instance. + If the type couldn't be resolved + + + + Resolves an to a . Returns null if it + was not possible to resolve it. See also + + Field to resolve + The or null if is + null or if it wasn't possible to resolve it (the field doesn't exist or its + assembly couldn't be loaded) + + + + Resolves an to a and throws an exception if + it was not possible to resolve it. See also + + Field to resolve + The + + + + Resolves an to a . Returns null if it + was not possible to resolve it. See also . If + is a , then the + property is resolved and returned. + + Method to resolve + The or null if is + null or if it wasn't possible to resolve it (the method doesn't exist or its + assembly couldn't be loaded) + + + + Resolves an to a and throws an exception + if it was not possible to resolve it. See also . If + is a , then the + property is resolved and returned. + + Method to resolve + The + + + + Returns the definition assembly of a + + Member reference + + + + + Gets the normal visible parameters, doesn't include the hidden 'this' parameter + + this + The normal visible parameters + + + + Gets the normal visible parameter count, doesn't include the hidden 'this' parameter + + this + Normal visible parameter count + + + + Checks whether any normal visible parameter exists, doesn't include the hidden 'this' parameter + + this + true if there's at least one normal visible parameter + + + + Gets a normal visible parameter, doesn't include the hidden 'this' parameter + + this + Normal visible parameter index + + + + + Converts a to a + + The sig + + + + Returns true if it's an integer or a floating point type + + Type + + + + + Gets a if matches a primitive type. + + this + The type + A or null if it didn't match any primitive type + + + + Gets a if and + matches a primitive type. + + this + Namespace + Name + Definition assembly + A or null if it didn't match any primitive type + + + + Gets a if and + matches a primitive type. + + this + Namespace + Name + Definition assembly + A or null if it didn't match any primitive type + + + + Log an error message + + this + Sender or null + Message + + + + Log an error message + + this + Sender or null + Message + Message arg #1 + + + + Log an error message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + + + + Log an error message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + Message arg #3 + + + + Log an error message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + Message arg #3 + Message arg #4 + + + + Log an error message + + this + Sender or null + Message + Message arguments + + + + Log a warning message + + this + Sender or null + Message + + + + Log a warning message + + this + Sender or null + Message + Message arg #1 + + + + Log a warning message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + + + + Log a warning message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + Message arg #3 + + + + Log a warning message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + Message arg #3 + Message arg #4 + + + + Log a warning message + + this + Sender or null + Message + Message arguments + + + + Log an info message + + this + Sender or null + Message + + + + Log an info message + + this + Sender or null + Message + Message arg #1 + + + + Log an info message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + + + + Log an info message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + Message arg #3 + + + + Log an info message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + Message arg #3 + Message arg #4 + + + + Log an info message + + this + Sender or null + Message + Message arguments + + + + Log a verbose message + + this + Sender or null + Message + + + + Log a verbose message + + this + Sender or null + Message + Message arg #1 + + + + Log a verbose message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + + + + Log a verbose message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + Message arg #3 + + + + Log a verbose message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + Message arg #3 + Message arg #4 + + + + Log a verbose message + + this + Sender or null + Message + Message arguments + + + + Log a very verbose message + + this + Sender or null + Message + + + + Log a very verbose message + + this + Sender or null + Message + Message arg #1 + + + + Log a very verbose message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + + + + Log a very verbose message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + Message arg #3 + + + + Log a very verbose message + + this + Sender or null + Message + Message arg #1 + Message arg #2 + Message arg #3 + Message arg #4 + + + + Log a very verbose message + + this + Sender or null + Message + Message arguments + + + + Resolves a type + + this + The type + A instance or null if it couldn't be resolved + + + + Resolves a type + + this + The type + A instance + If the type couldn't be resolved + + + + Resolves a type + + this + The type + The module that needs to resolve the type or null + A instance + If the type couldn't be resolved + + + + Resolves a method or a field + + this + A method/field reference + A or a instance + If the method/field couldn't be resolved + + + + Resolves a field + + this + A field reference + A instance or null if it couldn't be resolved. + + + + Resolves a field + + this + A field reference + A instance or null if it couldn't be resolved. + If the field couldn't be resolved + + + + Resolves a method + + this + A method reference + A instance or null if it couldn't be resolved. + + + + Resolves a method + + this + A method reference + A instance or null if it couldn't be resolved. + If the method couldn't be resolved + + + + Resolves a token + + This + The metadata token + A or null if is invalid + + + + Returns , but if it's a nested , + return the non-nested + + this + The scope type + + + + Finds a . Its scope (i.e., module or assembly) is ignored when + looking up the type. + + this + The type ref + An existing or null if it wasn't found. + If type couldn't be found + + + + Finds a + + this + Full name of the type (no assembly information) + true if it's a reflection name, and nested + type names are separated by a + character. If false, nested type names + are separated by a / character. + An existing + If type couldn't be found + + + + Finds a + + this + Full name of the type (no assembly information). Nested types are separated by / + An existing or null if it wasn't found. + + + + Finds a + + this + Full name of the type (no assembly information). Nested types are separated by / + An existing + If type couldn't be found + + + + Finds a + + this + Full name of the type (no assembly information). Nested types are separated by + + An existing or null if it wasn't found. + + + + Finds a + + this + Full name of the type (no assembly information). Nested types are separated by + + An existing + If type couldn't be found + + + + Checks whether a exists. 's scope (i.e., + module or assembly) is ignored when looking up the type. + + this + The type ref + true if the exists, false otherwise + + + + Checks whether a exists + + this + Full name of the type (no assembly information) + true if it's a reflection name, and nested + type names are separated by a + character. If false, nested type names + are separated by a / character. + true if the exists, false otherwise + + + + Checks whether a exists + + this + Full name of the type (no assembly information). Nested types are separated by / + true if the exists, false otherwise + + + + Checks whether a exists + + this + Full name of the type (no assembly information). Nested types are separated by + + true if the exists, false otherwise + + + + Removes all C optional/required modifiers + + A instance + Input after all modifiers + + + + Removes pinned signature + + The type + Input after pinned signature + + + + Removes all modifiers and pinned sig + + The type + Inputer after modifiers and pinned signature + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Returns a + + The type + A or null if it's not a + + + + + Gets the next field or null + + this + + + + + Gets the value or false if + is null + + this + + + + + Gets the value or false if + is null + + this + + + + + Gets the element type + + this + The element type + + + + Gets the full name of the type + + this + Full name of the type + + + + Gets the name of the type + + this + Name of the type + + + + Gets the namespace of the type + + this + Namespace of the type + + + + Returns the if it is a . + + this + A or null if none found + + + + Returns the if it is a . + + this + A or null if none found + + + + Returns the if it is a . + Nothing is resolved. + + this + A or null if none found + + + + Returns the if it is a . + + this + A or null if none found + + + + Flags used by + + + + + Compare assembly simple name + + + + + Compare assembly version + + + + + Compare assembly public key token + + + + + Compare assembly culture + + + + + Compare content type + + + + + Compare assembly simple name, version, public key token, locale and content type + + + + + Compares two assembly names + + + + + Compares the name, version, public key token, culture and content type + + + + + Compares only the name and the public key token + + + + + Compares only the name + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Constructor + + Comparison flags + + + + Compares two assembly names + + First + Second + < 0 if a < b, 0 if a == b, > 0 if a > b + + + + Compares two assembly names + + First + Second + true if equal, false otherwise + + + + Figures out which of two assembly names is closer to another assembly name + + Requested assembly name + First + Second + -1 if both are equally close, 0 if is closest, 1 if + is closest + + + + Gets the hash code of an assembly name + + Assembly name + The hash code + + + + Stores assembly name information + + + + + Gets/sets the + + + + + Gets/sets the or null if none specified + + + + + Gets/sets the + + + + + Gets/sets the public key or token + + + + + Gets/sets the name + + + + + Gets/sets the culture or null if none specified + + + + + Gets the full name of the assembly + + + + + Gets the full name of the assembly but use a public key token + + + + + Modify property: = + ( & ) | . + + Value to AND + Value to OR + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the bit + + + + + Gets/sets the processor architecture + + + + + Gets/sets the processor architecture + + + + + true if unspecified processor architecture + + + + + true if neutral (PE32) architecture + + + + + true if x86 (PE32) architecture + + + + + true if IA-64 (PE32+) architecture + + + + + true if x64 (PE32+) architecture + + + + + true if ARM (PE32) architecture + + + + + true if eg. reference assembly (not runnable) + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the content type + + + + + true if content type is Default + + + + + true if content type is WindowsRuntime + + + + + Default constructor + + + + + Constructor + + An assembly name + + + + Constructor + + The assembly + + + + Constructor + + Assembly name info + + + + + + + A high-level representation of a row in the AssemblyRef table + + + + + An assembly ref that can be used to indicate that it references the current assembly + when the current assembly is not known (eg. a type string without any assembly info + when it references a type in the current assembly). + + + + + The row id in its table + + + + + + + + + + + + + + + + + + + + + + + + + + From columns AssemblyRef.MajorVersion, AssemblyRef.MinorVersion, + AssemblyRef.BuildNumber, AssemblyRef.RevisionNumber + + If is null + + + + + + + From column AssemblyRef.Flags + + + + Attributes + + + + From column AssemblyRef.PublicKeyOrToken + + If is null + + + + + + + From column AssemblyRef.Name + + + + Name + + + + From column AssemblyRef.Locale + + + + Culture + + + + From column AssemblyRef.HashValue + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + + + + Same as , except that it uses the PublicKey if available. + + + + + Gets the full name of the assembly but use a public key token + + + + + Modify property: = + ( & ) | . + + Value to AND + Value to OR + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the bit + + + + + Gets/sets the processor architecture + + + + + Gets/sets the processor architecture + + + + + true if unspecified processor architecture + + + + + true if neutral (PE32) architecture + + + + + true if x86 (PE32) architecture + + + + + true if IA-64 (PE32+) architecture + + + + + true if x64 (PE32+) architecture + + + + + true if ARM (PE32) architecture + + + + + true if eg. reference assembly (not runnable) + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the content type + + + + + true if content type is Default + + + + + true if content type is WindowsRuntime + + + + + + + + An AssemblyRef row created by the user and not present in the original .NET file + + + + + Creates a reference to CLR 1.0's mscorlib + + + + + Creates a reference to CLR 1.1's mscorlib + + + + + Creates a reference to CLR 2.0's mscorlib + + + + + Creates a reference to CLR 4.0's mscorlib + + + + + Default constructor + + + + + Constructor + + Simple name + If any of the args is invalid + + + + Constructor + + Simple name + Version + If any of the args is invalid + + + + Constructor + + Simple name + Version + Public key or public key token + If any of the args is invalid + + + + Constructor + + Simple name + Version + Public key or public key token + Locale + If any of the args is invalid + + + + Constructor + + Assembly name info + If is null + + + + Constructor + + Assembly + + + + Created from a row in the AssemblyRef table + + + + The module where this instance is located + + + + + + + + + + + + + Constructor + + The module which contains this AssemblyRef row + Row ID + If is null + If is invalid + + + + Resolves assemblies + + + + + Gets/sets the default + + + + + true if should find an assembly that matches exactly. + false if it first tries to match exactly, and if that fails, it picks an + assembly that is closest to the requested assembly. + + + + + true if resolved .NET framework assemblies can be redirected to the source + module's framework assembly version. Eg. if a resolved .NET 3.5 assembly can be + redirected to a .NET 4.0 assembly if the source module is a .NET 4.0 assembly. This is + ignored if is true. + + + + + If true, all modules in newly resolved assemblies will have their + property set to true. This is + enabled by default since these modules shouldn't be modified by the user. + + + + + true to search the Global Assembly Cache. Default value is true. + + + + + Gets paths searched before trying the standard locations + + + + + Gets paths searched after trying the standard locations + + + + + Default constructor + + + + + Constructor + + Module context for all resolved assemblies + + + + + + + Add a module's assembly to the assembly cache + + The module whose assembly should be cached + true if 's assembly is cached, false + if it's not cached because some other assembly with the exact same full name has + already been cached or if or its assembly is null. + + + + Add an assembly to the assembly cache + + The assembly + true if is cached, false if it's not + cached because some other assembly with the exact same full name has already been + cached or if is null. + + + + Removes a module's assembly from the cache + + The module + true if its assembly was removed, false if it wasn't removed + since it wasn't in the cache, it has no assembly, or was + null + + + + Removes the assembly from the cache + + The assembly + true if it was removed, false if it wasn't removed since it + wasn't in the cache or if was null + + + + Clears the cache and calls on each cached module. + Use to remove any assemblies you added yourself + using before calling this method if you don't want + them disposed. + + + + + Gets the cached assemblies in this resolver. + + The cached assemblies. + + + + Finds an assembly that exactly matches the requested assembly + + Assembly to find + Search paths or null if none + Module context + An instance or null if an exact match + couldn't be found. + + + + Finds the closest assembly from the already cached assemblies + + Assembly to find + The closest or null if none found + + + + Returns true if is inserted in + + Assembly to check + + + + Called before + + Assembly to find + The module that needs to resolve an assembly or null + We're trying to find an exact match + null or an enumerable of full paths to try + + + + Called after (if it fails) + + Assembly to find + The module that needs to resolve an assembly or null + We're trying to find an exact match + null or an enumerable of full paths to try + + + + Called after (if it fails) + + Assembly to find + The module that needs to resolve an assembly or null + We're trying to find an exact match + null or an enumerable of full paths to try + + + + Gets all search paths to use for this module + + The module or null if unknown + A list of all search paths to use for this module + + + + Gets all module search paths. This is usually empty unless its assembly has + a .config file specifying any additional private search paths in a + <probing/> element. + + The module or null if unknown + A list of search paths + + + + Gets all private assembly search paths as found in the module's .config file. + + The module or null if unknown + A list of search paths + + + + See CorHdr.h/CorCallingConvention + + + + The managed calling convention + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + generic method instantiation + + + used ONLY for 64bit vararg PInvoke calls + + + Calling convention is bottom 4 bits + + + Generic method + + + Method needs a 'this' parameter + + + 'this' parameter is the first arg if set (else it's hidden) + + + Used internally by the CLR + + + + Base class for sigs with a calling convention + + + + + The calling convention + + + + + Gets/sets the extra data found after the signature + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Returns true if is set + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + true if there's an implicit this parameter + + + + + true if this contains a + or a . + + + + + Default constructor + + + + + Constructor + + The calling convention + + + + Gets the calling convention + + + + + A field signature + + + + + Gets/sets the field type + + + + + Default constructor + + + + + Constructor + + Field type + + + + Constructor + + Field type + The calling convention (must have Field set) + + + + Clone this + + + + + + + + Method sig base class + + + + + + + + + + + + + + + + + Gets/sets the calling convention + + + + + Gets/sets the return type + + + + + Gets the parameters. This is never null + + + + + Gets/sets the generic param count + + + + + Gets the parameters that are present after the sentinel. Note that this is null + if there's no sentinel. It can still be empty even if it's not null. + + + + + A method signature + + + + + Gets/sets the original token. It's set when reading calli instruction operands + and it's a hint to the module writer if it tries to re-use the same token. + + + + + Creates a static MethodSig + + Return type + + + + Creates a static MethodSig + + Return type + Arg type #1 + + + + Creates a static MethodSig + + Return type + Arg type #1 + Arg type #2 + + + + Creates a static MethodSig + + Return type + Arg type #1 + Arg type #2 + Arg type #3 + + + + Creates a static MethodSig + + Return type + Argument types + + + + Creates an instance MethodSig + + Return type + + + + Creates an instance MethodSig + + Return type + Arg type #1 + + + + Creates an instance MethodSig + + Return type + Arg type #1 + Arg type #2 + + + + Creates an instance MethodSig + + Return type + Arg type #1 + Arg type #2 + Arg type #3 + + + + Creates an instance MethodSig + + Return type + Argument types + + + + Creates a static generic MethodSig + + Number of generic parameters + Return type + + + + Creates a static generic MethodSig + + Number of generic parameters + Return type + Arg type #1 + + + + Creates a static generic MethodSig + + Number of generic parameters + Return type + Arg type #1 + Arg type #2 + + + + Creates a static generic MethodSig + + Number of generic parameters + Return type + Arg type #1 + Arg type #2 + Arg type #3 + + + + Creates a static generic MethodSig + + Number of generic parameters + Return type + Argument types + + + + Creates an instance generic MethodSig + + Number of generic parameters + Return type + + + + Creates an instance generic MethodSig + + Number of generic parameters + Return type + Arg type #1 + + + + Creates an instance generic MethodSig + + Number of generic parameters + Return type + Arg type #1 + Arg type #2 + + + + Creates an instance generic MethodSig + + Number of generic parameters + Return type + Arg type #1 + Arg type #2 + Arg type #3 + + + + Creates an instance generic MethodSig + + Number of generic parameters + Return type + Argument types + + + + Default constructor + + + + + Constructor + + Calling convention + + + + Constructor + + Calling convention + Number of generic parameters + + + + Constructor + + Calling convention + Number of generic parameters + Return type + + + + Constructor + + Calling convention + Number of generic parameters + Return type + Arg type #1 + + + + Constructor + + Calling convention + Number of generic parameters + Return type + Arg type #1 + Arg type #2 + + + + Constructor + + Calling convention + Number of generic parameters + Return type + Arg type #1 + Arg type #2 + Arg type #3 + + + + Constructor + + Calling convention + Number of generic parameters + Return type + Argument types + + + + Constructor + + Calling convention + Number of generic parameters + Return type + Argument types + + + + Constructor + + Calling convention + Number of generic parameters + Return type + Argument types + Parameters after sentinel + + + + Clone this + + + + + + + + A property signature + + + + + Creates a static PropertySig + + Return type + + + + Creates a static PropertySig + + Return type + Arg type #1 + + + + Creates a static PropertySig + + Return type + Arg type #1 + Arg type #2 + + + + Creates a static PropertySig + + Return type + Arg type #1 + Arg type #2 + Arg type #3 + + + + Creates a static PropertySig + + Return type + Argument types + + + + Creates an instance PropertySig + + Return type + + + + Creates an instance PropertySig + + Return type + Arg type #1 + + + + Creates an instance PropertySig + + Return type + Arg type #1 + Arg type #2 + + + + Creates an instance PropertySig + + Return type + Arg type #1 + Arg type #2 + Arg type #3 + + + + Creates an instance PropertySig + + Return type + Argument types + + + + Default constructor + + + + + Constructor + + Calling convention (must have Property set) + + + + Constructor + + true if instance, false if static + + + + Constructor + + true if instance, false if static + Return type + + + + Constructor + + true if instance, false if static + Return type + Arg type #1 + + + + Constructor + + true if instance, false if static + Return type + Arg type #1 + Arg type #2 + + + + Constructor + + true if instance, false if static + Return type + Arg type #1 + Arg type #2 + Arg type #3 + + + + Constructor + + true if instance, false if static + Return type + Argument types + + + + Constructor + + Calling convention + Number of generic parameters + Return type + Argument types + Parameters after sentinel + + + + Clone this + + + + + + + + A local variables signature + + + + + All local types. This is never null. + + + + + Default constructor + + + + + Constructor + + Calling convention (must have LocalSig set) + Number of locals + + + + Constructor + + Local type #1 + + + + Constructor + + Local type #1 + Local type #2 + + + + Constructor + + Local type #1 + Local type #2 + Local type #3 + + + + Constructor + + All locals + + + + Constructor + + All locals + + + + Constructor + + All locals (this instance now owns it) + Dummy + + + + Clone this + + + + + An instantiated generic method signature + + + + + Gets the generic arguments (must be instantiated types, i.e., closed types) + + + + + Default constructor + + + + + Constructor + + Calling convention (must have GenericInst set) + Number of generic args + + + + Constructor + + Generic arg #1 + + + + Constructor + + Generic arg #1 + Generic arg #2 + + + + Constructor + + Generic arg #1 + Generic arg #2 + Generic arg #3 + + + + Constructor + + Generic args + + + + Constructor + + Generic args + + + + Clone this + + + + + A high-level representation of a row in the ClassLayout table + + + + + The row id in its table + + + + + + + + + + + From column ClassLayout.PackingSize + + + + + + + + From column ClassLayout.ClassSize + + + + + + + + A ClassLayout row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + PackingSize + ClassSize + + + + Created from a row in the ClassLayout table + + + + + + + + Constructor + + The module which contains this ClassLayout row + Row ID + If is null + If is invalid + + + + A high-level representation of a row in the Constant table + + + + + The row id in its table + + + + + + + + + + + From column Constant.Type + + + + + + + + From column Constant.Value + + + + + + + + A Constant row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + Value + + + + Constructor + + Value + Type + + + + Created from a row in the Constant table + + + + + + + + Constructor + + The module which contains this Constant row + Row ID + If is null + If is invalid + + + + Default implementation of + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Constructor + + The owner module + + + + Constructor + + The owner module + Corlib assembly reference or null if a default + assembly reference should be created + + + + + + + Gets the required alignment for the stubs, must be a power of 2 + + Stub type + + + + + Gets the size of a stub, it doesn't have to be a multiple of + + Stub type + + + + + Gets the offset of the code (entry point) relative to the start of the stub + + Stub type + + + + + Gets the RVA of the func field that the stub jumps to + + Reader, positioned at the stub func + PE image + Updated with RVA of func field + + + + + Writes stub relocs, if needed + + Stub type + Reloc directory + The chunk where this stub will be written to + Offset of this stub in + + + + Writes the stub that jumps to the managed function + + Stub type + Writer + Image base + RVA of this stub + RVA of a pointer-sized field that contains the absolute address of the managed function + + + + A custom attribute + + + + + Gets/sets the custom attribute constructor + + + + + Gets the attribute type + + + + + Gets the full name of the attribute type + + + + + true if the raw custom attribute blob hasn't been parsed + + + + + Gets the raw custom attribute blob or null if the CA was successfully parsed. + + + + + Gets all constructor arguments + + + + + true if is not empty + + + + + Gets all named arguments (field and property values) + + + + + true if is not empty + + + + + Gets all s that are field arguments + + + + + Gets all s that are property arguments + + + + + Gets the #Blob offset or 0 if unknown + + + + + Constructor + + Custom attribute constructor + Raw custom attribute blob + + + + Constructor + + Custom attribute constructor + + + + Constructor + + Custom attribute constructor + Constructor arguments or null if none + + + + Constructor + + Custom attribute constructor + Named arguments or null if none + + + + Constructor + + Custom attribute constructor + Constructor arguments or null if none + Named arguments or null if none + + + + Constructor + + Custom attribute constructor + Constructor arguments or null if none + Named arguments or null if none + Original custom attribute #Blob offset or 0 + + + + Constructor + + Custom attribute constructor + Constructor arguments. The list is now owned by this instance. + Named arguments. The list is now owned by this instance. + Original custom attribute #Blob offset or 0 + + + + Gets the field named + + Name of field + A instance or null if not found + + + + Gets the field named + + Name of field + A instance or null if not found + + + + Gets the property named + + Name of property + A instance or null if not found + + + + Gets the property named + + Name of property + A instance or null if not found + + + + Gets the property/field named + + Name of property/field + true if it's a field, false if it's a property + A instance or null if not found + + + + Gets the property/field named + + Name of property/field + true if it's a field, false if it's a property + A instance or null if not found + + + + + + + A custom attribute constructor argument + + + + + Gets/sets the argument type + + + + + Gets/sets the argument value + + + + + Constructor + + Argument type + + + + Constructor + + Argument type + Argument value + + + + Clones this instance and any s and s + referenced from this instance. + + + + + + + + + A custom attribute field/property argument + + + + + true if it's a field + + + + + true if it's a property + + + + + Gets/sets the field/property type + + + + + Gets/sets the property/field name + + + + + Gets/sets the argument + + + + + Gets/sets the argument type + + + + + Gets/sets the argument value + + + + + Default constructor + + + + + Constructor + + true if field, false if property + + + + Constructor + + true if field, false if property + Field/property type + + + + Constructor + + true if field, false if property + Field/property type + Name of field/property + + + + Constructor + + true if field, false if property + Field/property type + Name of field/property + Field/property argument + + + + Clones this instance and any s referenced from this instance. + + + + + + + + + Stores s + + + + + Default constructor + + + + + Constructor + + Initial length of the list + Context passed to + Delegate instance that returns original values + + + + Checks whether a custom attribute is present + + Full name of custom attribute type + true if the custom attribute type is present, false otherwise + + + + Removes all custom attributes of a certain type + + Full name of custom attribute type that should be removed + + + + Finds a custom attribute + + Full name of custom attribute type + A or null if it wasn't found + + + + Finds all custom attributes of a certain type + + Full name of custom attribute type + All s of the requested type + + + + Finds a custom attribute + + Custom attribute type + The first found or null if none found + + + + Finds a custom attribute + + Custom attribute type + Attribute type comparison flags + The first found or null if none found + + + + Finds all custom attributes of a certain type + + Custom attribute type + All s of the requested type + + + + Finds all custom attributes of a certain type + + Custom attribute type + Attribute type comparison flags + All s of the requested type + + + + Searches for a type according to custom attribute search rules: first try the + current assembly, and if that fails, try mscorlib + + + + + Constructor + + The module to search first + + + + + + + Thrown by CustomAttributeReader when it fails to parse a custom attribute blob + + + + + Default constructor + + + + + Constructor + + Error message + + + + Constructor + + Error message + Other exception + + + + Constructor + + + + + + + Reads custom attributes from the #Blob stream + + + + + Reads a custom attribute + + Reader module + Custom attribute constructor + Offset of custom attribute in the #Blob stream + A new instance + + + + Reads a custom attribute + + Reader module + Custom attribute constructor + Offset of custom attribute in the #Blob stream + Generic parameter context + A new instance + + + + Reads a custom attribute + + Owner module + CA blob + Custom attribute constructor + A new instance + + + + Reads a custom attribute + + Owner module + A reader positioned at the the first byte of the CA blob + Custom attribute constructor + A new instance + + + + Reads a custom attribute + + Owner module + CA blob + Custom attribute constructor + Generic parameter context + A new instance + + + + Reads a custom attribute + + Owner module + A stream positioned at the the first byte of the CA blob + Custom attribute constructor + Generic parameter context + A new instance + + + + Reads a custom attribute + + Owner module + A stream positioned at the the first byte of the CA blob + Custom attribute constructor + Generic parameter context + A new instance + + + + Reads custom attribute named arguments + + Owner module + A reader positioned at the the first byte of the CA blob + Number of named arguments to read from + Generic parameter context + A list of s or null if some error + occurred. + + + + Gets the enum's underlying type + + An enum type + The underlying type or null if we couldn't resolve the type ref + If is not an enum or null + + + + Converts to a , possibly resolving + a + + The type + A or null if we couldn't resolve the + or if is a type spec + + + + A high-level representation of a row in the DeclSecurity table + + + + + The row id in its table + + + + + + + + + + + + + + From column DeclSecurity.Action + + + + + + + + From column DeclSecurity.PermissionSet + + + + + + + Initializes + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + true if is not empty + + + + + Gets the blob data or null if there's none + + Blob data or null + + + + Returns the .NET 1.x XML string or null if it's not a .NET 1.x format + + + + + + A DeclSecurity row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + The security action + The security attributes (now owned by this) + + + + + + + Created from a row in the DeclSecurity table + + + + The module where this instance is located + + + + + + + + + + + + + + + + Constructor + + The module which contains this DeclSecurity row + Row ID + If is null + If is invalid + + + + + + + Reads DeclSecurity blobs + + + + + Reads a DeclSecurity blob + + Module that will own the returned list + #Blob offset of DeclSecurity signature + A list of s + + + + Reads a DeclSecurity blob + + Module that will own the returned list + #Blob offset of DeclSecurity signature + Generic parameter context + A list of s + + + + Reads a DeclSecurity blob + + Module that will own the returned list + DeclSecurity blob + A list of s + + + + Reads a DeclSecurity blob + + Module that will own the returned list + DeclSecurity blob + Generic parameter context/// + A list of s + + + + Reads a DeclSecurity blob + + Module that will own the returned list + DeclSecurity stream that will be owned by us + A list of s + + + + Reads a DeclSecurity blob + + Module that will own the returned list + DeclSecurity stream that will be owned by us + Generic parameter context + A list of s + + + + Reads the new (.NET 2.0+) DeclSecurity blob format + + + + + + Reads the old (.NET 1.x) DeclSecurity blob format + + + + + + See CorHdr.h/CorElementType + + + + + + + System.Void + + + System.Boolean + + + System.Char + + + System.SByte + + + System.Byte + + + System.Int16 + + + System.UInt16 + + + System.Int32 + + + System.UInt32 + + + System.Int64 + + + System.UInt64 + + + System.Single + + + System.Double + + + System.String + + + Pointer type (*) + + + ByRef type (&) + + + Value type + + + Reference type + + + Type generic parameter + + + Multidimensional array ([*], [,], [,,], ...) + + + Generic instance type + + + Typed byref + + + Value array (don't use) + + + System.IntPtr + + + System.UIntPtr + + + native real (don't use) + + + Function pointer + + + System.Object + + + Single-dimension, zero lower bound array ([]) + + + Method generic parameter + + + Required C modifier + + + Optional C modifier + + + Used internally by the CLR (don't use) + + + Module (don't use) + + + Sentinel (method sigs only) + + + Pinned type (locals only) + + + + A CIL opcode. If the high byte is 0 or if it's , it's a 1-byte opcode, + else it's a two-byte opcode and the highest byte is the first byte of the opcode. + + + + + Extension methods + + + + + Converts a to an + + The code + A or null if it's invalid + + + + Gets the opcode or if is null + + this + + + + + Gets the operand or null if is null + + this + + + + + Gets the offset or 0 if is null + + this + + + + + Gets the sequence point or null if is null + + this + + + + + Resolves a token + + An object + The metadata token + A or null if is invalid + + + + options + + + + + No option is enabled + + + + + Some fields/methods have an unknown declaring type and don't have a context with + that information. If this is enabled, the reader will try to guess it but it doesn't + always work. If you get an , try enabling this option. + + + + + Reads code from a DynamicMethod + + + + + Constructor + + Module that will own the method body + This can be one of several supported types: the delegate instance + created by DynamicMethod.CreateDelegate(), a DynamicMethod instance, a RTDynamicMethod + instance or a DynamicResolver instance. + + + + Constructor + + Module that will own the method body + This can be one of several supported types: the delegate instance + created by DynamicMethod.CreateDelegate(), a DynamicMethod instance, a RTDynamicMethod + instance or a DynamicResolver instance. + Generic parameter context + + + + Constructor + + Module that will own the method body + This can be one of several supported types: the delegate instance + created by DynamicMethod.CreateDelegate(), a DynamicMethod instance, a RTDynamicMethod + instance or a DynamicResolver instance. + Importer + + + + Constructor + + Module that will own the method body + This can be one of several supported types: the delegate instance + created by DynamicMethod.CreateDelegate(), a DynamicMethod instance, a RTDynamicMethod + instance or a DynamicResolver instance. + Importer + Options + + + + Reads the code + + + + + + Returns the created method. Must be called after . + + A new instance + + + + + + + + + + + + + + + + + + + + + + A CIL method exception handler + + + + + First instruction of try block + + + + + One instruction past the end of try block or null if it ends at the end + of the method. + + + + + Start of filter handler or null if none. The end of filter handler is + always . + + + + + First instruction of try handler block + + + + + One instruction past the end of try handler block or null if it ends at the end + of the method. + + + + + The catch type if is + + + + + Type of exception handler clause + + + + + Default constructor + + + + + Constructor + + Exception clause type + + + + Type of exception handler. See CorHdr.h/CorExceptionFlag + + + + + + + + + + + + + + + + + + + + CIL opcode flow control + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A CIL instruction (opcode + operand) + + + + + The opcode + + + + + The opcode operand + + + + + Offset of the instruction in the method body + + + + + PDB sequence point or null if none + + + + + Default constructor + + + + + Constructor + + Opcode + + + + Constructor + + Opcode + The operand + + + + Creates a new instruction with no operand + + The opcode + A new instance + + + + Creates a new instruction with a operand + + The opcode + The value + A new instance + + + + Creates a new instruction with a operand + + The opcode + The value + A new instance + + + + Creates a new instruction with an operand + + The opcode + The value + A new instance + + + + Creates a new instruction with a operand + + The opcode + The value + A new instance + + + + Creates a new instruction with a operand + + The opcode + The value + A new instance + + + + Creates a new instruction with a operand + + The opcode + The value + A new instance + + + + Creates a new instruction with a string operand + + The opcode + The string + A new instance + + + + Creates a new instruction with an instruction target operand + + The opcode + Target instruction + A new instance + + + + Creates a new instruction with an instruction target list operand + + The opcode + The targets + A new instance + + + + Creates a new instruction with a type operand + + The opcode + The type + A new instance + + + + Creates a new instruction with a type operand + + The opcode + The type + A new instance + + + + Creates a new instruction with a method/field operand + + The opcode + The method/field + A new instance + + + + Creates a new instruction with a field operand + + The opcode + The field + A new instance + + + + Creates a new instruction with a method operand + + The opcode + The method + A new instance + + + + Creates a new instruction with a token operand + + The opcode + The token + A new instance + + + + Creates a new instruction with a method signature operand + + The opcode + The method signature + A new instance + + + + Creates a new instruction with a method parameter operand + + The opcode + The method parameter + A new instance + + + + Creates a new instruction with a method local operand + + The opcode + The method local + A new instance + + + + Creates a ldci4 instruction + + Operand value + A new instance + + + + Gets the size in bytes of the instruction + + + + + + Updates with the new stack size + + Current stack size + + + + Updates with the new stack size + + Current stack size + true if the method has a return value, + false otherwise + + + + Calculates stack usage + + Updated with number of stack pushes + Updated with number of stack pops or -1 if the stack should + be cleared. + + + + Calculates stack usage + + true if method has a return value + Updated with number of stack pushes + Updated with number of stack pops or -1 if the stack should + be cleared. + + + + Checks whether it's one of the leave instructions + + + + + Checks whether it's one of the br instructions + + + + + Checks whether it's one of the brfalse instructions + + + + + Checks whether it's one of the brtrue instructions + + + + + Checks whether it's one of the conditional branch instructions (bcc, brtrue, brfalse) + + + + + Checks whether this is one of the ldc.i4 instructions + + + + + Returns a ldc.i4 instruction's operand + + The integer value + isn't one of the + ldc.i4 opcodes + + + + Checks whether it's one of the ldarg instructions, but does not check + whether it's one of the ldarga instructions. + + + + + Checks whether it's one of the ldloc instructions, but does not check + whether it's one of the ldloca instructions. + + + + + Checks whether it's one of the starg instructions + + + + + Checks whether it's one of the stloc instructions + + + + + Returns the local if it's a ldloc, stloc or ldloca instruction + + The locals + The local or null if it's not a ldloc, stloc or ldloca + instruction or if the local doesn't exist. + + + + Gets the index of the instruction's parameter operand or -1 if the parameter + is missing or if it's not an instruction with a parameter operand. + + + + + Returns a method parameter + + All parameters + A parameter or null if it doesn't exist + + + + Returns an argument type + + Method signature + Declaring type (only needed if it's an instance method) + The type or null if it doesn't exist + + + + Clone this instance. The and fields + are shared by this instance and the created instance. + + + + + + + + Converts instructions to strings + + + + + Converts an instruction to a string + + The instruction + The result + + + + Gets the instruction's operand as a string + + The instruction + The operand as a string + + + + Add an instruction's operand to + + Place result here + The instruction + + + + Add an instruction's operand to + + Place result here + The instruction + A string that will be added before the operand, if there's + an operand. + + + + Thrown when invalid data is detected while parsing a .NET method + + + + + Default constructor + + + + + Constructor + + Error message + + + + Constructor + + Error message + The inner exception or null if none + + + + Constructor + + + + + + + A collection of s + + + + + Gets the number of locals + + + + + Gets the list of locals + + + + + Gets the N'th local + + The local index + + + + Default constructor + + + + + Constructor + + All locals that will be owned by this instance + + + + Adds a new local and then returns it + + The local that should be added to the list + The input is always returned + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A method local + + + + + Gets/sets the type of the local + + + + + Local index + + + + + Gets the name. This property is obsolete, use to get/set the name stored in the PDB file. + + + + + Gets the attributes. This property is obsolete, use to get/set the attributes stored in the PDB file. + + + + + Constructor + + The type + + + + Constructor + + The type + Name of local + + + + Constructor + + The type + Name of local + Index, should only be used if you don't add it to the locals list + + + + + + + Method body base class + + + + + A native method body + + + + + Gets/sets the RVA of the native method body + + + + + Default constructor + + + + + Constructor + + RVA of method body + + + + CIL (managed code) body + + + + + Size of a small header + + + + + Gets/sets a flag indicating whether the original max stack value should be used. + + + + + Gets/sets the init locals flag. This is only valid if the method has any locals. + + + + + Gets/sets the size in bytes of the method body header. The instructions immediately follow + the header. + + + + + true if it was a small body header ( is 1) + + + + + true if it was a big body header + + + + + Gets/sets max stack value from the fat method header. + + + + + Gets/sets the locals metadata token + + + + + true if is not empty + + + + + Gets the instructions + + + + + true if is not empty + + + + + Gets the exception handlers + + + + + true if is not empty + + + + + Gets the locals + + + + + Gets/sets the PDB method. This is null if no PDB has been loaded or if there's + no PDB info for this method. + + + + + true if is not null + + + + + Gets the total size of the body in the PE file, including header, IL bytes, and exception handlers. + This property returns 0 if the size is unknown. + + + + + Default constructor + + + + + Constructor + + Init locals flag + All instructions. This instance will own the list. + All exception handlers. This instance will own the list. + All locals. This instance will own the locals in the list. + + + + Shorter instructions are converted to the longer form, eg. Ldc_I4_1 is + converted to Ldc_I4 with a 1 as the operand. + + All method parameters, including the hidden 'this' parameter + if it's an instance method. Use . + + + + Optimizes instructions by using the shorter form if possible. Eg. Ldc_I4 1 + will be replaced with Ldc_I4_1. + + + + + Short branch instructions are converted to the long form, eg. Beq_S is + converted to Beq. + + + + + Optimizes branches by using the smallest possible branch + + + + + Updates each instruction's offset + + Total size in bytes of all instructions + + + + Reads strings from #US heap + + + + + Reads a string from the #US heap + + String token + A string + + + + Resolves instruction operands + + + + + Reads a .NET method body (header, locals, instructions, exception handlers) + + + + + Creates a CIL method body or returns an empty one if doesn't + point to the start of a valid CIL method body. + + The operand resolver + A reader positioned at the start of a .NET method body + Use parameters from this method + + + + Creates a CIL method body or returns an empty one if doesn't + point to the start of a valid CIL method body. + + The operand resolver + A reader positioned at the start of a .NET method body + Use parameters from this method + Generic parameter context + + + + Creates a CIL method body or returns an empty one if doesn't + point to the start of a valid CIL method body. + + The operand resolver + A reader positioned at the start of a .NET method body + Method parameters + + + + Creates a CIL method body or returns an empty one if doesn't + point to the start of a valid CIL method body. + + The operand resolver + A reader positioned at the start of a .NET method body + Method parameters + Generic parameter context + + + + Creates a CIL method body or returns an empty one if is not + a valid CIL method body. + + The operand resolver + All code + Exceptions or null if all exception handlers are in + + Method parameters + + + + Creates a CIL method body or returns an empty one if is not + a valid CIL method body. + + The operand resolver + All code + Exceptions or null if all exception handlers are in + + Method parameters + Generic parameter context + + + + Creates a CIL method body or returns an empty one if doesn't + point to the start of a valid CIL method body. + + The operand resolver + A reader positioned at the start of a .NET method body + Exception handler reader or null if exceptions aren't + present or if contains the exception handlers + Method parameters + + + + Creates a CIL method body or returns an empty one if doesn't + point to the start of a valid CIL method body. + + The operand resolver + A reader positioned at the start of a .NET method body + Exception handler reader or null if exceptions aren't + present or if contains the exception handlers + Method parameters + Generic parameter context + + + + Creates a CIL method body or returns an empty one if is not + a valid CIL method body. + + The operand resolver + All code + Exceptions or null if all exception handlers are in + + Method parameters + Method header flags, eg. 2 if tiny method + Max stack + Code size + Local variable signature token or 0 if none + + + + Creates a CIL method body or returns an empty one if is not + a valid CIL method body. + + The operand resolver + All code + Exceptions or null if all exception handlers are in + + Method parameters + Method header flags, eg. 2 if tiny method + Max stack + Code size + Local variable signature token or 0 if none + Generic parameter context + + + + Constructor + + The operand resolver + A reader positioned at the start of a .NET method body + Use parameters from this method + + + + Constructor + + The operand resolver + A reader positioned at the start of a .NET method body + Use parameters from this method + Generic parameter context + + + + Constructor + + The operand resolver + A reader positioned at the start of a .NET method body + Method parameters + + + + Constructor + + The operand resolver + A reader positioned at the start of a .NET method body + Method parameters + Generic parameter context + + + + Constructor + + The operand resolver + A reader positioned at the start of a .NET method body + Exception handler reader or null if exceptions aren't + present or if contains the exception handlers + Method parameters + + + + Constructor + + The operand resolver + A reader positioned at the start of a .NET method body + Exception handler reader or null if exceptions aren't + present or if contains the exception handlers + Method parameters + Generic parameter context + + + + Initializes the method header + + Header flags, eg. 2 if it's a tiny method + Max stack + Code size + Local variable signature token + + + + Reads the method body header, locals, all instructions, and the exception handlers (if any) + + true if it worked, and false if something failed + + + + Reads the method header + + + + + Reads the locals + + All locals or null if there are none + + + + Reads all instructions + + + + + + + + + + + + + + + + + + + + + + + Reads all exception handlers + + + + + Creates a CIL body. Must be called after , and can only be + called once. + + A new instance + + + + Method body reader base class + + + + The method reader + + + All parameters + + + All locals + + + All instructions + + + All exception handlers + + + First byte after the end of the code + + + Start offset of method + + + + Gets all parameters + + + + + Gets all locals + + + + + Gets all instructions + + + + + Gets all exception handlers + + + + + Constructor + + + + + Constructor + + The reader + + + + Constructor + + The reader + Method parameters or null if they're not known yet + + + + Sets new locals + + A list of types of all locals or null if none + + + + Sets new locals + + A list of types of all locals or null if none + + + + Reads all instructions + + Number of instructions to read + + + + Reads all instructions + + Size of code + + + + Fixes all branch instructions so their operands are set to an + instead of an offset. + + + + + Finds an instruction + + Offset of instruction + The instruction or null if there's no instruction at . + + + + Finds an instruction and throws if it's not present + + Offset of instruction + The instruction + There's no instruction at + + + + + Reads the next instruction + + + + + Reads the next OpCode from the current position + + + + + Reads the instruction operand (if any) + + The instruction + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a (a parameter) operand + + The current instruction + The operand + + + + Reads a (a local) operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a operand + + The current instruction + The operand + + + + Reads a (a parameter) operand + + The current instruction + The operand + + + + Reads a (a local) operand + + The current instruction + The operand + + + + Returns true if it's one of the ldarg/starg instructions that have an operand + + The instruction to check + + + + Returns a parameter + + A parameter index + A or null if is invalid + + + + Returns a local + + A local index + A or null if is invalid + + + + Add an exception handler if it appears valid + + The exception handler + true if it was added, false otherwise + + + + Gets the offset of an instruction + + The instruction or null if the offset is the first offset + at the end of the method. + The instruction offset + + + + Restores a 's body with the parsed method instructions + and exception handlers + + The method that gets updated with the instructions, locals, and + exception handlers. + + + + Converts a type address to a . The address can be found in + RuntimeTypeHandle.Value and it's the same address you use with the WinDbg SOS command + !dumpmt. + + + + + Converts to a . + + Address of type + The or null + + + + Instruction utility methods + + + + + Shorter instructions are converted to the longer form, eg. Ldc_I4_1 is + converted to Ldc_I4 with a 1 as the operand. + + All instructions + All locals + All method parameters, including the hidden 'this' parameter + if it's an instance method. Use . + + + + Optimizes instructions by using the shorter form if possible. Eg. Ldc_I4 1 + will be replaced with Ldc_I4_1. + + All instructions + + + + Short branch instructions are converted to the long form, eg. Beq_S is + converted to Beq. + + All instructions + + + + Optimizes branches by using the smallest possible branch + + All instructions + + + + Updates each instruction's offset + + All instructions + Total size in bytes of all instructions + + + + A CIL opcode + + + + + The opcode name + + + + + The opcode as a enum + + + + + Operand type + + + + + Flow control info + + + + + Opcode type + + + + + Push stack behavior + + + + + Pop stack behavior + + + + + Gets the value which is compatible with + + + + + Gets the size of the opcode. It's either 1 or 2 bytes. + + + + + Creates a new instruction with no operand + + A new instance + + + + Creates a new instruction with a operand + + The value + A new instance + + + + Creates a new instruction with a operand + + The value + A new instance + + + + Creates a new instruction with an operand + + The value + A new instance + + + + Creates a new instruction with a operand + + The value + A new instance + + + + Creates a new instruction with a operand + + The value + A new instance + + + + Creates a new instruction with a operand + + The value + A new instance + + + + Creates a new instruction with a string operand + + The string + A new instance + + + + Creates a new instruction with an instruction target operand + + Target instruction + A new instance + + + + Creates a new instruction with an instruction target list operand + + The targets + A new instance + + + + Creates a new instruction with a type operand + + The type + A new instance + + + + Creates a new instruction with a type operand + + The type + A new instance + + + + Creates a new instruction with a method/field operand + + The method/field + A new instance + + + + Creates a new instruction with a field operand + + The field + A new instance + + + + Creates a new instruction with a method operand + + The method + A new instance + + + + Creates a new instruction with a token operand + + The token + A new instance + + + + Creates a new instruction with a method signature operand + + The method signature + A new instance + + + + Creates a new instruction with a method parameter operand + + The method parameter + A new instance + + + + Creates a new instruction with a method local operand + + The method local + A new instance + + + + + + + Contains all valid CIL opcodes + + + + + All one-byte opcodes + + + + + All two-byte opcodes (first byte is 0xFE) + + + + + CIL opcode type + + + + + + + + + + + + + + + + + + + + + + + CIL opcode operand type + + + + 4-byte relative instruction offset + + + 4-byte field token ( or ) + + + int32 + + + int64 + + + 4-byte method token (, + or ) + + + No operand + + + Never used + + + 64-bit real + + + + + + 4-byte method sig token () + + + 4-byte string token (0x70xxxxxx) + + + 4-byte count N followed by N 4-byte relative instruction offsets + + + 4-byte token (, , + , , , + or ) + + + 4-byte type token (, or + ) + + + 2-byte param/local index + + + 1-byte relative instruction offset + + + 1-byte sbyte () or byte (the rest) + + + 32-bit real + + + 1-byte param/local index + + + + CIL opcode stack behavior + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Event attributes, see CorHdr.h/CorEventAttr + + + + event is special. Name describes how. + + + Runtime(metadata internal APIs) should check name encoding. + + + + A high-level representation of a row in the Event table + + + + + The row id in its table + + + + + + + + + + + + + + + + + From column Event.EventFlags + + + + + + + + From column Event.Name + + + + Name + + + + From column Event.EventType + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + Gets/sets the adder method + + + + + Gets/sets the invoker method + + + + + Gets/sets the remover method + + + + + Gets the other methods + + + + + Initializes , , + and . + + + + + + + + + + + + + + + + Reset , , , + + + + true if there are no methods attached to this event + + + + + + + + true if is not empty + + + + + Gets/sets the declaring type (owner type) + + + + + + + + Called by and should normally not be called by any user + code. Use instead. Only call this if you must set the + declaring type without inserting it in the declaring type's method list. + + + + + + + + + + + Gets the full name of the event + + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + + + + An Event row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + Name + + + + Constructor + + Name + Type + + + + Constructor + + Name + Type + Flags + + + + Created from a row in the Event table + + + + The module where this instance is located + + + + + + + + + + + + + Constructor + + The module which contains this Event row + Row ID + If is null + If is invalid + + + + + + + A high-level representation of a row in the ExportedType table + + + + + The row id in its table + + + + + The owner module + + + + + + + + + + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always returns false since a does not contain any + or . + + + + + + + + + + + + + + + + + From column ExportedType.Flags + + + + Attributes + + + + From column ExportedType.TypeDefId + + + + + + + + From column ExportedType.TypeName + + + + + + + + From column ExportedType.TypeNamespace + + + + + + + + From column ExportedType.Implementation + + + + + + + + + + Called to initialize + + + + true if it's nested within another + + + + + Gets the declaring type, if any + + + + + Modify property: = + ( & ) | . + + Value to AND + Value to OR + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the visibility + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the layout + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the string format + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the bit + + + + + Gets/sets the bit. See also + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + true if this type has been moved to another assembly + + + + + Resolves the type + + A instance or null if it couldn't be resolved + + + + Resolves the type + + Source module or null + A instance or null if it couldn't be resolved + + + + Resolves the type + + A instance + If the type couldn't be resolved + + + + Converts this instance to a + + A new instance + + + + + + + An ExportedType row created by the user and not present in the original .NET file + + + + + Constructor + + Owner module + + + + Constructor + + Owner module + TypeDef ID + Type name + Type namespace + Flags + Implementation + + + + Created from a row in the ExportedType table + + + + The module where this instance is located + + + + + + + + + + + + + + + + Constructor + + The module which contains this ExportedType row + Row ID + If is null + If is invalid + + + + Field flags, see CorHdr.h/CorFieldAttr + + + + member access mask - Use this mask to retrieve accessibility information. + + + Member not referenceable. + + + Member not referenceable. + + + Accessible only by the parent type. + + + Accessible by sub-types only in this Assembly. + + + Accessibly by anyone in the Assembly. + + + Accessible only by type and sub-types. + + + Accessibly by sub-types anywhere, plus anyone in assembly. + + + Accessibly by anyone who has visibility to this scope. + + + Defined on type, else per instance. + + + Field may only be initialized, not written to after init. + + + Value is compile time constant. + + + Field does not have to be serialized when type is remoted. + + + field is special. Name describes how. + + + Implementation is forwarded through pinvoke. + + + Runtime(metadata internal APIs) should check name encoding. + + + Field has marshalling information. + + + Field has default. + + + Field has RVA. + + + + A high-level representation of a row in the Field table + + + + + The row id in its table + + + + + + + + + + + + + + + + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + From column Field.Flags + + + + Attributes + + + + From column Field.Name + + + + Name + + + + From column Field.Signature + + + + + + + + Gets/sets the field layout offset + + + + + + + + + + Called to initialize + + + + + + + + + + + + Called to initialize + + + Reset + + + + Gets/sets the field RVA + + + + + + + + + + Called to initialize + + + Reset + + + + Gets/sets the initial value. Be sure to set to true if + you write to this field. + + + + + + + + + + Called to initialize + + + Reset + + + + + + + + + + + + Called to initialize + + + + + + + + + + + + Called to initialize + + + Reset + + + + + + + + + + Gets/sets the declaring type (owner type) + + + + + + + + Called by and should normally not be called by any user + code. Use instead. Only call this if you must set the + declaring type without inserting it in the declaring type's method list. + + + + + + + + Gets/sets the + + + + + + + + true if is not null + + + + + true if is not null + + + + + Gets the constant element type or if there's no constant + + + + + true if is not null + + + + + Gets/sets the field type + + + + + Modify field: = + ( & ) | . + + Value to AND + Value to OR + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the field access + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Returns the full name of this field + + + + + Gets the size of this field in bytes or 0 if unknown. + + + + + Gets the size of this field in bytes or 0 if unknown. + + Updated with size + true if is valid, false otherwise + + + + Gets the size of this field in bytes or 0 if unknown. + + The declaring type of this + The field signature of this + Updated with size + true if is valid, false otherwise + + + + Gets the size of this field in bytes or 0 if unknown. + + The declaring type of this + The field signature of this + Size of a pointer + Updated with size + true if is valid, false otherwise + + + + + + + A Field row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + Name + + + + Constructor + + Name + Signature + + + + Constructor + + Name + Signature + Flags + + + + Created from a row in the Field table + + + + The module where this instance is located + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Constructor + + The module which contains this Field row + Row ID + If is null + If is invalid + + + + File row flags. See CorHdr.h/CorFileFlags + + + + This is not a resource file + + + This is a resource file or other non-metadata-containing file + + + + A high-level representation of a row in the File table + + + + + The row id in its table + + + + + + + + + + + + + + + + + From column File.Flags + + + + Attributes + + + + From column File.Name + + + + Name + + + + From column File.HashValue + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + + + + + + + A File row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + Name of file + Flags + File hash + + + + Created from a row in the File table + + + + The module where this instance is located + + + + + + + + + + + + + Constructor + + The module which contains this File row + Row ID + If is null + If is invalid + + + + Redirects .NET framework assembly references from older to newer versions + + + + + Redirects a .NET Framework assembly from an older version to the correct version + loaded at runtime. + + Current assembly reference that might get updated + Module using the assembly reference + + + + Tries to redirect a .NET Framework assembly from an older version to the correct version + loaded at runtime. + + Assembly reference + Module using the assembly reference + Updated with the redirected assembly if successful + + + + + Redirects a .NET Framework 2.0-3.5 assembly from an older version to the correct version + loaded at runtime. + + Current assembly reference that might get updated + + + + Redirects a .NET Framework 4.0+ assembly from an older version to the correct version + loaded at runtime. + + Current assembly reference that might get updated + + + + Tries to redirect a .NET Framework 2.0-3.5 assembly from an older version to the correct version + loaded at runtime. + + Assembly reference + Updated with the redirected assembly if successful + + + + + Tries to redirect a .NET Framework 4.0+ assembly from an older version to the correct version + loaded at runtime. + + Assembly reference + Updated with the redirected assembly if successful + + + + + Helps create a name + + + + + Checks whether the assembly name should be included when printing + the full type name. The assembly name isn't required in custom attributes + when the type already exists in the same module as the CA, or if the type + exists in mscorlib. + + The type (TypeDef, TypeRef or ExportedType) + or null + true if the assembly name must be included, false otherwise + + + + Creates type names, method names, etc. + + + + + Checks whether the assembly name should be included when printing the full name. + See for more info. + + Owner module + The type (TypeDef, TypeRef or ExportedType) + or null + true if the assembly name must be included, false otherwise + + + + Checks whether the assembly name should be included when printing the full name. + See for more info. + + Owner module + The type (TypeDef, TypeRef or ExportedType) + or null + If false, don't add an assembly name if it's a type in , + if true, don't add an assembly name if it's a type in or the corlib. + true if the assembly name must be included, false otherwise + + + + Returns the full name of a + + The TypeRef + Set if output should be compatible with reflection + Helps print the name + String builder to use or null + The full name + + + + Returns the full name of a + + The TypeRef + Set if output should be compatible with reflection + Helps print the name + String builder to use or null + The full name + + + + Returns the name of a + + The TypeRef + Set if output should be compatible with reflection + String builder to use or null + The full name + + + + Returns the name of a + + The TypeRef + Set if output should be compatible with reflection + String builder to use or null + The full name + + + + Returns the namespace of a + + The TypeRef + Set if output should be compatible with reflection + String builder to use or null + The full name + + + + Returns the namespace of a + + The TypeRef + Set if output should be compatible with reflection + String builder to use or null + The full name + + + + Returns the assembly qualified full name of a + + The IType + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly qualified full name of a + + The IType + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the full name of a property + + Declaring type full name or null if none + Name of property + Property signature + Type generic arguments or null if none + String builder to use or null + Property full name + + + + Returns the full name of a property + + Declaring type full name or null if none + Name of property + Property signature + Type generic arguments or null if none + String builder to use or null + Property full name + + + + Returns the full name of a property + + Declaring type full name or null if none + Name of property + Event type + Type generic arguments or null if none + String builder to use or null + Property full name + + + + Returns the full name of a property + + Declaring type full name or null if none + Name of property + Event type + Type generic arguments or null if none + String builder to use or null + Property full name + + + + Returns the full name of a field + + Declaring type full name or null if none + Name of field + Field signature + Type generic arguments or null if none + String builder to use or null + Field full name + + + + Returns the full name of a field + + Declaring type full name or null if none + Name of field + Field signature + Type generic arguments or null if none + String builder to use or null + Field full name + + + + Returns the full name of a method + + Declaring type full name or null if none + Name of method or null if none + Method signature + Type generic arguments or null if none + Method generic arguments or null if none + Generic parameter owner method or null + String builder to use or null + Method full name + + + + Returns the full name of a method + + Declaring type full name or null if none + Name of method or null if none + Method signature + Type generic arguments or null if none + Method generic arguments or null if none + Generic parameter owner method or null + String builder to use or null + Method full name + + + + Returns the full name of a property sig + + Property sig + String builder to use or null + Property sig full name + + + + Returns the full name of a property sig + + Property sig + String builder to use or null + Property sig full name + + + + Returns the full name of a sig + + Declaring type or null + Name or null + Method sig + Owner method or null + String builder to use or null + Sig full name + + + + Returns the full name of a sig + + Declaring type or null + Name or null + Method sig + Owner method or null + String builder to use or null + Sig full name + + + + Returns the namespace of a + + The TypeRef + Set if output should be compatible with reflection + String builder to use or null + The namespace + + + + Returns the namespace of a + + The TypeRef + Set if output should be compatible with reflection + String builder to use or null + The namespace + + + + Returns the name of a + + The TypeRef + Set if output should be compatible with reflection + String builder to use or null + The name + + + + Returns the name of a + + The TypeRef + Set if output should be compatible with reflection + String builder to use or null + The name + + + + Returns the full name of a + + The TypeRef + Set if output should be compatible with reflection + Helps print the name + String builder to use or null + The full name + + + + Returns the full name of a + + The TypeRef + Set if output should be compatible with reflection + Helps print the name + String builder to use or null + The full name + + + + Returns the assembly qualified full name of a + + The TypeRef + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly qualified full name of a + + The TypeRef + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly where this type is defined + + The TypeRef + A or null if none found + + + + Gets the scope + + The TypeRef + The or null if none found + + + + Returns the owner module. The type was created from metadata in this module. + + The TypeRef + A or null if none found + + + + Returns the namespace of a + + The TypeDef + Set if output should be compatible with reflection + String builder to use or null + The namespace + + + + Returns the namespace of a + + The TypeDef + Set if output should be compatible with reflection + String builder to use or null + The namespace + + + + Returns the name of a + + The TypeDef + Set if output should be compatible with reflection + String builder to use or null + The name + + + + Returns the name of a + + The TypeDef + Set if output should be compatible with reflection + String builder to use or null + The name + + + + Returns the full name of a + + The TypeDef + Set if output should be compatible with reflection + Helps print the name + String builder to use or null + The full name + + + + Returns the full name of a + + The TypeDef + Set if output should be compatible with reflection + Helps print the name + String builder to use or null + The full name + + + + Returns the assembly qualified full name of a + + The TypeDef + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly qualified full name of a + + The TypeDef + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly where this type is defined + + The TypeDef + A or null if none found + + + + Returns the owner module. The type was created from metadata in this module. + + The TypeDef + A or null if none found + + + + Returns the namespace of a + + The TypeSpec + Set if output should be compatible with reflection + String builder to use or null + The namespace + + + + Returns the namespace of a + + The TypeSpec + Set if output should be compatible with reflection + String builder to use or null + The namespace + + + + Returns the name of a + + The TypeSpec + Set if output should be compatible with reflection + String builder to use or null + The name + + + + Returns the name of a + + The TypeSpec + Set if output should be compatible with reflection + String builder to use or null + The name + + + + Returns the full name of a + + The TypeSpec + Set if output should be compatible with reflection + Helps print the name + String builder to use or null + The full name + + + + Returns the full name of a + + The TypeSpec + Set if output should be compatible with reflection + Helps print the name + String builder to use or null + The full name + + + + Returns the assembly qualified full name of a + + The TypeSpec + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly qualified full name of a + + The TypeSpec + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly where this type is defined + + The TypeSpec + A or null if none found + + + + Gets the scope type + + The TypeSpec + The scope type or null if none found + + + + Gets the scope + + The TypeSpec + The or null if none found + + + + Returns the owner module. The type was created from metadata in this module. + + The TypeSpec + A or null if none found + + + + Returns the namespace of a + + The type sig + Set if output should be compatible with reflection + String builder to use or null + The namespace + + + + Returns the namespace of a + + The type sig + Set if output should be compatible with reflection + String builder to use or null + The namespace + + + + Returns the name of a + + The type sig + Set if output should be compatible with reflection + String builder to use or null + The name + + + + Returns the name of a + + The type sig + Set if output should be compatible with reflection + String builder to use or null + The name + + + + Returns the full name of a + + The type sig + Set if output should be compatible with reflection + Helps print the name + Type generic args or null if none + Method generic args or null if none + String builder to use or null + The full name + + + + Returns the full name of a + + The type sig + Set if output should be compatible with reflection + Helps print the name + Type generic args or null if none + Method generic args or null if none + String builder to use or null + The full name + + + + Returns the assembly qualified full name of a + + The TypeSig + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly qualified full name of a + + The TypeSig + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly where this type is defined + + The TypeSig + A or null if none found + + + + Gets the scope + + The TypeSig + The or null if none found + + + + Gets the scope type + + The TypeSig + The scope type or null if none found + + + + Returns the owner module. The type was created from metadata in this module. + + The TypeSig + A or null if none found + + + + Returns the namespace of a + + The ExportedType + Set if output should be compatible with reflection + String builder to use or null + The namespace + + + + Returns the namespace of a + + The ExportedType + Set if output should be compatible with reflection + String builder to use or null + The namespace + + + + Returns the name of a + + The ExportedType + Set if output should be compatible with reflection + String builder to use or null + The name + + + + Returns the name of a + + The ExportedType + Set if output should be compatible with reflection + String builder to use or null + The name + + + + Returns the full name of a + + The ExportedType + Set if output should be compatible with reflection + Helps print the name + String builder to use or null + The full name + + + + Returns the full name of a + + The ExportedType + Set if output should be compatible with reflection + Helps print the name + String builder to use or null + The full name + + + + Returns the assembly qualified full name of a + + The ExportedType + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly qualified full name of a + + The ExportedType + Helps print the name + String builder to use or null + The assembly qualified full name + + + + Returns the assembly where this type is defined + + The ExportedType + A or null if none found + + + + Gets the scope type + + The ExportedType + The scope type or null if none found + + + + Gets the scope + + The ExportedType + The or null if none found + + + + Returns the owner module. The type was created from metadata in this module. + + The ExportedType + A or null if none found + + + + + + + Constructor + + true if it's for generic types, false if generic methods + + + + Pushes generic arguments + + The generic arguments + + + + Pops generic arguments + + The popped generic arguments + + + + Resolves a generic argument + + Generic variable number + A or null if none was found + + + + Replaces generic type/method var with its generic argument + + + + + Pushes generic arguments + + The generic arguments + + + + Pops generic arguments + + The popped generic arguments + + + + Pushes generic arguments + + The generic arguments + + + + Pops generic arguments + + The popped generic arguments + + + + Replaces a generic type/method var with its generic argument (if any). If + isn't a generic type/method var or if it can't + be resolved, it itself is returned. Else the resolved type is returned. + + Type signature + New which is never null unless + is null + + + + A high-level representation of a row in the GenericParam table + + + + + The row id in its table + + + + + + + + + + + + + + Gets the owner type/method + + + + + + + + Gets the declaring type or null if none or if is + not a + + + + + + + + Gets the declaring method or null if none or if is + not a + + + + + From column GenericParam.Number + + + + + + + + From column GenericParam.Flags + + + + Attributes + + + + From column GenericParam.Name + + + + Name + + + + From column GenericParam.Kind (v1.1 only) + + + + + + + + Gets the generic param constraints + + + + + + + Initializes + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + true if is not empty + + + + + + + + + + + Modify property: = + ( & ) | . + + Value to AND + Value to OR + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets variance (non, contra, co) + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the special constraint + + + + + true if there are no special constraints + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + + + + + + + + + + + + + + + + + + + A GenericParam row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + The generic param number + + + + Constructor + + The generic param number + Flags + + + + Constructor + + The generic param number + Flags + Name + + + + Created from a row in the GenericParam table + + + + The module where this instance is located + + + + + + + + + + + + + + + + Constructor + + The module which contains this GenericParam row + Row ID + If is null + If is invalid + + + + + + + Generic parameter flags. See CorHdr.h/CorGenericParamAttr + + + + + + + + + + + + + + + + + + + + + + type argument must be a reference type + + + type argument must be a value type but not Nullable + + + type argument must have a public default constructor + + + + A high-level representation of a row in the GenericParamConstraint table + + + + + The row id in its table + + + + + + + + + + + + + + Gets the owner generic param + + + + + + + + From column GenericParamConstraint.Constraint + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + A GenericParamConstraintAssembly row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + The constraint + + + + Created from a row in the GenericParamConstraint table + + + + The module where this instance is located + + + + + + + + + + + + + Constructor + + The module which contains this GenericParamConstraint row + Row ID + Generic parameter context + If is null + If is invalid + + + + Generic parameter context + + + + + Type context + + + + + Method context + + + + + true if and are both null + + + + + Creates a new instance and initializes the + field to 's + and the field to . + + Method + A new instance + + + + Creates a new instance and initializes the + field to and the field + to null + + Type + A new instance + + + + Constructor + + Type context + + + + Constructor. The field is set to null and NOT to + 's . Use + if you want that behavior. + + Method context + + + + Constructor + + Type context + Method context + + + + Resolves assemblies + + + + + Finds and returns an + + The assembly to find + The module that needs to resolve an assembly or null + An instance owned by the assembly resolver or + null if the assembly couldn't be found. + + + + The table row can be referenced by a MD token + + + + + Returns the metadata token + + + + + Gets/sets the row ID + + + + + All *MD classes implement this interface. + + + + + Gets the original row ID + + + + + An assembly. Implemented by , and + . + + + + + The assembly version + + + + + Assembly flags + + + + + Public key or public key token + + + + + Locale, aka culture + + + + + Gets the full name of the assembly but use a public key token + + + + + Gets/sets the bit + + + + + Gets/sets the processor architecture + + + + + Gets/sets the processor architecture + + + + + true if unspecified processor architecture + + + + + true if neutral (PE32) architecture + + + + + true if x86 (PE32) architecture + + + + + true if IA-64 (PE32+) architecture + + + + + true if x64 (PE32+) architecture + + + + + true if ARM (PE32) architecture + + + + + true if eg. reference assembly (not runnable) + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the content type + + + + + true if content type is Default + + + + + true if content type is WindowsRuntime + + + + + Implemented by and , which are the only + valid managed entry point tokens. + + + + + Interface to access a module def/ref + + + + + Type of scope + + + + + It's an instance + + + + + It's a instance + + + + + It's a instance + + + + + Implemented by modules and assemblies + + + + + Gets the scope type + + + + + Gets the scope name + + + + + Interface to get the full name of a type, field, or method + + + + + Gets the full name + + + + + Simple name of implementer + + + + + Implemented by all member refs and types + + + + + Gets the owner module + + + + + Methods to check whether the implementer is a type or a method. + + + + + true if it's a type + + + + + true if it's a method + + + + + Implemented by types, fields, methods, properties, events + + + + + Gets the declaring type + + + + + true if it's a or a that's + referencing a field. + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + All member definitions implement this interface: , + , , , + , and . + + + + + Gets the declaring type + + + + + Implemented by the following classes: , + , , , + , , , + and + + + + + Implemented by types and methods + + + + + Gets the number of generic parameters / arguments + + + + + Implemented by fields ( and ) + + + + + Gets/sets the field signature + + + + + Implemented by methods (, and ) + + + + + Method signature + + + + + Implemented by tables that can be a token in the ldtoken instruction + + + + + The table row can be referenced by a coded token + + + + + TypeDefOrRef coded token interface + + + + + The coded token tag + + + + + HasConstant coded token interface + + + + + The coded token tag + + + + + Gets/sets the constant value + + + + + HasCustomAttribute coded token interface + + + + + The coded token tag + + + + + Gets all custom attributes + + + + + true if is not empty + + + + + HasFieldMarshal coded token interface + + + + + The coded token tag + + + + + Gets/sets the marshal type + + + + + true if is not null + + + + + HasDeclSecurity coded token interface + + + + + The coded token tag + + + + + Gets the permission sets + + + + + true if is not empty + + + + + MemberRefParent coded token interface + + + + + The coded token tag + + + + + HasSemantic coded token interface + + + + + The coded token tag + + + + + MethodDefOrRef coded token interface + + + + + The coded token tag + + + + + MemberForwarded coded token interface + + + + + The coded token tag + + + + + Gets/sets the impl map + + + + + true if is not null + + + + + Implementation coded token interface + + + + + The coded token tag + + + + + CustomAttributeType coded token interface + + + + + The coded token tag + + + + + ResolutionScope coded token interface + + + + + The coded token tag + + + + + TypeOrMethodDef coded token interface + + + + + The coded token tag + + + + + Gets the generic parameters + + + + + true if is not empty + + + + + HasCustomDebugInformation interface + + + + + The custom debug information tag + + + + + Gets the custom debug infos + + + + + true if is not empty + + + + + Access to .NET core library's simple types + + + + + Gets a System.Void + + + + + Gets a System.Boolean + + + + + Gets a System.Char + + + + + Gets a System.SByte + + + + + Gets a System.Byte + + + + + Gets a System.Int16 + + + + + Gets a System.UInt16 + + + + + Gets a System.Int32 + + + + + Gets a System.UInt32 + + + + + Gets a System.Int64 + + + + + Gets a System.UInt64 + + + + + Gets a System.Single + + + + + Gets a System.Double + + + + + Gets a System.String + + + + + Gets a System.TypedReference + + + + + Gets a System.IntPtr + + + + + Gets a System.UIntPtr + + + + + Gets a System.Object + + + + + Gets the assembly reference to the core library + + + + + Gets a that references a type in the core library assembly + + Namespace of type (eg. "System") + Name of type + A instance. This instance may be a cached instance. + + + + Custom attribute interface. Implemented by and + + + + + + Gets the attribute type + + + + + Gets the full name of the attribute type + + + + + Gets all named arguments (field and property values) + + + + + true if is not empty + + + + + Gets all s that are field arguments + + + + + Gets all s that are property arguments + + + + + Interface to decrypt methods + + + + + Gets the method's body + + Method rid + The found in the method's Method row + The method's parameters + Generic parameter context + Updated with the method's if this + method returns true + true if the method body was decrypted, false if the method isn't + encrypted and the default body reader code should be used. + + + + Interface to decrypt strings + + + + + Reads a string + + String token + A string or null if we should read it from the #US heap + + + + events + + + + + An error was detected. An exception should normally be thrown but the error + can be ignored. + + + + + Just a warning and can be ignored. + + + + + A normal message + + + + + A verbose message + + + + + A very verbose message + + + + + Simple logger + + + + + Log something + + Caller or null + Logger event + Format + Arguments + + + + true if this event is ignored. If the event is ignored, the caller can + choose not to call . This is useful if it can take time to + prepare the message. + + The logger event + + + + Dummy logger which ignores all messages, but can optionally throw on errors. + + + + + It ignores everything and doesn't throw anything. + + + + + Throws a on errors, but ignores anything else. + + + + + Constructor + + If non-null, this exception type is thrown on + errors. It must have a public constructor that takes a as the only + argument. + + + + + + + + + + A high-level representation of a row in the ImplMap table + + + + + The row id in its table + + + + + + + + + + + From column ImplMap.MappingFlags + + + + Attributes + + + + From column ImplMap.ImportName + + + + Name + + + + From column ImplMap.ImportScope + + + + + + + + Modify property: = + ( & ) | . + + Value to AND + Value to OR + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the bit + + + + + Gets/sets the char set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets best fit + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets throw on unmappable char + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the bit + + + + + Gets/sets calling convention + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Checks whether this is a certain P/Invoke method + + Name of the DLL + Name of the function within the DLL + true if it's the specified P/Invoke method, else false + + + + Checks whether this is a certain P/Invoke method + + Name of the DLL + Name of the function within the DLL + Treat as Windows + true if it's the specified P/Invoke method, else false + + + + An ImplMap row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + Scope + Name + Flags + + + + Created from a row in the ImplMap table + + + + + + + + Constructor + + The module which contains this ImplMap row + Row ID + If is null + If is invalid + + + + options + + + + + Use s whenever possible if the is located + in this module. + + + + + Use s whenever possible if the is located + in this module. + + + + + Use s whenever possible if the is located + in this module. + + + + + Use s, s and s + whenever possible if the definition is located in this module. + + + + + + + + Don't set this flag. For internal use only. + + + + + Re-maps entities that were renamed in the target module + + + + + Matches source to the one that is already present in the target module under a different name. + + referenced by the entity that is being imported. + matching or null if there's no match. + + + + Matches source to the one that is already present in the target module under a different name. + + referenced by the entity that is being imported. + matching or null if there's no match. + + + + Matches source to the one that is already present in the target module under a different name. + + referenced by the entity that is being imported. + matching or null if there's no match. + + + + Matches source to the one that is already present in the target module under a different name. + + referenced by the entity that is being imported. + matching or null if there's no match. + + + + Overrides default behavior of + May be used to use reference assemblies for resolution, for example. + + to create for. + or null to use default 's type resolution + + + + Imports s, s, s + and s as references + + + + + Constructor + + The module that will own all references + + + + Constructor + + The module that will own all references + Generic parameter context + + + + Constructor + + The module that will own all references + Importer options + + + + Constructor + + The module that will own all references + Importer options + Generic parameter context + + + + Constructor + + The module that will own all references + Importer options + Generic parameter context + Mapper for renamed entities + + + + Imports a as a . If it's a type that should be + the declaring type of a field/method reference, call instead. + + The type + The imported type or null if is invalid + + + + Imports a as a . Should be called if it's the + declaring type of a method/field reference. See also + + The type + + + + + Imports a as a + + The type + A list of all required modifiers or null + A list of all optional modifiers or null + The imported type or null if is invalid + + + + Imports a as a + + The type + The imported type or null if is invalid + + + + Imports a as a + + The type + A list of all required modifiers or null + A list of all optional modifiers or null + The imported type or null if is invalid + + + + Imports a as a . This will be either + a or a . + + The method + The imported method or null if is invalid + or if we failed to import the method + + + + Imports a as a . This will be either + a or a . + + The method + Always verify method signature to make sure the + returned reference matches the metadata in the source assembly + The imported method or null if is invalid + or if we failed to import the method + + + + Imports a as a + + The field + The imported field or null if is invalid + or if we failed to import the field + + + + Imports a as a + + The field + Always verify field signature to make sure the + returned reference matches the metadata in the source assembly + The imported field or null if is invalid + or if we failed to import the field + + + + Imports a + + The type + The imported type or null + + + + Imports a as a + + The type + The imported type or null + + + + Imports a + + The type + The imported type or null + + + + Imports a + + The type + The imported type or null + + + + Imports a + + The type + The imported type or null + + + + Imports a + + The type + The imported type or null + + + + Imports a + + The sig + The imported sig or null if input is invalid + + + + Imports a + + The sig + The imported sig or null if input is invalid + + + + Imports a + + The sig + The imported sig or null if input is invalid + + + + Imports a + + The sig + The imported sig or null if input is invalid + + + + Imports a + + The sig + The imported sig or null if input is invalid + + + + Imports a + + The sig + The imported sig or null if input is invalid + + + + Imports a + + The field + The imported type or null if is invalid + + + + Imports a + + The method + The imported method or null if is invalid + + + + Imports a as an + + The field + The imported type or null if is invalid + + + + Imports a as an + + The method + The imported method or null if is invalid + + + + Imports a + + The method + The imported method or null if is invalid + + + + Imports a + + The member ref + The imported member ref or null if is invalid + + + + A high-level representation of a row in the InterfaceImpl table + + + + + The row id in its table + + + + + + + + + + + + + + From column InterfaceImpl.Interface + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + An InterfaceImpl row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + The interface the type implements + + + + Created from a row in the InterfaceImpl table + + + + The module where this instance is located + + + + + + + + + + + + + Constructor + + The module which contains this InterfaceImpl row + Row ID + Generic parameter context + If is null + If is invalid + + + + Resolves types, methods, fields + + + + + Resolves types + + + + + Resolves a type + + The type + The module that needs to resolve the type or null + A instance or null if it couldn't be resolved + + + + Resolves fields and methods + + + + + Resolves a method or a field + + A method/field reference + A or a instance or null + if it couldn't be resolved. + + + + Resolves tokens + + + + + Resolves a token + + The metadata token + Generic parameter context + A or null if is invalid + + + + Interface to get the full name of a type + + + + + true if it's a value type + + + + + Returns the name of this type + + + + + Returns the reflection name of this type + + + + + Returns the namespace of this type + + + + + Returns the reflection namespace of this type + + + + + Returns the reflection name of this type. See also . + + + + + Returns the reflection name of this type, and includes the assembly name where the + type is located. It can be passed to to + load the type. + + + + + Gets the assembly where this type is defined + + + + + Gets the scope, which is different from since it + can differentiate between modules within the same assembly. + + + + + Gets the type whose scope is returned by and whose assembly + is returned by . This is always a + , or null. It can also be a + nested . + For example, if this type is a System.String&, then this value is a System.String. + If it's a generic instance type (eg. List<int>), then the generic type is + returned (eg. List<T>). In other words, the first or + that is found (without searching generic arguments) is returned. + + + + + true if it's an integer or a floating point type + + + + + Implemented by types and calling convention signatures. + + + + + true if this contains a or a . + + + + + Finds s + + + + + Finds a + + Full name of the type (no assembly information) + true if it's a reflection name, and nested + type names are separated by a + character. If false, nested type names + are separated by a / character. + An existing or null if it wasn't found. + + + + Finds a . 's scope (i.e., module or + assembly) is ignored when looking up the type. + + The type ref + An existing or null if it wasn't found. + + + + Interface to access a local or a parameter + + + + + Gets the variable type + + + + + Gets the 0-based position + + + + + Gets/sets the variable name + + + + + A high-level representation of a row in the ManifestResource table + + + + + The row id in its table + + + + + + + + + + + + + + From column ManifestResource.Offset + + + + + + + + From column ManifestResource.Flags + + + + Attributes + + + + From column ManifestResource.Name + + + + Name + + + + From column ManifestResource.Implementation + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + Modify property: = + ( & ) | . + + Value to AND + Value to OR + + + + Gets/sets the visibility + + + + + true if is set + + + + + true if is set + + + + + A ManifestResource row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + Name + Implementation + + + + Constructor + + Name + Implementation + Flags + + + + Constructor + + Name + Implementation + Flags + Offset + + + + Created from a row in the ManifestResource table + + + + The module where this instance is located + + + + + + + + + + + + + Constructor + + The module which contains this ManifestResource row + Row ID + If is null + If is invalid + + + + ManifestResource flags. See CorHdr.h/CorManifestResourceFlags + + + + + + + The Resource is exported from the Assembly. + + + The Resource is private to the Assembly. + + + + Reads s + + + + + Reads a from the #Blob heap + + Module + Blob offset + A new instance + + + + Reads a from the #Blob heap + + Module + Blob offset + Generic parameter context + A new instance + + + + Reads a from + + Owner module + Marshal data + A new instance + + + + Reads a from + + Owner module + Marshal data + Generic parameter context + A new instance + + + + Reads a from + + Owner module + A reader that will be owned by us + A new instance + + + + Reads a from + + Owner module + A reader that will be owned by us + Generic parameter context + A new instance + + + + Base class of all marshal types + + + + + The native type + + + + + Gets the + + + + + Constructor + + Native type + + + + + + + Contains the raw marshal blob data + + + + + Gets/sets the raw data + + + + + Constructor + + Raw data + + + + A marshal type + + + + + Gets/sets the size + + + + + true if is valid + + + + + Default constructor + + + + + Constructor + + Size + + + + + + + A marshal type + + + + + Gets/sets the variant type + + + + + Gets/sets the user-defined sub type (it's usually null) + + + + + true if is valid + + + + + true if is valid + + + + + Default constructor + + + + + Constructor + + Variant type + + + + Constructor + + User-defined sub type + + + + Constructor + + Variant type + User-defined sub type + + + + + + + A marshal type + + + + + Gets/sets the element type + + + + + Gets/sets the size + + + + + true if is valid + + + + + true if is valid + + + + + Default constructor + + + + + Constructor + + Size + + + + Constructor + + Size + Element type + + + + + + + A marshal type + + + + + Gets/sets the element type + + + + + Gets/sets the parameter number + + + + + Gets/sets the size of the array + + + + + Gets/sets the flags + + + + + true if is valid + + + + + true if is valid + + + + + true if is valid + + + + + true if is valid + + + + + true if ntaSizeParamIndexSpecified bit is set, false if it's not + set or if is invalid. + + + + + true if ntaSizeParamIndexSpecified bit is not set, false if it's + set or if is invalid. + + + + + Default constructor + + + + + Constructor + + Element type + + + + Constructor + + Element type + Parameter number + + + + Constructor + + Element type + Parameter number + Number of elements + + + + Constructor + + Element type + Parameter number + Number of elements + Flags + + + + + + + A marshal type + + + + + Gets/sets the GUID string + + + + + Gets/sets the native type name string + + + + + Gets/sets the custom marshaler + + + + + Gets/sets the cookie string + + + + + Default constructor + + + + + Constructor + + GUID string + + + + Constructor + + GUID string + Native type name string + + + + Constructor + + GUID string + Native type name string + Custom marshaler name string + + + + Constructor + + GUID string + Native type name string + Custom marshaler name string + Cookie string + + + + + + + A , or a + marshal type + + + + + Gets/sets the IID parameter index + + + + + true if is valid + + + + + Constructor + + Native type + + + + Constructor + + Native type + IID parameter index + + + + + + + Metadata token + + + + + Mask to get the rid from a raw metadata token + + + + + Max rid value + + + + + Number of bits to right shift a raw metadata token to get the table index + + + + + Returns the table type + + + + + Returns the row id + + + + + Returns the raw token + + + + + Returns true if it's a null token + + + + + Constructor + + Raw token + + + + Constructor + + Raw token + + + + Constructor + + The table type + Row id + + + + Constructor + + The table type + Row id + + + + Returns the rid (row ID) + + A raw metadata token + A rid + + + + Returns the rid (row ID) + + A raw metadata token + A rid + + + + Returns the table + + A raw metadata token + A metadata table index + + + + Returns the table + + A raw metadata token + A metadata table index + + + + Gets the token as a raw 32-bit signed integer + + + + + Gets the token as a raw 32-bit unsigned integer + + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + + + + + + + + + + + + + + + + + Represents the #Blob stream + + + + + + + + + + + Reads data + + Offset of data + The data or null if invalid offset + + + + Reads data just like , but returns an empty array if + offset is invalid + + Offset of data + The data + + + + Creates a reader that can access a blob + + Offset of blob + A new stream + + + + Creates a reader that can access a blob or returns false on failure + + Offset of blob + Updated with the reader + + + + + Contains all possible coded token classes + + + + TypeDefOrRef coded token + + + HasConstant coded token + + + HasCustomAttribute coded token + + + HasFieldMarshal coded token + + + HasDeclSecurity coded token + + + MemberRefParent coded token + + + HasSemantic coded token + + + MethodDefOrRef coded token + + + MemberForwarded coded token + + + Implementation coded token + + + CustomAttributeType coded token + + + ResolutionScope coded token + + + TypeOrMethodDef coded token + + + HasCustomDebugInformation coded token + + + + Returns all types of tables + + + + + Returns the number of bits that is used to encode table type + + + + + Constructor + + Number of bits used to encode token type + All table types + + + + Encodes a token + + The token + Coded token + + + + + Encodes a token + + The token + Coded token + + + + + Encodes a token + + The token + Coded token + true if successful + + + + Encodes a token + + The token + Coded token + true if successful + + + + Decodes a coded token + + The coded token + Decoded token or 0 on failure + + + + + Decodes a coded token + + The coded token + Decoded token or 0 on failure + + + + + Decodes a coded token + + The coded token + Decoded token + true if successful + + + + Decodes a coded token + + The coded token + Decoded token + true if successful + + + + Info about one column in a MD table + + + + + Gets the column index + + + + + Returns the column offset within the table row + + + + + Returns the column size + + + + + Returns the column name + + + + + Returns the ColumnSize enum value + + + + + Constructor + + Column index + The column name + Column size + + + + Constructor + + Column index + The column name + Column size + Offset of column + Size of column + + + + Reads the column + + A reader positioned on this column + The column value + + + + Writes a column + + The writer position on this column + The column value + + + + MD table column size + + + + RID into Module table + + + RID into TypeRef table + + + RID into TypeDef table + + + RID into FieldPtr table + + + RID into Field table + + + RID into MethodPtr table + + + RID into Method table + + + RID into ParamPtr table + + + RID into Param table + + + RID into InterfaceImpl table + + + RID into MemberRef table + + + RID into Constant table + + + RID into CustomAttribute table + + + RID into FieldMarshal table + + + RID into DeclSecurity table + + + RID into ClassLayout table + + + RID into FieldLayout table + + + RID into StandAloneSig table + + + RID into EventMap table + + + RID into EventPtr table + + + RID into Event table + + + RID into PropertyMap table + + + RID into PropertyPtr table + + + RID into Property table + + + RID into MethodSemantics table + + + RID into MethodImpl table + + + RID into ModuleRef table + + + RID into TypeSpec table + + + RID into ImplMap table + + + RID into FieldRVA table + + + RID into ENCLog table + + + RID into ENCMap table + + + RID into Assembly table + + + RID into AssemblyProcessor table + + + RID into AssemblyOS table + + + RID into AssemblyRef table + + + RID into AssemblyRefProcessor table + + + RID into AssemblyRefOS table + + + RID into File table + + + RID into ExportedType table + + + RID into ManifestResource table + + + RID into NestedClass table + + + RID into GenericParam table + + + RID into MethodSpec table + + + RID into GenericParamConstraint table + + + RID into Document table + + + RID into MethodDebugInformation table + + + RID into LocalScope table + + + RID into LocalVariable table + + + RID into LocalConstant table + + + RID into ImportScope table + + + RID into StateMachineMethod table + + + RID into CustomDebugInformation table + + + 8-bit byte + + + 16-bit signed int + + + 16-bit unsigned int + + + 32-bit signed int + + + 32-bit unsigned int + + + Index into #Strings stream + + + Index into #GUID stream + + + Index into #Blob stream + + + TypeDefOrRef encoded token + + + HasConstant encoded token + + + HasCustomAttribute encoded token + + + HasFieldMarshal encoded token + + + HasDeclSecurity encoded token + + + MemberRefParent encoded token + + + HasSemantic encoded token + + + MethodDefOrRef encoded token + + + MemberForwarded encoded token + + + Implementation encoded token + + + CustomAttributeType encoded token + + + ResolutionScope encoded token + + + TypeOrMethodDef encoded token + + + HasCustomDebugInformation encoded token + + + + See COMIMAGE_FLAGS_XXX in CorHdr.h in the Windows SDK + + + + + See COMIMAGE_FLAGS_ILONLY in the Windows SDK + + + + + See COMIMAGE_FLAGS_32BITREQUIRED in the Windows SDK + + + + + Set if a native header exists (COMIMAGE_FLAGS_IL_LIBRARY) + + + + + See COMIMAGE_FLAGS_STRONGNAMESIGNED in the Windows SDK + + + + + See COMIMAGE_FLAGS_NATIVE_ENTRYPOINT in the Windows SDK + + + + + See COMIMAGE_FLAGS_TRACKDEBUGDATA in the Windows SDK + + + + + See COMIMAGE_FLAGS_32BITPREFERRED in the Windows SDK + + + + + Used when a #~ stream is present in the metadata + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets a rid list (eg. field list) + + Source table, eg. TypeDef + Row ID in + Column index in , eg. 4 for TypeDef.FieldList + Destination table, eg. Field + A new instance + + + + + + + A custom .NET metadata stream + + + + + Constructor + + + + + Constructor + + Data reader factory + Offset of metadata + The stream header + + + + .NET metadata stream + + + + + Reader that can access the whole stream. + + NOTE: Always copy this field to a local variable before using it since it must be thread safe. + + + + + null if it wasn't present in the file + + + + + + + + + + + Gets the length of this stream in the metadata + + + + + Gets the stream header + + + + + Gets the name of the stream + + + + + Gets a data reader that can read the full stream + + + + + + Default constructor + + + + + Constructor + + Data reader factory + Offset of metadata + The stream header + + + + Called after gets recreated + + + + + + + + Dispose method + + true if called by + + + + Checks whether an index is valid + + The index + true if the index is valid + + + + Check whether an offset is within the stream + + Stream offset + true if the offset is valid + + + + Check whether an offset is within the stream + + Stream offset + Size of data + true if the offset is valid + + + + Base class of #US, #Strings, #Blob, and #GUID classes + + + + + + + + + + + Initializes .NET table row sizes + + + + + Initializes the table sizes + + true if #Strings size >= 0x10000 + true if #GUID size >= 0x10000 + true if #Blob size >= 0x10000 + Count of rows in each table + Count of rows in each table (debug tables) + + + + Creates the table infos + + Major table version + Minor table version + All table infos (not completely initialized) + + + + Creates the table infos + + Major table version + Minor table version + Initialized to max present tables (eg. 42 or 45) + All table infos (not completely initialized) + + + + Used when a #- stream is present in the metadata + + + + + + + + + + + + + + + + + + + + + + + Converts a logical Field rid to a physical Field rid + + A valid rid + Converted rid or any invalid rid value if is invalid + + + + Converts a logical Method rid to a physical Method rid + + A valid rid + Converted rid or any invalid rid value if is invalid + + + + Converts a logical Param rid to a physical Param rid + + A valid rid + Converted rid or any invalid rid value if is invalid + + + + Converts a logical Event rid to a physical Event rid + + A valid rid + Converted rid or any invalid rid value if is invalid + + + + Converts a logical Property rid to a physical Property rid + + A valid rid + Converted rid or any invalid rid value if is invalid + + + + + + + + + + + + + + + + + + + Gets a rid list (eg. field list) + + Source table, eg. TypeDef + Row ID in + Column index in , eg. 4 for TypeDef.FieldList + Destination table, eg. Field + A new instance + + + + + + + Linear searches the table (O(n)) for a rid whose key column at index + is equal to . + + Table to search + Key column index + Key + The rid of the found row, or 0 if none found + + + + + + + Represents the #GUID stream + + + + + + + + + + + + + + Read a + + Index into this stream + A or null if is 0 or invalid + + + + Heap type. The values are set in stone by MS. Don't change. + + + + #Strings heap + + + #GUID heap + + + #Blob heap + + + #US heap + + + + Represents the IMAGE_COR20_HEADER structure + + + + + Returns true if it has a native header + + + + + Returns the IMAGE_COR20_HEADER.cb field + + + + + Returns the IMAGE_COR20_HEADER.MajorRuntimeVersion field + + + + + Returns the IMAGE_COR20_HEADER.MinorRuntimeVersion field + + + + + Returns the IMAGE_COR20_HEADER.Metadata field + + + + + Returns the IMAGE_COR20_HEADER.Flags field + + + + + Returns the IMAGE_COR20_HEADER.EntryPointToken/EntryPointTokenRVA field + + + + + Returns the IMAGE_COR20_HEADER.Resources field + + + + + Returns the IMAGE_COR20_HEADER.StrongNameSignature field + + + + + Returns the IMAGE_COR20_HEADER.CodeManagerTable field + + + + + Returns the IMAGE_COR20_HEADER.VTableFixups field + + + + + Returns the IMAGE_COR20_HEADER.ExportAddressTableJumps field + + + + + Returns the IMAGE_COR20_HEADER.ManagedNativeHeader field + + + + + Constructor + + PE file reader pointing to the start of this section + Verify section + Thrown if verification fails + + + + Reads metadata table columns + + + + + Reads a column + + The table to read from + Table row id + The column to read + Result + true if was updated, false if + the column should be read from the original table. + + + + Reads table rows + + Raw row + + + + Reads a table row or returns false if the row should be read from the original table + + Row id + The row + + + + + Version strings found in the meta data header + + + + + MS CLR 1.0 version string (.NET 1.0) + + + + + MS CLR 1.0 version string (.NET 1.0). This is an incorrect version that shouldn't be used. + + + + + MS CLR 1.0 version string (.NET 1.0). This is an incorrect version that shouldn't be used. + + + + + MS CLR 1.0 version string (.NET 1.0). This is an incorrect version that shouldn't be used. + + + + + MS CLR 1.1 version string (.NET 1.1) + + + + + MS CLR 2.0 version string (.NET 2.0-3.5) + + + + + MS CLR 4.0 version string (.NET 4.0-4.5) + + + + + MS CLR 1.0 any version + + + + + MS CLR 1.0 any version + + + + + MS CLR 1.1 any version + + + + + MS CLR 2.0 any version + + + + + MS CLR 4.0 any version + + + + + ECMA 2002 version string + + + + + ECMA 2005 version string + + + + + Portable PDB v1.0 + + + + + MDStream flags + + + + #Strings stream is big and requires 4 byte offsets + + + #GUID stream is big and requires 4 byte offsets + + + #Blob stream is big and requires 4 byte offsets + + + + + + + + + Extra data follows the row counts + + + Set if certain tables can contain deleted rows. The name column (if present) is set to "_Deleted" + + + + A MD table (eg. Method table) + + + + + + + + + + + Gets the table + + + + + Gets the name of this table + + + + + Returns total number of rows + + + + + Gets the total size in bytes of one row in this table + + + + + Returns all the columns + + + + + Returns true if there are no valid rows + + + + + Returns info about this table + + + + + Constructor + + The table + Number of rows in this table + Info about this table + + + + Checks whether the row exists + + Row ID + + + + Checks whether the row does not exist + + Row ID + + + + + + + Reads .NET metadata + + + + + true if the compressed (normal) metadata is used, false if the non-compressed + (Edit N' Continue) metadata is used. This can be false even if the table stream + is #~ but that's very uncommon. + + + + + true if this is standalone Portable PDB metadata + + + + + Gets the .NET header + + + + + Gets the version found in the metadata header. The major version number is in the high 16 bits + and the lower version number is in the low 16 bits. + + + + + Gets the version string found in the metadata header + + + + + Gets the + + + + + Gets the metadata header + + + + + Returns the #Strings stream or a default empty one if it's not present + + + + + Returns the #US stream or a default empty one if it's not present + + + + + Returns the #Blob stream or a default empty one if it's not present + + + + + Returns the #GUID stream or a default empty one if it's not present + + + + + Returns the #~ or #- tables stream + + + + + Returns the #Pdb stream or null if it's not a standalone portable PDB file + + + + + Gets all streams + + + + + Gets a list of all the valid TypeDef rids. It's usually every rid in the + TypeDef table, but could be less if a type has been deleted. + + + + + Gets a list of all the valid ExportedType rids. It's usually every rid in the + ExportedType table, but could be less if a type has been deleted. + + + + + Gets the Field rid list + + TypeDef rid + A new instance + + + + Gets the Method rid list + + TypeDef rid + A new instance + + + + Gets the Param rid list + + Method rid + A new instance + + + + Gets the Event rid list + + EventMap rid + A new instance + + + + Gets the Property rid list + + PropertyMap rid + A new instance + + + + Finds all InterfaceImpl rids owned by + + Owner TypeDef rid + A instance containing the valid InterfaceImpl rids + + + + Finds all GenericParam rids owned by in table + + A TypeOrMethodDef table + Owner rid + A instance containing the valid GenericParam rids + + + + Finds all GenericParamConstraint rids owned by + + Owner GenericParam rid + A instance containing the valid GenericParamConstraint rids + + + + Finds all CustomAttribute rids owned by in table + + A HasCustomAttribute table + Owner rid + A instance containing the valid CustomAttribute rids + + + + Finds all DeclSecurity rids owned by in table + + A HasDeclSecurity table + Owner rid + A instance containing the valid DeclSecurity rids + + + + Finds all MethodSemantics rids owned by in table + + A HasSemantic table + Owner rid + A instance containing the valid MethodSemantics rids + + + + Finds all MethodImpl rids owned by + + Owner TypeDef rid + A instance containing the valid MethodImpl rids + + + + Finds a ClassLayout rid + + Owner TypeDef rid + The ClassLayout rid or 0 if is invalid + or if it has no row in the ClassLayout table. + + + + Finds a FieldLayout rid + + Owner Field rid + The FieldLayout rid or 0 if is invalid + or if it has no row in the FieldLayout table. + + + + Finds a FieldMarshal rid + + A HasFieldMarshal table + Owner rid + The FieldMarshal rid or 0 if is invalid + or if it has no row in the FieldMarshal table. + + + + Finds a FieldRVA rid + + Owner Field rid + The FieldRVA rid or 0 if is invalid + or if it has no row in the FieldRVA table. + + + + Finds an ImplMap rid + + A MemberForwarded table + Owner rid + The ImplMap rid or 0 if is invalid + or if it has no row in the ImplMap table. + + + + Finds a NestedClass rid + + Owner TypeDef rid + The NestedClass rid or 0 if is invalid + or if it has no row in the NestedClass table. + + + + Finds an EventMap rid + + Owner TypeDef rid + The EventMap rid or 0 if is invalid + or if it has no row in the EventMap table. + + + + Finds a PropertyMap rid + + Owner TypeDef rid + The PropertyMap rid or 0 if is invalid + or if it has no row in the PropertyMap table. + + + + Finds a Constant rid + + A HasConstant table + Owner rid + The Constant rid or 0 if is invalid + or if it has no row in the Constant table. + + + + Returns the owner TypeDef rid + + A Field rid + The owner TypeDef rid or 0 if is invalid + or if it has no owner. + + + + Returns the owner TypeDef rid + + A Method rid + The owner TypeDef rid or 0 if is invalid + or if it has no owner. + + + + Returns the owner TypeDef rid + + A Event rid + The owner TypeDef rid or 0 if is invalid + or if it has no owner. + + + + Returns the owner TypeDef rid + + A Property rid + The owner TypeDef rid or 0 if is invalid + or if it has no owner. + + + + Returns the owner TypeOrMethodDef rid + + A GenericParam rid + The owner TypeOrMethodDef rid or 0 if is + invalid or if it has no owner. + + + + Returns the owner GenericParam rid + + A GenericParamConstraint rid + The owner GenericParam rid or 0 if is + invalid or if it has no owner. + + + + Returns the owner Method rid + + A Param rid + The owner Method rid or 0 if is invalid + or if it has no owner. + + + + Gets a list of all nested classes owned by + + A TypeDef rid + A new instance + + + + Gets a list of all non-nested classes. A type is a non-nested type if + returns an empty list. + + A new instance + + + + Finds all LocalScope rids owned by + + Owner Method rid + A instance containing the valid LocalScope rids + + + + Gets the StateMachineMethod rid or 0 if it's not a state machine method + + Owner Method rid + + + + + Finds all CustomDebugInformation rids owned by in table + + A HasCustomDebugInformation table + Owner rid + A instance containing the valid CustomDebugInformation rids + + + + Disposes of this instance + + + + + Common base class for #~ and #- metadata classes + + + + + The PE image + + + + + The .NET header + + + + + The MD header + + + + + The #Strings stream + + + + + The #US stream + + + + + The #Blob stream + + + + + The #GUID stream + + + + + The #~ or #- stream + + + + + The #Pdb stream + + + + + All the streams that are present in the PE image + + + + true if this is standalone Portable PDB metadata + + + + Sorts a table by key column + + + + + Remembers rid and key + + + + + Constructor + + Row ID + Key + + + + Constructor + + The MD table + Index of key column + + + + Binary searches for a row with a certain key + + The key + The row or 0 if not found + + + + Find all rids that contain + + The key + A new instance + + + + Constructor + + The PE image + The .NET header + The MD header + + + + Initializes the metadata, tables, streams + + + + + Creates empty heap objects if they're not present in the metadata + + + + + Called by + + + + + Binary searches the table for a rid whose key column at index + is equal to . + + Table to search + Key column index + Key + The rid of the found row, or 0 if none found + + + + Finds all rows owned by in table + whose index is + + Table to search + Key column index + Key + A instance + + + + Finds all rows owned by in table + whose index is . Should be called if + could be unsorted. + + Table to search + Key column index + Key + A instance + + + + Dispose method + + true if called by + + + + Low level access to a .NET file's metadata + + + + + Create a instance + + The PE image + A new instance + + + + Create a instance + + The PE image + Runtime reader kind + A new instance + + + + Create a instance + + The PE image + true if we should verify that it's a .NET PE file + A new instance + + + + Create a instance + + The PE image + Runtime reader kind + true if we should verify that it's a .NET PE file + A new instance + + + + Create a instance + + The PE image + Runtime reader kind + true if we should verify that it's a .NET PE file + A new instance + + + + Create a standalone portable PDB instance + + Metadata stream + true if we should verify that it's a .NET PE file + A new instance + + + + Represents the .NET metadata header + + IMAGE_COR20_HEADER.Metadata points to this header + + + + Returns the signature (should be 0x424A5342) + + + + + Returns the major version + + + + + Returns the minor version + + + + + Returns the reserved dword (pointer to extra header data) + + + + + Returns the version string length value + + + + + Returns the version string + + + + + Returns the offset of STORAGEHEADER + + + + + Returns the flags (reserved) + + + + + Returns the reserved byte (padding) + + + + + Returns the number of streams + + + + + Returns all stream headers + + + + + Constructor + + PE file reader pointing to the start of this section + Verify section + Thrown if verification fails + + + + Constructor + + PE file reader pointing to the start of this section + Runtime reader kind + Verify section + Thrown if verification fails + + + + #Pdb stream + + + + + Gets the PDB id + + + + + Gets the entry point token or 0 + + + + + Gets the referenced type system tables in the PE metadata file + + + + + Gets all type system table rows. This array has exactly 64 elements. + + + + + + + + Equality comparer for all raw rows + + + + + Default instance + + + + + Raw contents of an uncompressed Module table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed TypeRef table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed TypeDef table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed FieldPtr table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed Field table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed MethodPtr table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed Method table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed ParamPtr table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed Param table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed InterfaceImpl table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed MemberRef table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed Constant table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed CustomAttribute table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed FieldMarshal table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed DeclSecurity table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed ClassLayout table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed FieldLayout table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed StandAloneSig table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed EventMap table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed EventPtr table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed Event table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed PropertyMap table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed PropertyPtr table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed Property table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed MethodSemantics table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed MethodImpl table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed ModuleRef table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed TypeSpec table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed ImplMap table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed FieldRVA table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed ENCLog table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed ENCMap table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed Assembly table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed AssemblyProcessor table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed AssemblyOS table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed AssemblyRef table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed AssemblyRefProcessor table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed AssemblyRefOS table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed File table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed ExportedType table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed ManifestResource table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed NestedClass table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed GenericParam table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed MethodSpec table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed GenericParamConstraint table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed Document table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed MethodDebugInformation table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed LocalScope table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed LocalVariable table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed LocalConstant table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed ImportScope table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed StateMachineMethod table row + + + + + Gets a column + + Index of column + + + + + Raw contents of an uncompressed CustomDebugInformation table row + + + + + Gets a column + + Index of column + + + + + Stores a list of rids + + + + + Gets the empty instance + + + + + Creates a new instance + + + + + + + + Creates a new instance + + List of valid rids + + + + + Gets the 'th rid + + Index. Must be < + A rid or 0 if is invalid + + + + Gets the number of rids it will iterate over + + + + + Enumerator + + + + + Gets the current rid + + + + + Disposes this instance + + + + + Moves to the next rid + + + + + + Gets the enumerator + + + + + + Storage flags found in the MD header + + + + + Normal flags + + + + + More data after the header but before the streams. + + The CLR will fail to load the file if this flag (or any other bits) is set. + + + + A metadata stream header + + + + + The offset of the stream relative to the start of the metadata header + + + + + The size of the stream + + + + + The name of the stream + + + + + Constructor + + PE file reader pointing to the start of this section + Verify section + Thrown if verification fails + + + + Represents the #Strings stream + + + + + + + + + + + Reads a + + Offset of string + A instance or null if invalid offset + + + + Reads a . The empty string is returned if + is invalid. + + Offset of string + A instance + + + + The metadata tables + + + + Module table (00h) + + + TypeRef table (01h) + + + TypeDef table (02h) + + + FieldPtr table (03h) + + + Field table (04h) + + + MethodPtr table (05h) + + + Method table (06h) + + + ParamPtr table (07h) + + + Param table (08h) + + + InterfaceImpl table (09h) + + + MemberRef table (0Ah) + + + Constant table (0Bh) + + + CustomAttribute table (0Ch) + + + FieldMarshal table (0Dh) + + + DeclSecurity table (0Eh) + + + ClassLayout table (0Fh) + + + FieldLayout table (10h) + + + StandAloneSig table (11h) + + + EventMap table (12h) + + + EventPtr table (13h) + + + Event table (14h) + + + PropertyMap table (15h) + + + PropertyPtr table (16h) + + + Property table (17h) + + + MethodSemantics table (18h) + + + MethodImpl table (19h) + + + ModuleRef table (1Ah) + + + TypeSpec table (1Bh) + + + ImplMap table (1Ch) + + + FieldRVA table (1Dh) + + + ENCLog table (1Eh) + + + ENCMap table (1Fh) + + + Assembly table (20h) + + + AssemblyProcessor table (21h) + + + AssemblyOS table (22h) + + + AssemblyRef table (23h) + + + AssemblyRefProcessor table (24h) + + + AssemblyRefOS table (25h) + + + File table (26h) + + + ExportedType table (27h) + + + ManifestResource table (28h) + + + NestedClass table (29h) + + + GenericParam table (2Ah) + + + MethodSpec table (2Bh) + + + GenericParamConstraint table (2Ch) + + + (Portable PDB) Document table (30h) + + + (Portable PDB) MethodDebugInformation table (31h) + + + (Portable PDB) LocalScope table (32h) + + + (Portable PDB) LocalVariable table (33h) + + + (Portable PDB) LocalConstant table (34h) + + + (Portable PDB) ImportScope table (35h) + + + (Portable PDB) StateMachineMethod table (36h) + + + (Portable PDB) CustomDebugInformation table (37h) + + + + Info about one MD table + + + + + Returns the table type + + + + + Returns the total size of a row in bytes + + + + + Returns all the columns + + + + + Returns the name of the table + + + + + Constructor + + Table type + Table name + All columns + + + + Constructor + + Table type + Table name + All columns + Row size + + + + .NET metadata tables stream + + + + + Gets/sets the column reader + + + + + Gets/sets the Method table reader + + + + + Gets the reserved field + + + + + Gets the version. The major version is in the upper 8 bits, and the minor version + is in the lower 8 bits. + + + + + Gets + + + + + Gets the reserved log2 rid field + + + + + Gets the valid mask + + + + + Gets the sorted mask + + + + + Gets the extra data + + + + + Gets the MD tables + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Constructor + + factory + Offset of metadata + Stream header + + + + Constructor + + factory + Offset of metadata + Stream header + Runtime kind + + + + Initializes MD tables + + Type system table rows (from #Pdb stream) + + + + + + + + + + Returns a MD table + + The table type + A or null if table doesn't exist + + + + Checks whether a table exists + + The table type + true if the table exists + + + + Checks whether table is sorted + + The table + + + + Reads a raw Module row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw TypeRef row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw TypeDef row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw FieldPtr row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw Field row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw MethodPtr row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw Method row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw ParamPtr row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw Param row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw InterfaceImpl row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw MemberRef row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw Constant row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw CustomAttribute row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw FieldMarshal row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw DeclSecurity row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw ClassLayout row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw FieldLayout row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw StandAloneSig row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw EventMap row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw EventPtr row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw Event row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw PropertyMap row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw PropertyPtr row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw Property row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw MethodSemantics row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw MethodImpl row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw ModuleRef row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw TypeSpec row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw ImplMap row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw FieldRVA row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw ENCLog row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw ENCMap row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw Assembly row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw AssemblyProcessor row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw AssemblyOS row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw AssemblyRef row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw AssemblyRefProcessor row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw AssemblyRefOS row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw File row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw ExportedType row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw ManifestResource row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw NestedClass row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw GenericParam row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw MethodSpec row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw GenericParamConstraint row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw Document row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw MethodDebugInformation row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw LocalScope row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw LocalVariable row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw LocalConstant row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw ImportScope row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw StateMachineMethod row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a raw CustomDebugInformation row or returns false if the row doesn't exist + + Row ID + Row data + + + + + Reads a column + + The table + Row ID + Column index in + Result is put here or 0 if we return false + true if we could read the column, false otherwise + + + + Reads a column + + The table + Row ID + Column + Result is put here or 0 if we return false + true if we could read the column, false otherwise + + + + Represents the #US stream + + + + + + + + + + + Reads a unicode string + + Offset of unicode string + A string or null if is invalid + + + + Reads data just like , but returns an empty string if + offset is invalid + + Offset of unicode string + The string + + + + Finds types, fields, methods, etc in a module. If nothing has been added to the module, it's + faster to call ResolveMethodDef(), ResolveTypeRef() etc. + + + + + All found s + + + + + All found s + + + + + All found s + + + + + All found s + + + + + All found s + + + + + All found s + + + + + All found s + + + + + All found s + + + + + All found s + + + + + All found s + + + + + All found s + + + + + All found s + + + + + All found s + + + + + Finds all types, fields, etc + + The module to scan + Itself + + + + Methods to load properties to make sure they're initialized + + + + + Read every collection element + + Collection element type + Collection + + + + Load the object instance + + The value (ignored) + + + + A high-level representation of a row in the MemberRef table + + + + + The row id in its table + + + + + The owner module + + + + + + + + + + + + + + + + + + + + From column MemberRef.Class + + + + + + + + From column MemberRef.Name + + + + Name + + + + From column MemberRef.Signature + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + + + + true if this is a method reference ( != null) + + + + + true if this is a field reference ( != null) + + + + + Gets/sets the method sig + + + + + Gets/sets the field sig + + + + + + + + true if the method has a hidden 'this' parameter + + + + + true if the method has an explicit 'this' parameter + + + + + Gets the calling convention + + + + + Gets/sets the method return type + + + + + + + + Gets the full name + + + + + Get the declaring type's full name + + Full name or null if there's no declaring type + + + + Resolves the method/field + + A or a instance or null + if it couldn't be resolved. + + + + Resolves the method/field + + A or a instance + If the method/field couldn't be resolved + + + + Resolves the field + + A instance or null if it couldn't be resolved. + + + + Resolves the field + + A instance + If the field couldn't be resolved + + + + Resolves the method + + A instance or null if it couldn't be resolved. + + + + Resolves the method + + A instance + If the method couldn't be resolved + + + + Gets a that can be used as signature context + + Context passed to the constructor + Field/method class owner + + + + + + + + A MemberRef row created by the user and not present in the original .NET file + + + + + Constructor + + Owner module + + + + Constructor + + Owner module + Name of ref + + + + Constructor + + Owner module + Name of field ref + Field sig + + + + Constructor + + Owner module + Name of field ref + Field sig + Owner of field + + + + Constructor + + Owner module + Name of method ref + Method sig + + + + Constructor + + Owner module + Name of method ref + Method sig + Owner of method + + + + Created from a row in the MemberRef table + + + + The module where this instance is located + + + + + + + + + + + + + Constructor + + The module which contains this MemberRef row + Row ID + Generic parameter context + If is null + If is invalid + + + + Method attributes, see CorHdr.h/CorMethodAttr + + + + member access mask - Use this mask to retrieve accessibility information. + + + Member not referenceable. + + + Member not referenceable. + + + Accessible only by the parent type. + + + Accessible by sub-types only in this Assembly. + + + Accessibly by anyone in the Assembly. + + + Accessible only by type and sub-types. + + + Accessibly by sub-types anywhere, plus anyone in assembly. + + + Accessibly by anyone who has visibility to this scope. + + + Defined on type, else per instance. + + + Method may not be overridden. + + + Method virtual. + + + Method hides by name+sig, else just by name. + + + vtable layout mask - Use this mask to retrieve vtable attributes. + + + The default. + + + Method always gets a new slot in the vtable. + + + Overridability is the same as the visibility. + + + Method does not provide an implementation. + + + Method is special. Name describes how. + + + Implementation is forwarded through pinvoke. + + + Managed method exported via thunk to unmanaged code. + + + Runtime should check name encoding. + + + Method has security associate with it. + + + Method calls another method containing security code. + + + + A high-level representation of a row in the Method table + + + + + The row id in its table + + + + + All parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From column Method.RVA + + + + + + + + From column Method.ImplFlags + + + + Implementation attributes + + + + From column Method.Flags + + + + Attributes + + + + From column Method.Name + + + + Name + + + + From column Method.Signature + + + + + + + + From column Method.ParamList + + + + + + + Initializes + + + + + + + + + Initializes + + + + + + + + + Initializes + + + + + + + + + + + + Called to initialize + + + Reset + + + + Gets/sets the method body. See also + + + + + + + + + + + Frees the method body if it has been loaded. This does nothing if + returns false. + + + + Called to initialize + + + + true if can free the method body + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + Gets the methods this method implements + + + + + + + Initializes + + + + Gets the export info or null if the method isn't exported to unmanaged code. + + + + + + + + + + + + + + true if is not empty + + + + + Gets/sets the declaring type (owner type) + + + + + + + + Called by and should normally not be called by any user + code. Use instead. Only call this if you must set the + declaring type without inserting it in the declaring type's method list. + + + + + + + + + + + Gets/sets the CIL method body. See also + + + + + Gets/sets the native method body + + + + + true if there's at least one in + + + + + true if it has a + + + + + true if there's at least one in + + + + + true if is not null + + + + + Gets the full name + + + + + Gets/sets the + + + + + Gets the parameters + + + + + + + + true if the method has a hidden 'this' parameter + + + + + true if the method has an explicit 'this' parameter + + + + + Gets the calling convention + + + + + Gets/sets the method return type + + + + + true if the method returns a value (i.e., return type is not ) + + + + + Gets/sets the method semantics attributes. If you remove/add a method to a property or + an event, you must manually update this property or eg. won't + work as expected. + + + + Set when has been initialized + + + + + + Initializes + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Modify property: = + ( & ) | . + + Value to AND + Value to OR + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Modify property: = + ( & ) | . + + Value to AND + Value to OR + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the method access + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the code type + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + true if this is the static type constructor + + + + + true if this is an instance constructor + + + + + true if this is a static or an instance constructor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A Method row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + Method name + + + + Constructor + + Method name + Method sig + + + + Constructor + + Method name + Method sig + Flags + + + + Constructor + + Method name + Method sig + Impl flags + + + + Constructor + + Method name + Method sig + Impl flags + Flags + + + + Created from a row in the Method table + + + + The module where this instance is located + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Constructor + + The module which contains this Method row + Row ID + If is null + If is invalid + + + + + + + + + + Contains the name and ordinal of a method that gets exported to unmanaged code. + + + + + Gets the ordinal or null + + + + + Gets the name. If it's null, and is also null, the name of the method + () is used as the exported name. + + + + + Gets the options + + + + + Constructor + + + + + Constructor + + Name or null to export by ordinal + + + + Constructor + + Ordinal + + + + Constructor + + Name or null to export by ordinal + Ordinal or null to export by name + + + + Constructor + + Name or null to export by ordinal + Ordinal or null to export by name + Options + + + + Exported method options + + + + + No bit is set + + + + + Transition from unmanaged code + + + + + Also retain app domain + + + + + Call most derived method + + + + + Method impl attributes, see CorHdr.h/CorMethodImpl + + + + Flags about code type. + + + Method impl is IL. + + + Method impl is native. + + + Method impl is OPTIL + + + Method impl is provided by the runtime. + + + Flags specifying whether the code is managed or unmanaged. + + + Method impl is unmanaged, otherwise managed. + + + Method impl is managed. + + + Indicates method is defined; used primarily in merge scenarios. + + + Indicates method sig is not to be mangled to do HRESULT conversion. + + + Reserved for internal use. + + + Method is single threaded through the body. + + + Method may not be inlined. + + + Method should be inlined if possible. + + + Method may not be optimized. + + + Method may contain hot code and should be aggressively optimized. + + + The JIT compiler should look for security mitigation attributes, such as the user-defined System.Runtime.CompilerServices.SecurityMitigationsAttribute. If found, the JIT compiler applies any related security mitigations. Available starting with .NET Framework 4.8. + + + + Describes which method some method implements + + + + + The method body. Usually a but could be a + + + + + The method implements + + + + + Constructor + + Method body + The method implements + + + + Method semantics flags, see CorHdr.h/CorMethodSemanticsAttr + + + + No bit is set + + + Setter for property + + + Getter for property + + + other method for property or event + + + AddOn method for event + + + RemoveOn method for event + + + Fire method for event + + + + A high-level representation of a row in the MethodSpec table + + + + + The row id in its table + + + + + + + + + + + + + + From column MethodSpec.Method + + + + + + + + From column MethodSpec.Instantiation + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + + + + + + + + + + Gets/sets the generic instance method sig + + + + + + + + + + + Gets the full name + + + + + + + + A MethodSpec row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + The generic method + + + + Constructor + + The generic method + The instantiated method sig + + + + Created from a row in the MethodSpec table + + + + The module where this instance is located + + + + + + + + + + + + + Constructor + + The module which contains this MethodSpec row + Row ID + Generic parameter context + If is null + If is invalid + + + + context + + + + + Gets/sets the assembly resolver. This is never null. + + + + + Gets/sets the resolver. This is never null. + + + + + Default constructor + + + + + Constructor + + Assembly resolver or null + + + + Constructor + + Type/method/field resolver or null + + + + Constructor + + Assembly resolver or null + Type/method/field resolver or null + + + + creation options + + + + + Module context + + + + + PDB reader options + + + + + Set it to A) the path (string) of the PDB file, B) the data (byte[]) of the PDB file or + C) to an of the PDB data. The will + be owned by the module. You don't need to initialize + + + + + If true, will load the PDB file from disk if present, or an embedded portable PDB file + stored in the PE file. The default value is true. + You don't need to initialize . + + + + + corlib assembly reference to use or null if the default one from the opened + module should be used. + + + + + Runtime reader kind, default is . It should be + set to if it's an obfuscated Mono/Unity assembly. + + + + + Default constructor + + + + + Constructor + + Module context + + + + Constructor + + Runtime reader kind, default is . It should be + set to if it's an obfuscated Mono/Unity assembly. + + + + Constructor + + Module context + Runtime reader kind, default is . It should be + set to if it's an obfuscated Mono/Unity assembly. + + + + Runtime reader kind + + + + + Microsoft's CLRs (.NET Framework, .NET Core) + + + + + Mono's CLR (Mono, Unity) + + + + + A high-level representation of a row in the Module table + + + + Default characteristics + + + Default DLL characteristics + + + + The row id in its table + + + + + Initialize this in the ctor + + + + + PDB state + + + + + Array of last used rid in each table. I.e., next free rid is value + 1 + + + + Module context + + + + + + + + + + + + + + + + Gets/sets a user value. This is never used by dnlib. This property isn't thread safe. + + + + + + + + + + + Gets/sets Module.Generation column + + + + + + + + Gets/sets Module.Name column + + + + Name + + + + Gets/sets Module.Mvid column + + + + + + + + Gets/sets Module.EncId column + + + + + + + + Gets/sets Module.EncBaseId column + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + Gets the module's assembly. To set this value, add this + to . + + + + + + + + Gets a list of all non-nested s. See also + + + + + + + Initializes + + + + Gets a list of all s + + + + + + + Initializes + + + + Gets/sets the native entry point. Only one of and + can be set. You write to one and the other one gets cleared. + + + + + Gets/sets the managed entry point. Only one of and + can be set. You write to one and the other one gets cleared. + + + + + + + + + + + + + Called to initialize + + + Called to initialize + + + + + + + Gets/sets the entry point method + + + + + true if is non-zero + + + + + true if is non-null + + + + + true if is non-null + + + + + Gets a list of all s + + + + + + + Initializes + + + + Gets/sets the . This is null if there are no + vtable fixups. + + + + + + + + + + Called to initialize + + + + true if there's at least one in + + + + + true if there's at least one in + + + + + true if there's at least one in + + + + + + + + Gets/sets the path of the module or an empty string if it wasn't loaded from disk + + + + + + + + Gets the + + + + + Gets the instance + + + + + Gets/sets the module context. This is never null. + + + + + If true, the cache is enabled. The cache is used by + and to find types. +

+ IMPORTANT: Only enable the cache if this module's types keep their exact + name, namespace, and declaring type and if no type is either added or + removed from or from any type that is reachable from the + top-level types in (i.e., any type owned by this module). + This is disabled by default. When disabled, all calls to + and will result in a slow O(n) (linear) search. +
+ +
+ + + true if this is the manifest (main) module + + + + + Gets the global (aka. <Module>) type or null if there are no types + + + + + true if it's the core library module, false if it's not the core library module, + and null if it's not known. + + + + + Gets/sets the Win32 resources + + + + + + + + + + Called to initialize + + + + Gets the . This is null if no PDB file + has been loaded or if no PDB file could be found. + + + + + Module kind + + + + + Gets/sets the characteristics (from PE file header) + + + + + Gets/sets the DLL characteristics (from PE optional header) + + + + + Gets/sets the runtime version which is stored in the metadata header. + See . + + Not thread safe + + + + Gets the WinMD status + + Not thread safe + + + + true if this is a WinMD file + + + + + true if this is a managed WinMD file + + + + + true if this is a pure (non-managed) WinMD file + + + + + Gets the CLR runtime version of the managed WinMD file or null if none. This is + similar to for normal non-WinMD files. + + Not thread safe + + + + Gets the WinMD version or null if none + + Not thread safe + + + + true if is the CLR v1.0 string (only the major + and minor version numbers are checked) + + + + + true if is the CLR v1.0 string + + + + + true if is the CLR v1.1 string (only the major + and minor version numbers are checked) + + + + + true if is the CLR v1.1 string + + + + + true if is the CLR v1.0 or v1.1 string (only the + major and minor version numbers are checked) + + + + + true if is the CLR v1.0 or v1.1 string + + + + + true if is the CLR v2.0 string (only the major + and minor version numbers are checked) + + + + + true if is the CLR v2.0 string + + + + + true if is the CLR v4.0 string (only the major + and minor version numbers are checked) + + + + + true if is the CLR v4.0 string + + + + + true if is the ECMA 2002 string + + + + + true if is the ECMA 2005 string + + + + + Gets/sets the (from PE header) + + + + + true if is , , ... + + + + + true if is + + + + + true if is , , ... + + + + + true if is , , ... + + + + + true if is , , ... + + + + + Gets/sets the (from .NET header) + + + + + + + + Gets/sets the runtime version number in the COR20 header. The major version is + in the high 16 bits. The minor version is in the low 16 bits. This is normally 2.5 + (0x00020005), but if it's .NET 1.x, it should be 2.0 (0x00020000). If this is + null, the default value will be used when saving the module (2.0 if CLR 1.x, + and 2.5 if not CLR 1.x). + + + + + Gets the tables header version. The major version is in the upper 8 bits and the + minor version is in the lower 8 bits. .NET 1.0/1.1 use version 1.0 (0x0100) and + .NET 2.x and later use version 2.0 (0x0200). 1.0 has no support for generics, + 1.1 has support for generics (GenericParam rows have an extra Kind column), + and 2.0 has support for generics (GenericParam rows have the standard 4 columns). + No other version is supported. If this is null, the default version is + used (1.0 if .NET 1.x, else 2.0). + + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + + + + Dispose method + + true if called by + + + + Gets all the types (including nested types) present in this module + + + + + Adds as a non-nested type. If it's already nested, its + will be set to null. + + The to insert + + + + Updates the rid to the next free rid available. It's only updated if + the original rid is 0. + + IMDTokenProvider + The row that should be updated + Returns the input + + + + Updates the rid to the next free rid available. + + IMDTokenProvider + The row that should be updated + Returns the input + + + + Imports a as a + + The type + The imported type or null if is invalid + + + + Imports a as a + + The type + The imported type or null if is invalid + + + + Imports a as a + + The field + The imported field or null if is invalid + or if we failed to import the field + + + + Imports a as a . This will be either + a or a . + + The method + The imported method or null if is invalid + or if we failed to import the method + + + + Imports a + + The type + The imported type or null + + + + Imports a as a + + The type + The imported type or null + + + + Imports a + + The type + The imported type or null + + + + Imports a + + The type + The imported type or null + + + + Imports a + + The type + The imported type or null + + + + Imports a + + The field + The imported type or null if is invalid + + + + Imports a as a + + The field + The imported type or null if is invalid + + + + Imports a + + The method + The imported method or null if is invalid + + + + Imports a as a + + The method + The imported method or null if is invalid + + + + Imports a + + The method + The imported method or null if is invalid + + + + Imports a + + The member ref + The imported member ref or null if is invalid + + + + Writes the module to a file on disk. If the file exists, it will be overwritten. + + Filename + + + + Writes the module to a file on disk. If the file exists, it will be overwritten. + + Filename + Writer options + + + + Writes the module to a stream. + + Destination stream + + + + Writes the module to a stream. + + Destination stream + Writer options + + + + Resets the cache which can be enabled by setting + to true. Use this method if the cache is + enabled but some of the types have been modified (eg. removed, added, renamed). + + + + + Finds a + + Type + Name + Language ID + The or null if none found + + + + Creates a new + + PDB file kind + + + + Sets a + + New + + + + Returns the size of a pointer. Assumes it's 32-bit if pointer size is unknown or + if it can be 32-bit or 64-bit. + + Size of a pointer (4 or 8) + + + + Returns the size of a pointer + + Default pointer size if it's not known or if it + can be 32-bit or 64-bit + Size of a pointer (4 or 8) + + + + Returns the size of a pointer + + Default pointer size + Pointer size if it's prefer-32-bit (should usually be 4) + + + + + + + + + + + + + + + + + + + + Finds a . For speed, enable + if possible (read the documentation first). + + Full name of the type (no assembly information) + true if it's a reflection name, and nested + type names are separated by a + character. If false, nested type names + are separated by a / character. + An existing or null if it wasn't found. + + + + Finds a . Its scope (i.e., module or assembly) is ignored when + looking up the type. For speed, enable if possible + (read the documentation first). + + The type ref + An existing or null if it wasn't found. + + + + Finds a + + The type + A or null if it wasn't found + + + + Creates a new instance. There should normally only be one + instance shared by all s. + + A new instance + + + + Load everything in this module. All types, fields, asm refs, etc are loaded, all their + properties are read to make sure everything is cached. + + Cancellation token or null + + + + + + + Resolves a token + + The metadata token + A or null if is invalid + + + + Resolves a token + + The metadata token + Generic parameter context + A or null if is invalid + + + + Resolves a token + + The metadata token + A or null if is invalid + + + + Resolves a token + + The metadata token + Generic parameter context + A or null if is invalid + + + + Resolves a token + + The metadata token + A or null if is invalid + + + + Resolves a token + + The metadata token + Generic parameter context + A or null if is invalid + + + + Gets all s + + + + + Gets all s + + + + + Gets all s. s with generic parameters + aren't cached and a new copy is always returned. + + + + + Gets all s. s with generic parameters + aren't cached and a new copy is always returned. + + Generic parameter context + + + + Gets all s + + + + + Finds an assembly reference by name. If there's more than one, pick the one with + the greatest version number. + + Simple name of assembly (eg. "mscorlib") + The found or null if there's no such + assembly reference. + + + + Compare asm refs' version + + First asm ref + New asm ref + + + + + A Module row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + is initialized to a random + Module nam + + + + Constructor + + Module name + Module version ID + + + + Constructor + + Module name + Module version ID + Corlib assembly ref or null + + + + Created from a row in the Module table + + + + The module where this instance is located + + + + + + + + + + + + + + + + + + + Constructor + + The module which contains this Module row + Row ID + If is null + If is invalid + + + + Initialize fields from the raw Module row + + + + + Created from a row in the Module table + + + + The file that contains all .NET metadata + + + + Gets/sets the method decrypter + + + + + Gets/sets the string decrypter + + + + + Returns the .NET metadata interface + + + + + Returns the #~ or #- tables stream + + + + + Returns the #Strings stream + + + + + Returns the #Blob stream + + + + + Returns the #GUID stream + + + + + Returns the #US stream + + + + + + + + + + + + + + + + + + + + Creates a instance from a file + + File name of an existing .NET module/assembly + Module context or null + A new instance + + + + Creates a instance from a file + + File name of an existing .NET module/assembly + Module creation options or null + A new instance + + + + Creates a instance from a byte[] + + Contents of a .NET module/assembly + Module context or null + A new instance + + + + Creates a instance from a byte[] + + Contents of a .NET module/assembly + Module creation options or null + A new instance + + + + Creates a instance from a reflection module + + An existing reflection module + A new instance + + + + Creates a instance from a reflection module + + An existing reflection module + Module context or null + A new instance + + + + Creates a instance from a reflection module + + An existing reflection module + Module creation options or null + A new instance + + + + Creates a instance from a reflection module + + An existing reflection module + Module context or null + Image layout of the module in memory + A new instance + + + + Creates a instance from a reflection module + + An existing reflection module + Module creation options or null + Image layout of the module in memory + A new instance + + + + Creates a instance from a memory location + + Address of a .NET module/assembly + A new instance + + + + Creates a instance from a memory location + + Address of a .NET module/assembly + Module context or null + A new instance + + + + Creates a instance from a memory location + + Address of a .NET module/assembly + Module creation options or null + A new instance + + + + Creates a instance + + PE image + A new instance + + + + Creates a instance + + PE image + Module context or null + A new instance + + + + Creates a instance + + PE image + Module creation options or null + A new instance + + + + Creates a instance from a memory location + + Address of a .NET module/assembly + Module context or null + Image layout of the file in memory + A new instance + + + + Creates a instance from a memory location + + Address of a .NET module/assembly + Module creation options or null + Image layout of the file in memory + A new instance + + + + Creates a instance from a stream + + This will read all bytes from the stream and call . + It's better to use one of the other Load() methods. + The stream (owned by caller) + A new instance + If is null + + + + Creates a instance from a stream + + This will read all bytes from the stream and call . + It's better to use one of the other Load() methods. + The stream (owned by caller) + Module context or null + A new instance + If is null + + + + Creates a instance from a stream + + This will read all bytes from the stream and call . + It's better to use one of the other Load() methods. + The stream (owned by caller) + Module creation options or null + A new instance + If is null + + + + Creates a instance from a + + The metadata + Module creation options or null + A new instance that now owns + + + + Constructor + + The metadata + Module creation options or null + If is null + + + + Loads symbols using + + PDB symbol reader + + + + Loads symbols from a PDB file + + PDB file name + + + + Loads symbols from a PDB file + + PDB reader options + PDB file name + + + + Loads symbols from a byte array + + PDB data + + + + Loads symbols from a byte array + + PDB reader options + PDB data + + + + Loads symbols from a stream + + PDB file stream which is now owned by us + + + + Loads symbols from a stream + + PDB reader options + PDB file stream which is now owned by us + + + + Loads symbols if a PDB file is available + + + + + Loads symbols if a PDB file is available + + PDB reader options + + + + Finds a mscorlib + + An existing instance or null if it wasn't found + + + + Called when no corlib assembly reference was found + + + + + + + + + Resolves a token + + The metadata token + Generic parameter context + A or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves an + + The row ID + A instance or null if is invalid + + + + Resolves an + + The row ID + Generic parameter context + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + Generic parameter context + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + Generic parameter context + A instance or null if is invalid + + + + Resolves an + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + Generic parameter context + A instance or null if is invalid + + + + Resolves an + + The row ID + A instance or null if is invalid + + + + Resolves an + + The row ID + A instance or null if is invalid + + + + Resolves an + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves an + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + Generic parameter context + A instance or null if is invalid + + + + Resolves a + + The row ID + A instance or null if is invalid + + + + Resolves a + + The row ID + Generic parameter context + A instance or null if is invalid + + + + Resolves a + + A TypeDefOrRef coded token + A or null if is invalid + + + + Resolves a + + A TypeDefOrRef coded token + Generic parameter context + A or null if is invalid + + + + Resolves a + + A HasConstant coded token + A or null if is invalid + + + + Resolves a + + A HasCustomAttribute coded token + A or null if is invalid + + + + Resolves a + + A HasCustomAttribute coded token + Generic parameter context + A or null if is invalid + + + + Resolves a + + A HasFieldMarshal coded token + A or null if is invalid + + + + Resolves a + + A HasDeclSecurity coded token + A or null if is invalid + + + + Resolves a + + A MemberRefParent coded token + A or null if is invalid + + + + Resolves a + + A MemberRefParent coded token + Generic parameter context + A or null if is invalid + + + + Resolves a + + A HasSemantic coded token + A or null if is invalid + + + + Resolves a + + A MethodDefOrRef coded token + A or null if is invalid + + + + Resolves a + + A MethodDefOrRef coded token + Generic parameter context + A or null if is invalid + + + + Resolves a + + A MemberForwarded coded token + A or null if is invalid + + + + Resolves an + + An Implementation coded token + A or null if is invalid + + + + Resolves a + + A CustomAttributeType coded token + A or null if is invalid + + + + Resolves a + + A CustomAttributeType coded token + Generic parameter context + A or null if is invalid + + + + Resolves a + + A ResolutionScope coded token + A or null if is invalid + + + + Resolves a + + A TypeOrMethodDef> coded token + A or null if is invalid + + + + Reads a signature from the #Blob stream + + #Blob stream offset of signature + A new instance or null if + is invalid. + + + + Reads a signature from the #Blob stream + + #Blob stream offset of signature + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a type signature from the #Blob stream + + #Blob stream offset of signature + A new instance or null if + is invalid. + + + + Reads a type signature from the #Blob stream + + #Blob stream offset of signature + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a type signature from the #Blob stream + + #Blob stream offset of signature + If there's any extra data after the signature, it's saved + here, else this will be null + A new instance or null if + is invalid. + + + + Reads a type signature from the #Blob stream + + #Blob stream offset of signature + If there's any extra data after the signature, it's saved + here, else this will be null + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a from the blob + + Table of owner + Row ID of owner + Generic parameter context + A new instance or null if there's no field + marshal for this owner. + + + + Reads a CIL method body + + Method parameters + RVA + A new instance. It's empty if RVA is invalid (eg. 0 or + it doesn't point to a CIL method body) + + + + Reads a CIL method body + + Method parameters + RVA + Generic parameter context + A new instance. It's empty if RVA is invalid (eg. 0 or + it doesn't point to a CIL method body) + + + + Returns the owner type of a field + + The field + The owner type or null if none + + + + Returns the owner type of a method + + The method + The owner type or null if none + + + + Returns the owner type of an event + + The event + The owner type or null if none + + + + Returns the owner type of a property + + The property + The owner type or null if none + + + + Returns the owner type/method of a generic param + + The generic param + The owner type/method or null if none + + + + Returns the owner generic param of a generic param constraint + + The generic param constraint + The owner generic param or null if none + + + + Returns the owner method of a param + + The param + The owner method or null if none + + + + Reads a module + + File rid + The assembly owning the module we should read + A new instance or null if + is invalid or if it's not a .NET module. + + + + Gets a list of all File rids that are .NET modules. Call + to read one of these modules. + + A new instance + + + + Concatenates the inputs and returns the result if it's a valid path + + Base dir + File name + Full path to the file or null if one of the inputs is invalid + + + + Gets the base directory where this .NET module is located on disk + + Base directory or null if unknown or if an error occurred + + + + Creates a instance + + ManifestResource rid + A new instance + + + + Reads a + + Custom attribute rid + A new instance or null if + is invalid + + + + Reads a + + Custom attribute rid + Generic parameter context + A new instance or null if + is invalid + + + + Reads data somewhere in the address space of the image + + RVA of data + Size of data + All the data or null if or + is invalid + + + + Gets the native entry point or 0 if none + + + + + Gets the managed entry point (a Method or a File) or null if none + + + + + Reads a new instance. This one is not cached. + + Row ID + A new instance + + + + Reads a new instance. This one is not cached. + + Row ID + A new instance + + + + Reads a new instance. This one is not cached. + + Row ID + A new instance + + + + Reads a new instance. This one is not cached. + + Row ID + A new instance + + + + Reads a new instance. This one is not cached. + + Row ID + A new instance + + + + Reads a new instance. This one is not cached. + + Row ID + A new instance + + + + Reads a new instance. This one is not cached. + + Row ID + A new instance + + + + Reads a new instance. This one is not cached. + + Row ID + Generic parameter context + A new instance + + + + Reads a method body + + Method + Method RVA + Method impl attrs + Generic parameter context + A or null if none + + + + Updates with the PDB info (if any) + + Owner method + Method body + Returns originak value + + + + Reads a string from the #US heap + + String token + A non-null string + + + + Writes the mixed-mode module to a file on disk. If the file exists, it will be overwritten. + + Filename + + + + Writes the mixed-mode module to a file on disk. If the file exists, it will be overwritten. + + Filename + Writer options + + + + Writes the mixed-mode module to a stream. + + Destination stream + + + + Writes the mixed-mode module to a stream. + + Destination stream + Writer options + + + + Reads data from the #Blob. The following columns are returned: + Field.Signature + Method.Signature + MemberRef.Signature + Constant.Value + CustomAttribute.Value + FieldMarshal.NativeType + DeclSecurity.PermissionSet + StandAloneSig.Signature + Property.Type + TypeSpec.Signature + Assembly.PublicKey + AssemblyRef.PublicKeyOrToken + File.HashValue + MethodSpec.Instantiation + + A token + The value in the #Blob or null if is invalid + + + + Module kind + + + + + Console UI module + + + + + Windows GUI module + + + + + DLL module + + + + + Netmodule (it has no assembly manifest) + + + + + A high-level representation of a row in the ModuleRef table + + + + + The row id in its table + + + + + The owner module + + + + + + + + + + + + + + + + + + + + + + + + + + From column ModuleRef.Name + + + + Name + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + + + + Gets the definition module, i.e., the module which it references, or null + if the module can't be found. + + + + + Gets the definition assembly, i.e., the assembly of the module it references, or + null if the assembly can't be found. + + + + + + + + + + + A ModuleRef row created by the user and not present in the original .NET file + + + + + Constructor + + Owner module + + + + Constructor + + Owner module + Module name + + + + Created from a row in the ModuleRef table + + + + The module where this instance is located + + + + + + + + + + + + + Constructor + + The module which contains this ModuleRef row + Row ID + If is null + If is invalid + + + + Native types used by field marshals. See CorHdr.h/CorNativeType + + + + Deprecated + + + void + + + bool + + + int8 + + + unsigned int8 + + + int16 + + + unsigned int16 + + + int32 + + + unsigned int32 + + + int64 + + + unsigned int64 + + + float32 + + + float64 + + + syschar + + + variant + + + currency + + + ptr + + + decimal + + + date + + + bstr + + + lpstr + + + lpwstr + + + lptstr + + + fixed sysstring + + + objectref + + + iunknown + + + idispatch + + + struct + + + interface + + + safearray + + + fixed array + + + int + + + uint + + + nested struct + + + byvalstr + + + ansi bstr + + + tbstr + + + variant bool + + + func + + + as any + + + array + + + lpstruct + + + custom marshaler + + + error + + + iinspectable + + + hstring + + + UTF-8 encoded string + + + first invalid element type + + + Value wasn't present in the blob + + + Raw marshal blob type + + + + A resolver that always fails + + + + + The one and only instance of this type + + + + + + + + + + + + + + Parameter flags. See CorHdr.h/CorParamAttr + + + + Param is [In] + + + Param is [out] + + + Param is a locale identifier + + + Param is a return value + + + Param is optional + + + Param has default value. + + + Param has FieldMarshal. + + + + A high-level representation of a row in the Param table + + + + + The row id in its table + + + + + + + + + + + + + + + + + + + + Gets the declaring method + + + + + + + + From column Param.Flags + + + + Attributes + + + + From column Param.Sequence + + + + + + + + From column Param.Name + + + + Name + + + + + + + + + + + + Called to initialize + + + Reset + + + + + + + + + + + + Called to initialize + + + Reset + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + true if is not null + + + + + Gets the constant element type or if there's no constant + + + + + true if is not null + + + + + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + A Param row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + Name + + + + Constructor + + Name + Sequence + + + + Constructor + + Name + Sequence + Flags + + + + Created from a row in the Param table + + + + The module where this instance is located + + + + + + + + + + + + + + + + + + + Constructor + + The module which contains this Param row + Row ID + If is null + If is invalid + + + + A list of all method parameters + + + + + Gets the owner method + + + + + Gets the number of parameters, including a possible hidden 'this' parameter + + + + + Gets the index of the first parameter that is present in the method signature. + If this is a static method, the value is 0, else it's an instance method so the + index is 1 since the first parameter is the hidden 'this' parameter. + + + + + Gets the N'th parameter + + The parameter index + + + + Gets the method return parameter + + + + + Constructor + + The method with all parameters + 's declaring type + + + + Should be called when the method's declaring type has changed + + Method declaring type + + + + Should be called when the method sig has changed + + + + + + + + Enumerator + + + + + Gets the current value + + + + + Moves to the next element in the collection + + + + + + Disposes the enumerator + + + + + Gets the list enumerator + + + + + + A method parameter + + + + + The hidden 'this' parameter's + + + + + The return type parameter's + + + + + Gets the parameter index. If the method has a hidden 'this' parameter, that parameter + has index 0 and the remaining parameters in the method signature start from index 1. + The method return parameter has index -1. + + + + + Gets the index of the parameter in the method signature. See also + and + + + + + true if it's a normal visible method parameter, i.e., it's not the hidden + 'this' parameter and it's not the method return type parameter. + + + + + true if it's the hidden 'this' parameter + + + + + true if it's the method return type parameter + + + + + Gets the parameter type + + + + + Gets the owner method + + + + + Gets the or null if not present + + + + + true if it has a + + + + + Gets the name from . If is null, + an empty string is returned. + + + + + Constructor + + Parameter index + + + + Constructor + + Parameter index + Parameter type + + + + Constructor + + Parameter index (0 is hidden this param if it exists) + Index in method signature + + + + Constructor + + Parameter index (0 is hidden this param if it exists) + Index in method signature + Parameter type + + + + Creates a if it doesn't already exist + + + + + + + + Custom debug info guids + + + + + Implements and uses a as the underlying + stream. + + + + + Constructor + + Source stream + + + + Constructor + + Source stream + Name of original file or null if unknown. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IMAGE_DEBUG_DIRECTORY + + + + + An address in the image + + + + + Section + + + + + Offset in + + + + + Constructor + + Section + Offset in + + + + Constructor + + Section + Offset in + + + + Returns true if is less than or equal to + + First + Second + + + + + Returns true if is less than + + First + Second + + + + + Returns true if is greater than or equal to + + First + Second + + + + + Returns true if is greater than + + First + Second + + + + + Returns true if is equal to + + First + Second + + + + + Returns true if is not equal to + + First + Second + + + + + Compares this instance with and returns less than 0 if it's + less than , 0 if it's equal to and + greater than 0 if it's greater than + + Other instance + + + + + Compares this to another instance + + The other one + true if they're equal + + + + Compares this to another instance + + The other one + true if they're equal + + + + Gets the hash code + + Hash code + + + + ToString() override + + + + + + Reads a 32-bit offset followed by a 16-bit section and creates a new + + Reader + + + + + Exception that is thrown when encounters an error. + + + + + Constructor + + + + + Constructor + + Exception message + + + + Constructor + + Inner exception + + + + Constructor + + + + + + + A managed PDB reader implementation for .NET modules. + + + + + Read the PDB in the specified stream. + + PDB file data reader + + + + Creates a instance + + + + + Creates a new instance + + PDB context + PDB file stream which is now owned by this method + A new instance or null. + + + + A constant in a method scope, eg. "const int SomeConstant = 123;" + + + + + Gets/sets the name + + + + + Gets/sets the type of the constant + + + + + Gets/sets the value of the constant + + + + + Constructor + + + + + Constructor + + Name of constant + Type of constant + Constant value + + + + + + + + + + Gets all custom debug infos + + + + + ToString() + + + + + + Custom debug info kind + + See CustomDebugInfoKind in Roslyn source code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base class of custom debug info added to the PDB file by the compiler + + + + + Gets the custom debug info kind + + + + + Gets the custom debug info guid, see + + + + + Unknown custom debug info. If you see an instance of this class, you're using an old dnlib version or + dnlib hasn't been updated to support this new custom debug info kind. + + + + + Gets the custom debug info kind + + + + + Gets the custom debug info guid, see + + + + + Gets the data + + + + + Constructor + + Custom debug info kind + Raw custom debug info data + + + + Constructor + + Custom debug info guid + Raw custom debug info data + + + + Contains sizes of using groups + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the using counts + + + + + Constructor + + + + + Constructor + + Initial capacity of + + + + Contains a reference to another method that contains the import strings + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets/sets the referenced method + + + + + Constructor + + + + + Constructor + + The referenced method + + + + Contains a reference to another method that contains the per-module debug info (assembly reference aliases) + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets/sets the referenced method + + + + + Constructor + + + + + Constructor + + The referenced method + + + + State machine hosted local scope info + + + + + true if it's a syntesized local ( and are both null) + + + + + The instruction of the first operation in the scope. Can be null if it's a synthesized local + + + + + The instruction of the first operation outside of the scope or null if it ends at the last instruction in the body. + Can also be null if it's a synthesized local (in which case is also null, see ) + + + + + Constructor + + Start of the scope + First instruction after the end of the scope + + + + Contains local scopes for state machine hoisted local variables. + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the scopes + + + + + Constructor + + + + + Constructor + + Initial capacity of + + + + Contains the state machine type + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets/sets the state machine type + + + + + Constructor + + + + + Constructor + + State machine type + + + + Contains dynamic flags for local variables and constants + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the dynamic locals + + + + + Constructor + + + + + Constructor + + Initial capacity of + + + + Dynamic local info + + + + + Gets the dynamic flags + + + + + Gets/sets the name of the local. The name must have at most 64 characters and no char can be NUL (0x0000). + If null is written, is returned instead. + + + + + true if it's a constant and not a variable ( is null) + + + + + true if it's a variable ( is not null) + + + + + Gets/sets the local. Could be null if there's no local (it's a 'const' local). + + + + + Constructor + + + + + Constructor + + Initial capacity of + + + + Contains the EnC local variable slot map + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the data. Spec: https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md#EditAndContinueLocalSlotMap + + + + + Constructor + + Raw custom debug info data + + + + Contains the EnC lambda map + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the data. Spec: https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md#EditAndContinueLambdaAndClosureMap + + + + + Constructor + + Raw custom debug info data + + + + Contains tuple element names for local variables and constants + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the tuple element names + + + + + Constructor + + + + + Constructor + + Initial capacity of + + + + Tuple element name info + + + + + Gets/sets the name of the local. If null is written, is returned instead. + + + + + Gets/sets the local. It's null if it's a constant, and non-null if it's a variable + + + + + true if it's a constant. Constants have a scope ( and ) + + + + + true if it's a variable. Variables don't have a scope ( and ) + + + + + Gets/sets the start of the scope or null. Only constants have a scope. + + + + + Gets/sets the end of the scope or null if it has no scope or if the scope ends at the end of the body. Only constants have a scope. + + + + + Gets the tuple element names + + + + + Constructor + + + + + Constructor + + Initial capacity of + + + + Contains tuple element names for local variables and constants + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the tuple element names + + + + + Constructor + + + + + Constructor + + Initial capacity of + + + + Async method stepping info + + It's internal and translated to a + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the catch handler instruction or null + + + + + Gets all async step infos + + + + + Constructor + + + + + Default namespace + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the default namespace + + + + + Constructor + + + + + Constructor + + Default namespace + + + + Dynamic flags + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets/sets the dynamic flags + + + + + Constructor + + + + + Constructor + + Dynamic flags + + + + Contains the source code + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the source code blob. + + It's not decompressed and converted to a string because the encoding isn't specified. + + https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md#embedded-source-c-and-vb-compilers + + + + + Constructor + + + + + Constructor + + Source code blob + + + + Contains the source link file + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the source link file contents + + + + + Constructor + + + + + Constructor + + Source link file contents + + + + Contains the source server file + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the source server file contents + + + + + Constructor + + + + + Constructor + + Source server file contents + + + + Async method info + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets/sets the starting method that initiates the async operation + + + + + Gets/sets the instruction for the compiler generated catch handler that wraps an async method. + This can be null. + + + + + Gets all step infos used by the debugger + + + + + Constructor + + + + + Constructor + + Default capacity for + + + + Async step info used by debuggers + + + + + The yield instruction + + + + + Resume method + + + + + Resume instruction (where the debugger puts a breakpoint) + + + + + Constructor + + The yield instruction + Resume method + Resume instruction (where the debugger puts a breakpoint) + + + + Iterator method + + + + + Returns + + + + + Gets the custom debug info guid, see + + + + + Gets the kickoff method + + + + + Constructor + + + + + Constructor + + Kickoff method + + + + A PDB document + + + + + Gets/sets the document URL + + + + + Gets/sets the language GUID. See + + + + + Gets/sets the language vendor GUID. See + + + + + Gets/sets the document type GUID. See + + + + + Gets/sets the checksum algorithm ID. See + + + + + Gets/sets the checksum + + + + + + + + + + + Gets all custom debug infos + + + + + Default constructor + + + + + Constructor + + A instance + + + + Constructor + + Document URL + Language. See + Language vendor. See + Document type. See + Checksum algorithm ID. See + Checksum + + + + + + + + + + PDB document constants + + + + + PDB file kind + + + + + Windows PDB + + + + + Portable PDB + + + + + Embedded portable PDB + + + + + Import scope + + + + + Constructor + + + + + Gets/sets the parent import scope + + + + + Gets all imports + + + + + true if is not empty + + + + + + + + + + + Gets all custom debug infos + + + + + Import kind + + + + + PDB import base class + + + + + Gets the import kind + + + + + Import namespace + + + + + Returns + + + + + Gets the target namespace + + + + + Constructor + + + + + Constructor + + + + + + Import assembly, namespace + + + + + Returns + + + + + Gets the target assembly + + + + + Gets the target namespace + + + + + Constructor + + + + + Constructor + + + + + + + Import type + + + + + Returns + + + + + Gets the target type + + + + + Constructor + + + + + Constructor + + + + + + Import xml namespace + + + + + Returns + + + + + Gets the alias + + + + + Gets the target namespace + + + + + Constructor + + + + + Constructor + + + + + + + Import assembly reference alias + + + + + Returns + + + + + Gets the alias + + + + + Constructor + + + + + Constructor + + + + + + Alias assembly reference + + + + + Returns + + + + + Gets the alias + + + + + Gets the target assembly + + + + + Constructor + + + + + Constructor + + + + + + + Alias namespace + + + + + Returns + + + + + Gets the alias + + + + + Gets the target namespace + + + + + Constructor + + + + + Constructor + + + + + + + Alias assembly namespace + + + + + Returns + + + + + Gets the alias + + + + + Gets the target assembly + + + + + Gets the target namespace + + + + + Constructor + + + + + Constructor + + + + + + + + Alias type + + + + + Returns + + + + + Gets the alias + + + + + Gets the target type + + + + + Constructor + + + + + Constructor + + + + + + + A local variable + + + + + Constructor + + + + + Constructor + + + + + + + + Gets/sets the local + + + + + Gets/sets the name + + + + + Gets/sets the attributes + + + + + Gets the index of the local + + + + + true if it should be hidden in debugger variables windows. Not all compiler generated locals have this flag set. + + + + + + + + + + + Gets all custom debug infos + + + + + Local attributes + + + + + No bit is set + + + + + Local should be hidden in debugger variables windows. Not all compiler generated locals have this flag set. + + + + + A PDB method + + + + + Gets/sets the root scope. It contains all scopes of the method, using namespaces, variables and constants + + + + + Constructor + + + + + PDB reader options + + + + + No bit is set + + + + + Use the COM Windows PDB reader instead of the managed Windows PDB reader. + + This is NOT recommended since the COM reader can only be called on the same + thread it was created on. It also requires a Windows OS. + + If this is not set, the managed PDB reader will be used. + + This option is only used if it's a Windows PDB file, not if it's a Portable PDB file. + + + + + Don't use Microsoft.DiaSymReader.Native. This is a NuGet package with an updated Windows PDB reader/writer implementation, + and if it's available at runtime, dnlib will try to use it. If this option is set, dnlib won't use it. + You have to add a reference to the NuGet package if you want to use it, dnlib has no reference to the NuGet package. + + Only used if is set and if it's a Windows PDB file + + + + + Don't use diasymreader.dll's PDB reader that is shipped with .NET Framework. + + Only used if is set and if it's a Windows PDB file + + + + + A PDB scope + + + + + Constructor + + + + + Gets/sets the first instruction + + + + + Gets/sets the last instruction. It's null if it ends at the end of the method. + + + + + Gets all child scopes + + + + + true if is not empty + + + + + Gets all locals in this scope + + + + + true if is not empty + + + + + Gets all namespaces (Windows PDBs). Portable PDBs use + + + + + true if is not empty + + + + + Gets/sets the import scope (Portable PDBs). Windows PDBs use + + + + + Gets all constants + + + + + true if is not empty + + + + + + + + + + + Gets all custom debug infos + + + + + PDB state for a + + + + + Gets/sets the PDB file kind. You can change it from portable PDB to embedded portable PDB + and vice versa. Converting a Windows PDB to a portable PDB isn't supported. + + + + + Gets/sets the user entry point method. + + + + + Gets all PDB documents + + + + + true if is not empty + + + + + Constructor + + Module + PDB file kind + + + + Constructor + + A instance + Owner module + + + + Adds + + New document + if it wasn't inserted, or the already existing document + if it was already inserted. + + + + Removes + + Document + true if it was removed, false if it wasn't inserted. + + + + Returns an inserted instance or null if it's not been + inserted yet. + + A PDB document + The existing or null if it doesn't exist. + + + + Removes all documents + + + + + + Removes all documents and optionally returns them + + true if all the original s + should be returned. + All s if is true + or null if is false. + + + + Constructor + + Module that resolves assembly and type references + Portable PDB blob stream + + + + PDB sequence point + + + + + PDB document + + + + + Start line + + + + + Start column + + + + + End line + + + + + End column + + + + + Clones this instance + + A new cloned instance + + + + Async step info + + + + + Yield offset + + + + + Breakpoint offset + + + + + Breakpoint method token + + + + + Constructor + + Yield offset + Breakpoint offset + Breakpoint method token + + + + A document + + + + + Gets the URL + + + + + Gets the language + + + + + Gets the language vendor + + + + + Gets the document type + + + + + Gets the checksum algorithm id + + + + + Gets the checksum + + + + + Gets the custom debug infos + + + + + A method + + + + + Gets the method token + + + + + Gets the root scope + + + + + Gets all sequence points + + + + + Reads custom debug info + + Method + Method body + Updated with custom debug info + + + + A namespace + + + + + Gets the name + + + + + Reads symbols from a PDB file + + + + + Called by the owner module before any other methods and properties are called + + Owner module + + + + Gets the PDB file kind + + + + + Gets the user entry point token or 0 if none + + + + + Gets all documents + + + + + Gets a method or returns null if the method doesn't exist in the PDB file + + Method + Edit and continue version. The first version is 1 + + + + + Reads custom debug info + + Token of a instance + Generic parameter context + Updated with custom debug info + + + + Cleans up resources + + + + + A scope + + + + + Gets the method + + + + + Gets the parent scope + + + + + Gets the start offset of the scope in the method + + + + + Gets the end offset of the scope in the method + + + + + Gets all child scopes + + + + + Gets all locals defined in this scope + + + + + Gets all namespaces in this scope + + + + + Gets all custom debug infos + + + + + Gets the import scope or null if none + + + + + Gets all the constants + + Owner module if a signature must be read from the #Blob + Generic parameter context + + + + + Sequence point + + + + + IL offset + + + + + Document + + + + + Start line + + + + + Start column + + + + + End line + + + + + End column + + + + + A variable + + + + + Gets the name + + + + + Gets the attributes + + + + + Gets the index of the variable + + + + + Gets all custom debug infos + + + + + Reads custom debug infos produced by the C# and Visual Basic compilers. They're stored in PDB files + as PDB method custom attributes with the name "MD2". + + + + + Reads custom debug info + + Method + The method's body. Needs to be provided by the caller since we're called from + PDB-init code when the Body property hasn't been initialized yet + Place all custom debug info in this list + Custom debug info from the PDB file + + + + Writes custom debug infos produced by the C# and Visual Basic compilers. They're stored in PDB files + as PDB method custom attributes with the name "MD2". + + + + + Returns the raw custom debug info or null if there was an error + + Metadata + Writer context + Method + Custom debug infos to write + + + + + + + + P/Invoke attributes, see CorHdr.h/CorPinvokeMap + + + + Pinvoke is to use the member name as specified. + + + Use this mask to retrieve the CharSet information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Information about target function. Not relevant for fields. + + + + + + Pinvoke will use native callconv appropriate to target windows platform. + + + + + + + + + + + + In M9, pinvoke will raise exception. + + + + + + + Property attributes, see CorHdr.h/CorPropertyAttr + + + + property is special. Name describes how. + + + Runtime(metadata internal APIs) should check name encoding. + + + Property has default + + + + A high-level representation of a row in the Property table + + + + + The row id in its table + + + + + + + + + + + + + + + + + + + + From column Property.PropFlags + + + + Attributes + + + + From column Property.Name + + + + Name + + + + From column Property.Type + + + + + + + + + + + + + + + + Called to initialize + + + Reset + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + Gets/sets the first getter method. Writing null will clear all get methods. + + + + + Gets/sets the first setter method. Writing null will clear all set methods. + + + + + Gets all getter methods + + + + + Gets all setter methods + + + + + Gets the other methods + + + + + Initializes , , + and . + + + + + + + + + + + + + Reset , , + + + + true if there are no methods attached to this property + + + + + + + + true if is not empty + + + + + true if is not null + + + + + Gets the constant element type or if there's no constant + + + + + Gets/sets the property sig + + + + + Gets/sets the declaring type (owner type) + + + + + + + + Called by and should normally not be called by any user + code. Use instead. Only call this if you must set the + declaring type without inserting it in the declaring type's method list. + + + + + + + + + + + Gets the full name of the property + + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + + + + A Property row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + Name + + + + Constructor + + Name + Property signature + + + + Constructor + + Name + Property signature + Flags + + + + Created from a row in the Property table + + + + The module where this instance is located + + + + + + + + + + + + + + + + Constructor + + The module which contains this Property row + Row ID + If is null + If is invalid + + + + + + + Represents a public key + + + + + Gets the + + + + + + + + Constructor + + + + + Constructor + + Public key data + + + + Constructor + + Public key data as a hex string or the string "null" + to set public key data to null + + + + + + + + + + Public key / public key token base class + + + + + The key data + + + + + Returns true if is null or empty + + + + + Returns true if is null + + + + + Gets/sets key data + + + + + Gets the + + + + + Constructor + + Key data + + + + Constructor + + Key data as a hex string or the string "null" + to set key data to null + + + + Checks whether a public key or token is null or empty + + Public key or token instance + + + + Returns a + + A or a instance + + + + Compares two s as s + + First + Second + < 0 if a < b, 0 if a == b, > 0 if a > b + + + + Checks whether two public key tokens are equal + + First + Second + true if same, false otherwise + + + + Compares two s + + First + Second + < 0 if a < b, 0 if a == b, > 0 if a > b + + + + Checks whether two public key tokens are equal + + First + Second + true if same, false otherwise + + + + Gets the public key token hash code + + Public key or token + The hash code + + + + Gets the public key token hash code + + Public key token + The hash code + + + + Creates a + + Public key data or null + A new instance or null if + was null + + + + Creates a + + Public key token data or null + A new instance or null if + was null + + + + Gets the raw public key / public key token byte array + + The instance or null + Raw public key / public key token data or null + + + + + + + Represents a public key token + + + + + Gets the + + + + + Constructor + + + + + + + + + + + + + + + + + Recursion counter + + + + + Max recursion count. If this is reached, we won't continue, and will use a default value. + + + + + Gets the recursion counter + + + + + Increments if it's not too high. ALL instance methods + that can be called recursively must call this method and + (if this method returns true) + + true if it was incremented and caller can continue, false if + it was not incremented and the caller must return to its caller. + + + + Must be called before returning to caller if + returned true. + + + + + + + + Extension methods for reflection types, methods, fields + + + + + Checks whether it's a + + The type + + + + Gets a 's + + The type + The type's element type + + + + Returns true if is a generic method, but + not a generic method definition, i.e., a MethodSpec. + + The method + + + + Checks whether a parameter/prop/event type should be treated as if it is really a + generic instance type and not a generic type definition. In the .NET metadata (method + sig), the parameter is a generic instance type, but the CLR treats it as if it's just + a generic type def. This seems to happen only if the parameter type is exactly the same + type as the declaring type, eg. a method similar to: MyType<!0> MyType::SomeMethod(). + + Declaring type of method/event/property + Parameter/property/event type + + + + Checks whether is a type definition and not a type spec + (eg. pointer or generic type instantiation) + + this + + + + Resolve exception base class + + + + + Default constructor + + + + + Constructor + + Exception message + + + + Constructor + + Exception message + Inner exception or null if none + + + + Constructor + + + + + + + Thrown if an assembly couldn't be resolved + + + + + Default constructor + + + + + Constructor + + Exception message + + + + Constructor + + Exception message + Inner exception or null if none + + + + Constructor + + + + + + + Thrown if a type couldn't be resolved + + + + + Default constructor + + + + + Constructor + + Exception message + + + + Constructor + + Exception message + Inner exception or null if none + + + + Constructor + + + + + + + Thrown if a method/field couldn't be resolved + + + + + Default constructor + + + + + Constructor + + Exception message + + + + Constructor + + Exception message + Inner exception or null if none + + + + Constructor + + + + + + + Resolves types, methods, fields + + + + + true to project WinMD types to CLR types, eg. Windows.UI.Xaml.Interop.TypeName + gets converted to System.Type before trying to resolve the type. This is enabled + by default. + + + + + Constructor + + The assembly resolver + + + + + + + + + + Type of resource + + + + + It's a + + + + + It's a + + + + + It's a + + + + + Resource base class + + + + + + + + + + + Gets/sets the offset of the resource + + + + + Gets/sets the name + + + + + Gets/sets the flags + + + + + Gets the type of resource + + + + + Gets/sets the visibility + + + + + true if is set + + + + + true if is set + + + + + Constructor + + Name + flags + + + + A resource that is embedded in a .NET module. This is the most common type of resource. + + + + + Gets the length of the data + + + + + + + + Constructor + + Name of resource + Resource data + Resource flags + + + + Constructor + + Name of resource + Data reader factory + Offset of resource data + Length of resource data + Resource flags + + + + Gets a data reader that can access the resource + + + + + + + + + A reference to a resource in another assembly + + + + + + + + Gets/sets the assembly reference + + + + + Constructor + + Name of resource + Assembly reference + Resource flags + + + + + + + A resource that is stored in a file on disk + + + + + + + + Gets/sets the file + + + + + Gets/sets the hash + + + + + Gets/sets the file name + + + + + Constructor + + Name of resource + The file + Resource flags + + + + + + + A collection of s + + + + + Default constructor + + + + + Constructor + + List listener + + + + Constructor + + Initial length of the list + Context passed to + Delegate instance that returns original values + + + + Finds the index of a resource + + Name of resource + The index of the or -1 if none was found + + + + Finds the index of an embedded resource + + Name of resource + The index of the or -1 if none was found + + + + Finds the index of an assembly linked resource + + Name of resource + The index of the or -1 if none was found + + + + Finds the index of a linked resource + + Name of resource + The index of the or -1 if none was found + + + + Finds a resource + + Name of resource + The or null if none was found + + + + Finds an embedded resource + + Name of resource + The or null if none was found + + + + Finds an assembly linked resource + + Name of resource + The or null if none was found + + + + Finds a linked resource + + Name of resource + The or null if none was found + + + + Built-in resource data + + + + + Gets the data + + + + + + + + + + + + + + Constructor + + Type of data + Data + + + + + + + + + + Implemented by all resource data + + + + + Gets the type of data + + + + + Start offset of the section in the file + + + + + End offset of the section in the file. This is one byte after the last + valid offset in the section. + + + + + Writes the data + + Writer + Formatter if needed by implementer + + + + Creates resource data + + + + + Gets the owner module + + + + + Constructor + + Owner module + + + + Gets number of user data types + + + + + Create null data + + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates data + + Value + + + + + Creates array data + + Value + + + + + Creates data + + Value + + + + + Creates serialized data + + Serialized data + Type of serialized data + + + + + Creates serialized data + + Serialized data + + + + + Creates a user type. If the type already exists, the existing value is returned. + + Full name of type + + + + + Creates a user type. If the type already exists, the existing value is returned. + + Full name of type + Use without converting it to a + type in an existing assembly reference + + + + + Converts an assembly simple name (eg. mscorlib) to the full name of the assembly, + which includes the version, public key token, etc. Returns null if it's + unknown. + + Simple name of assembly + + + + + Gets all types sorted by + + + + + + Resource element + + + + + Name of resource + + + + + Data of resource + + + + + + + + Resource element set + + + + + Gets the number of elements in the set + + + + + Gets all resource elements + + + + + Adds a new resource to the set, overwriting any existing resource + + + + + + Thrown by + + + + + Constructor + + + + + Constructor + + Message + + + + Constructor + + + + + + + Gets called to create a from serialized data. Returns null + if a default instance should be created. + + ResourceDataFactory + Serialized type + Serialized data + + + + + Reads .NET resources + + + + + Returns true if it's possibly resources file data + + Reader + + + + + Reads a .NET resource + + Owner module + Data of resource + + + + + Reads a .NET resource + + Owner module + Data of resource + Call back that gets called to create a instance. Can be null. + + + + + Type of resource + + + + + null + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + array + + + + + + + + + + Start of user types + + + + + Writes .NET resources + + + + + Write .NET resources + + Owner module + Output stream + .NET resources + + + + Base class of all user data + + + + + Full name including assembly of type + + + + + User type code + + + + + + + + + + + Constructor + + User resource type + + + + + + + Binary data + + + + + Gets the raw data + + + + + Constructor + + User resource type + Raw serialized data + + + + + + + + + + User resource type + + + + + Full name including assembly of type + + + + + User type code + + + + + Constructor + + Full name including assembly of type + User type code + + + + + + + Security action. See CorHdr.h/CorDeclSecurity + + + + Mask allows growth of enum. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Persisted grant set at prejit time + + + Persisted grant set at prejit time + + + Persisted denied set at prejit time + + + Persisted denied set at prejit time + + + + + + + + + + + + Maximum legal value + + + + A DeclSecurity security attribute + + + + + Gets/sets the attribute type + + + + + Gets the full name of the attribute type + + + + + Gets all named arguments (field and property values) + + + + + true if is not empty + + + + + Gets all s that are field arguments + + + + + Gets all s that are property arguments + + + + + Creates a from an XML string. + + Owner module + XML + A new instance + + + + Default constructor + + + + + Constructor + + Attribute type + + + + Constructor + + Attribute type + Named arguments that will be owned by this instance + + + + + + + See CorSerializationType/CorHdr.h + + + + + + + System.Boolean + + + System.Char + + + System.SByte + + + System.Byte + + + System.Int16 + + + System.UInt16 + + + System.Int32 + + + System.UInt32 + + + System.Int64 + + + System.UInt64 + + + System.Single + + + System.Double + + + System.String + + + Single-dimension, zero lower bound array ([]) + + + System.Type + + + Boxed value type + + + A field + + + A property + + + An enum + + + + Compares types + + + + + Default instance + + + + + Case insensitive names + + + + + Constructor + + Comparison options + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Compares fields + + + + + Compares the declaring types + + + + + Doesn't compare the declaring types + + + + + Compares the declaring types, case insensitive names + + + + + Doesn't compare the declaring types, case insensitive names + + + + + Constructor + + Comparison options + + + + + + + + + + + + + + + + + + + + + + Compares methods + + + + + Compares the declaring types + + + + + Doesn't compare the declaring types + + + + + Compares the declaring types, case insensitive names + + + + + Doesn't compare the declaring types, case insensitive names + + + + + Constructor + + Comparison options + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Compares properties + + + + + Compares the declaring types + + + + + Doesn't compare the declaring types + + + + + Compares the declaring types, case insensitive names + + + + + Doesn't compare the declaring types, case insensitive names + + + + + Constructor + + Comparison options + + + + + + + + + + Compares events + + + + + Compares the declaring types + + + + + Doesn't compare the declaring types + + + + + Compares the declaring types, case insensitive names + + + + + Doesn't compare the declaring types, case insensitive names + + + + + Constructor + + Comparison options + + + + + + + + + + Compares calling convention signatures + + + + + Default instance + + + + + Case insensitive names + + + + + Constructor + + Comparison options + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Decides how to compare types, sigs, etc + + + + + Don't compare a type's (assembly/module) scope + + + + + Compares a method/field's declaring type. + + + + + Compares a property's declaring type + + + + + Compares an event's declaring type + + + + + Compares method / field / property / event declaring types + + + + + Compares parameters after a sentinel in method sigs. Should not be enabled when + comparing s against s since it's + not possible to get those sentinel params from a . + + + + + Compares assembly public key token + + + + + Compares assembly version + + + + + Compares assembly locale + + + + + If set, a and an can reference the + global <Module> type. + + + + + Don't compare a method/property's return type + + + + + Type namespaces are case insensitive + + + + + Type names (not namespaces) are case insensitive + + + + + Type names and namespaces are case insensitive + + + + + Method and field names are case insensitive + + + + + Property names are case insensitive + + + + + Event names are case insensitive + + + + + Type namespaces, type names, method names, field names, property names + and event names are all case insensitive + + + + + A field that is can compare equal to + a + + + + + A method that is can compare equal to + a + + + + + A field that is and a method that is + can compare equal to a + + + + + Raw (bit by bit) comparison of signatures. This matches what the CLR does when it + compares signatures. This means that metadata tokens will be compared. + + + + + Ignore required and optional modifiers when comparing s. + They're already ignored when comparing eg. a with a + . + + + + + By default, all module and assembly compares when they're both the system library + (eg. mscorlib or System.Runtime.dll) return true, even if they're really different, + eg. mscorlib (.NET 2.0) vs mscorlib (Windows CE). If this flag is set, the system + library is compared just like any other module/assembly. + + + + + Don't project CLR compatible WinMD references back to the original CLR type/method before comparing + + + + + Don't check type equivalence when comparing types. Starting with .NET 4.0, two different + types can be considered equivalent if eg. a TypeIdentifierAttribute is used. + + + + + When comparing types, don't compare a multi-dimensional array's lower bounds and sizes + + + + + Compares types, signatures, methods, fields, properties, events + + + + + Constructor + + Comparison options + + + + Constructor + + Comparison options + The module which the comparison take place in. + + + + is mapped to , so use + the same hash code for both + + + + + Compare members + + Member #1 + Member #2 + true if same, false otherwise + + + + Gets the hash code of a member + + The member + The hash code + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Gets the hash code of a type + + The type + The hash code + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Gets the hash code of a type + + The type + The hash code + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Gets the hash code of a type + + The type + The hash code + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Gets the hash code of a type + + The type + The hash code + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Gets the hash code of a type + + The type + The hash code + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Gets the hash code of a type + + The type + The hash code + + + + Compares resolution scopes + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares implementation + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares resolution scope and implementation + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares files + + File #1 + File #2 + true if same, false otherwise + + + + Compares a module with a file + + Module + File + true if same, false otherwise + + + + Compares modules + + Module #1 + Module #2 + true if same, false otherwise + + + + Compares modules + + Module #1 + Module #2 + true if same, false otherwise + + + + Compares assemblies + + Assembly #1 + Assembly #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Gets the hash code of a type + + The type + The hash code + + + + Compares type lists + + Type list #1 + Type list #2 + true if same, false otherwise + + + + Gets the hash code of a type list + + The type list + The hash code + + + + Compares signatures + + Sig #1 + Sig #2 + true if same, false otherwise + + + + Gets the hash code of a sig + + The sig + The hash code + + + + Compares method/property sigs + + Method/property #1 + Method/property #2 + true if same, false otherwise + + + + Gets the hash code of a method/property sig + + The method/property sig + The hash code + + + + Compares field sigs + + Field sig #1 + Field sig #2 + true if same, false otherwise + + + + Gets the hash code of a field sig + + The field sig + The hash code + + + + Compares local sigs + + Local sig #1 + Local sig #2 + true if same, false otherwise + + + + Gets the hash code of a local sig + + The local sig + The hash code + + + + Compares generic method instance sigs + + Generic inst method #1 + Generic inst method #2 + true if same, false otherwise + + + + Gets the hash code of a generic instance method sig + + The generic inst method sig + The hash code + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Gets the hash code of a method + + The method + The hash code + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Gets the hash code of a method + + The method + The hash code + + + + Compares MemberRefs + + MemberRef #1 + MemberRef #2 + true if same, false otherwise + + + + Gets the hash code of a MemberRef + + The MemberRef + The hash code + + + + Compares MethodSpecs + + MethodSpec #1 + MethodSpec #2 + true if same, false otherwise + + + + Gets the hash code of a MethodSpec + + The MethodSpec + The hash code + + + + Compares MemberRefParents + + MemberRefParent #1 + MemberRefParent #2 + true if same, false otherwise + + + + Gets the hash code of a MemberRefParent + + The MemberRefParent + The hash code + + + + Compares fields + + Field #1 + Field #2 + true if same, false otherwise + + + + Gets the hash code of a field + + The field + The hash code + + + + Compares fields + + Field #1 + Field #2 + true if same, false otherwise + + + + Compares fields + + Field #1 + Field #2 + true if same, false otherwise + + + + Compares fields + + Field #1 + Field #2 + true if same, false otherwise + + + + Gets the hash code of a field + + The field + The hash code + + + + Compares properties + + Property #1 + Property #2 + true if same, false otherwise + + + + Gets the hash code of a property + + The property + The hash code + + + + Compares events + + Event #1 + Event #2 + true if same, false otherwise + + + + Gets the hash code of an event + + The event + The hash code + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Checks whether it's FnPtr&, FnPtr*, FnPtr[], or FnPtr[...] + + The type + + + + Compares types + + Type #1 + Type #2 + true if we should treat + as a generic instance type + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Compares types + + Type #1 + Type #2 + true if same, false otherwise + + + + Gets the hash code of a type + + The type + The hash code + + + + Gets the hash code of a type + + The type + true if we should treat + as a generic instance type + The hash code + + + + Gets the hash code of a type list + + The type list + The hash code + + + + Gets the hash code of a list with only generic method parameters () + + Number of generic method parameters + Hash code + + + + Gets the hash code of a TypeDef type + + The type + The hash code + + + + Compares type lists + + Type list #1 + Type list #2 + true if same, false otherwise + + + + Compares modules + + Module #1 + Module #2 + true if same, false otherwise + + + + Compares a file and a module + + File + Module + true if same, false otherwise + + + + Compares modules + + Module #1 + Module #2 + true if same, false otherwise + + + + Compares assemblies + + Assembly #1 + Assembly #2 + true if same, false otherwise + + + + Compares method declaring types + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares method sigs + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares method sigs + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares generic method args, making sure only + contains s. + + Number of generic method args in method #1 + Generic method args in method #2 + true if same, false otherwise + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Compares methods + + Method #1 + Method #2 + true if same, false otherwise + + + + Gets the hash code of a MethodBase + + The MethodBase + The hash code + + + + Gets the hash code of a parameter list + + The type list + Declaring type of method that owns parameter + The hash code + + + + Compares calling conventions + + Calling convention + Method + + + + + Compares return types + + Return type #1 + MethodBase + true if same, false otherwise + + + + Compares parameter lists + + Type list #1 + Type list #2 + Declaring type of method that owns parameter + true if same, false otherwise + + + + Compares parameter types + + Parameter type #1 + Parameter #2 + Declaring type of method that owns parameter + true if same, false otherwise + + + + Compares fields + + Field #1 + Field #2 + true if same, false otherwise + + + + Compares fields + + Field #1 + Field #2 + true if same, false otherwise + + + + Compares fields + + Field #1 + Field #2 + true if same, false otherwise + + + + Compares fields + + Field #1 + Field #2 + true if same, false otherwise + + + + Compares fields + + Field #1 + Field #2 + true if same, false otherwise + + + + Compares fields + + Field #1 + Field #2 + true if same, false otherwise + + + + Gets the hash code of a field + + The field + The hash code + + + + Compares properties + + Property #1 + Property #2 + true if same, false otherwise + + + + Gets the hash code of a property + + The property + The hash code + + + + Compares events + + Event #1 + Event #2 + true if same, false otherwise + + + + Gets the hash code of an event + + The event + The hash code + + + + + + + Helps resolve types + + + + + Resolves a + + A TypeDefOrRef coded token + Generic parameter context + A or null if + is invalid + + + + Converts the address of a to a + + + Address of . This is also known as the + method table and has the same value as + A or null if not supported + + + + Reads signatures from the #Blob stream + + + + + Reads a signature from the #Blob stream + + Reader module + #Blob stream offset of signature + A new instance or null if + is invalid. + + + + Reads a signature from the #Blob stream + + Reader module + #Blob stream offset of signature + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a signature + + The module where the signature is located in + The signature data + A new instance or null if + is invalid. + + + + Reads a signature + + The module where the signature is located in + The signature data + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a signature + + The module where the signature is located in + The signature reader + A new instance or null if + is invalid. + + + + Reads a signature + + The module where the signature is located in + The signature reader + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a signature + + Token resolver + A instance + The signature data + A new instance or null if + is invalid. + + + + Reads a signature + + Token resolver + A instance + The signature data + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a signature + + Token resolver + A instance + The signature reader + A new instance or null if + is invalid. + + + + Reads a signature + + Token resolver + A instance + The signature reader + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a type signature from the #Blob stream + + Reader module + #Blob stream offset of signature + A new instance or null if + is invalid. + + + + Reads a type signature from the #Blob stream + + Reader module + #Blob stream offset of signature + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a type signature from the #Blob stream + + Reader module + #Blob stream offset of signature + If there's any extra data after the signature, it's saved + here, else this will be null + A new instance or null if + is invalid. + + + + Reads a type signature from the #Blob stream + + Reader module + #Blob stream offset of signature + Generic parameter context + If there's any extra data after the signature, it's saved + here, else this will be null + A new instance or null if + is invalid. + + + + Reads a signature + + The module where the signature is located in + The signature data + A new instance or null if + is invalid. + + + + Reads a signature + + The module where the signature is located in + The signature data + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a signature + + The module where the signature is located in + The signature reader + A new instance or null if + is invalid. + + + + Reads a signature + + The module where the signature is located in + The signature reader + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a signature + + Token resolver + A instance + The signature data + A new instance or null if + is invalid. + + + + Reads a signature + + Token resolver + A instance + The signature data + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a signature + + Token resolver + A instance + The signature reader + A new instance or null if + is invalid. + + + + Reads a signature + + Token resolver + A instance + The signature reader + Generic parameter context + A new instance or null if + is invalid. + + + + Reads a signature + + Token resolver + A instance + The signature data + Generic parameter context + If there's any extra data after the signature, it's saved + here, else this will be null + A new instance or null if + is invalid. + + + + Reads a signature + + Token resolver + A instance + The signature reader + Generic parameter context + If there's any extra data after the signature, it's saved + here, else this will be null + A new instance or null if + is invalid. + + + + Constructor + + Reader module + #Blob stream offset of signature + Generic parameter context + + + + Constructor + + Token resolver + A instance + The signature data + Generic parameter context + + + + Reads the signature + + A new instance or null if invalid signature + + + + Reads a + + First byte of signature + A new instance + + + + Reads a + + First byte of signature + A new instance + + + + Reads a + + First byte of signature + A new instance + + + + Reads a + + First byte of signature + A new instance + + + + Reads a + + First byte of signature + A new instance + + + + Reads the next type + + A new instance or null if invalid element type + + + + A high-level representation of a row in the StandAloneSig table + + + + + The row id in its table + + + + + + + + + + + + + + From column StandAloneSig.Signature + + + + + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + Gets/sets the method sig + + + + + Gets/sets the locals sig + + + + + + + + A StandAloneSig row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + A locals sig + + + + Constructor + + A method sig + + + + Created from a row in the StandAloneSig table + + + + The module where this instance is located + + + + + + + + + + + + + Constructor + + The module which contains this StandAloneSig row + Row ID + Generic parameter context + If is null + If is invalid + + + + Thrown if the strong name key or public key is invalid + + + + + Default constructor + + + + + Constructor + + Error message + + + + Constructor + + Error message + Other exception + + + + Constructor + + + + + + + Type of signature algorithm. See WinCrypt.h in the Windows SDK + + + + + RSA signature algorithm + + + + + A public key + + + + + Gets/sets the signature algorithm + + + + + Gets/sets the hash algorithm + + + + + Gets/sets the modulus + + + + + Gets/sets the public exponent + + + + + Default constructor + + + + + Constructor + + Modulus + Public exponent + + + + Constructor + + Modulus + Public exponent + Hash algorithm + + + + Constructor + + Modulus + Public exponent + Hash algorithm + Signature algorithm + + + + Constructor + + Public key + + + + Constructor + + Public key data + Strong name key is invalid + + + + Constructor + + Public key file + Strong name key is invalid + + + + Constructor + + Public key stream + Strong name key is invalid + + + + Constructor + + Public key reader + Strong name key is invalid + + + + Creates a public key blob + + + + + + + + Stores a strong name key pair + + + + + Gets the public key + + + + + Gets the strong name signature size in bytes + + + + + Gets the public key hash algorithm. It's usually + + + + + Gets the public exponent + + + + + Gets the modulus + + + + + Gets prime1 + + + + + Gets prime2 + + + + + Gets exponent1 + + + + + Gets exponent2 + + + + + Gets the coefficient + + + + + Gets the private exponent + + + + + Constructor + + Strong name key data + Strong name key is invalid + + + + Constructor + + Strong name key file + Strong name key is invalid + + + + Constructor + + Strong name key stream + Strong name key is invalid + + + + Constructor + + Strong name key reader + Strong name key is invalid + + + + Creates a strong name key with a new hash algorithm + + Algorithm + + + + + Creates an instance + + + + + Creates a strong name blob + + + + + Creates a counter signature, just like + sn -a IdentityPubKey.snk IdentityKey.snk SignaturePubKey.snk can do. + The public key sn prints is 's value. + + Identity public key + Identity strong name key pair + Signature public key + The counter signature as a hex string + + + + Creates a counter signature, just like + sn -a IdentityPubKey.snk IdentityKey.snk SignaturePubKey.snk can do. + The public key sn prints is 's value. + + Identity public key + Identity strong name key pair + Signature public key + The counter signature + + + + Strong name signs an assembly. It supports normal strong name signing and the new + (.NET 4.5) enhanced strong name signing. + + + + + Constructor + + .NET PE file stream + + + + Constructor + + .NET PE file stream + Offset in of the first byte of + the PE file. + + + + Calculates the strong name signature and writes it to the stream. The signature + is also returned. + + Strong name key used for signing + Offset (relative to the start of the PE file) of the strong + name signature. + The strong name signature + + + + Calculates and returns the strong name signature + + Strong name key used for signing + Offset (relative to start of PE file) of the strong + name signature. + The strong name signature + + + + Strong name hashes the .NET file + + Hash algorithm + Strong name sig offset (relative to start of .NET PE file) + Size of strong name signature + The strong name hash of the .NET file + + + + Returns the strong name signature + + Strong name key + Hash algorithm + Strong name hash of the .NET PE file + Strong name signature + + + + System.Runtime.InteropServices.TypeIdentifierAttribute helper code used by + + + + + TypeDef and ExportedType flags. See CorHdr.h/CorTypeAttr + + + + Use this mask to retrieve the type visibility information. + + + Class is not public scope. + + + Class is public scope. + + + Class is nested with public visibility. + + + Class is nested with private visibility. + + + Class is nested with family visibility. + + + Class is nested with assembly visibility. + + + Class is nested with family and assembly visibility. + + + Class is nested with family or assembly visibility. + + + Use this mask to retrieve class layout information + + + Class fields are auto-laid out + + + Class fields are laid out sequentially + + + Layout is supplied explicitly + + + Use this mask to retrieve class semantics information. + + + Use this mask to retrieve class semantics information. + + + Type is a class. + + + Type is an interface. + + + Class is abstract + + + Class is concrete and may not be extended + + + Class name is special. Name describes how. + + + Class / interface is imported + + + The class is Serializable. + + + The type is a Windows Runtime type + + + Use StringFormatMask to retrieve string information for native interop + + + LPTSTR is interpreted as ANSI in this class + + + LPTSTR is interpreted as UNICODE + + + LPTSTR is interpreted automatically + + + A non-standard encoding specified by CustomFormatMask + + + Use this mask to retrieve non-standard encoding information for native interop. The meaning of the values of these 2 bits is unspecified. + + + Initialize the class any time before first static field access. + + + This ExportedType is a type forwarder. + + + Flags reserved for runtime use. + + + Runtime should check name encoding. + + + Class has security associate with it. + + + + A high-level representation of a row in the TypeDef table + + + + + The row id in its table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always returns false since a does not contain any + or . + + + + + + + + Gets/sets the owner module + + + + + + + + + + Called to initialize + + + + From column TypeDef.Flags + + + + Attributes + + + + From column TypeDef.Name + + + + Name + + + + From column TypeDef.Namespace + + + + Name + + + + From column TypeDef.Extends + + + + + + + + + + Called to initialize + + + Reset + + + + From column TypeDef.FieldList + + + + + + + Initializes + + + + From column TypeDef.MethodList + + + + + + + Initializes + + + + + + + + + Initializes + + + + Gets the interfaces + + + + + + + Initializes + + + + + + + + + Initializes + + + + Gets/sets the class layout + + + + + + + + + + Called to initialize + + + + + + + Gets/sets the enclosing type. It's null if this isn't a nested class. + + + + + + + + Called by and should normally not be called by any user + code. Use instead. Only call this if you must set the + declaring type without inserting it in the declaring type's method list. + + + + + + + + + + Called to initialize + + + + Gets all the nested types + + + + + + + Initializes + + + + Gets all events + + + + + + + Initializes + + + + Gets all properties + + + + + + + Initializes + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + true if there's at least one in + + + + + true if there's at least one in + + + + + true if there's at least one in + + + + + true if there's at least one in + + + + + true if there's at least one in + + + + + true if there's at least one in + + + + + true if there's at least one in + + + + + true if is not null + + + + + Gets/sets the packing size. If you write to this property but + is null, it will be created. The value is returned + if is null. + + + + + Gets/sets the class size. If you write to this property but + is null, it will be created. The value is returned + if is null. + + + + + + + + true if it's an enum + + + + + true if it's a delegate (it derives from ) + + + + + true if this is a nested type (it has a declaring type) + + + + + + + + Checks whether this type has opted into equivalence + + + + + Modify property: = + ( & ) | . + + Value to AND + Value to OR + + + + Set or clear flags in + + true if flags should be set, false if flags should + be cleared + Flags to set or clear + + + + Gets/sets the visibility + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the layout + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the string format + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + true if is set + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + true if this is the global (aka. <Module>) type + + + + + Gets a list of all nested types and all their nested types + + + + + Gets an enum's underlying type or null if none. Should only be called + if this is an enum. + + + + + Resolves a method or a field. (owner type) is ignored when + resolving the method/field. Private scope methods/fields are not returned. + + A method/field reference + A or a instance or null + if it couldn't be resolved. + + + + Resolves a method or a field. (owner type) is ignored when + resolving the method/field. + + A method/field reference + Method/field signature comparison options + A or a instance or null + if it couldn't be resolved. + + + + Finds a method. Private scope methods are not returned. + + Method name + Method signature + The first method that matches or null if none found + + + + Finds a method + + Method name + Method signature + Method signature comparison options + The first method that matches or null if none found + + + + Finds a method + + Method name + Method signature + Method signature comparison options + The module that needs to find the method or null + The first method that matches or null if none found + + + + Finds a method by name + + Name of method + The or null if not found + + + + Finds all methods by name + + Name of method + All methods with that name + + + + Finds the class constructor (aka type initializer). It's the method named .cctor + + The class constructor or null if none found + + + + Finds the class constructor (aka type initializer). It's the method named .cctor. + If it doesn't exist, it is created, inserted into and returned. + The created .cctor will have just one RET instruction. + + The class constructor + + + + Finds all instance constructors (not class constructors) + + All instance constructors + + + + Finds all static and instance constructors + + All static and instance constructors + + + + Finds the default instance constructor (the one with no arguments) + + The default instance constructor or null if none + + + + Finds a field. Private scope fields are not returned. + + Field name + Field signature + The first field that matches or null if none found + + + + Finds a field + + Field name + Field signature + Field signature comparison options + The first field that matches or null if none found + + + + Finds a field + + Field name + Field signature + Field signature comparison options + The module that needs to find the field or null + The first field that matches or null if none found + + + + Finds a field by name + + Name of field + The or null if not found + + + + Finds all fields by name + + Name of field + All fields with that name + + + + Finds an event + + Name of event + Type of event + A or null if not found + + + + Finds an event + + Name of event + Type of event + Event type comparison options + A or null if not found + + + + Finds an event + + Name of event + Type of event + Event type comparison options + The module that needs to find the event or null + A or null if not found + + + + Finds an event by name + + Name of event + The or null if not found + + + + Finds all events by name + + Name of event + All events with that name + + + + Finds a property + + Name of property + Property signature + A or null if not found + + + + Finds a property + + Name of property + Property signature + Property signature comparison options + A or null if not found + + + + Finds a property + + Name of property + Property signature + Property signature comparison options + The module that needs to find the property or null + A or null if not found + + + + Finds a prop by name + + Name of prop + The or null if not found + + + + Finds all props by name + + Name of prop + All props with that name + + + + Finds a method by checking this type or any of its base types + + Method name + Method signature + The method or null if it wasn't found + + + + Finds a method by checking this type or any of its base types + + Method name + Method signature + Method signature comparison options + The method or null if it wasn't found + + + + Finds a method by checking this type or any of its base types + + Method name + Method signature + Method signature comparison options + The module that needs to find the method or null + The method or null if it wasn't found + + + + Finds a method by checking this type or any of its base types + + Method name + The method or null if it wasn't found + + + + Finds a field by checking this type or any of its base types + + Field name + Field signature + The field or null if it wasn't found + + + + Finds a field by checking this type or any of its base types + + Field name + Field signature + Field signature comparison options + The field or null if it wasn't found + + + + Finds a field by checking this type or any of its base types + + Field name + Field signature + Field signature comparison options + The module that needs to find the field or null + The field or null if it wasn't found + + + + Finds a field by checking this type or any of its base types + + Field name + The field or null if it wasn't found + + + + Finds an event by checking this type or any of its base types + + Event name + Event type + The event or null if it wasn't found + + + + Finds an event by checking this type or any of its base types + + Event name + The event or null if it wasn't found + + + + Finds a property by checking this type or any of its base types + + Property name + Property signature + The property or null if it wasn't found + + + + Finds a property by checking this type or any of its base types + + Property name + Property signature + Property signature comparison options + The property or null if it wasn't found + + + + Finds a property by checking this type or any of its base types + + Property name + Property signature + Property signature comparison options + The module that needs to find the property or null + The property or null if it wasn't found + + + + Finds a property by checking this type or any of its base types + + Property name + The property or null if it wasn't found + + + + Removes a method from this type. It also removes it from any properties and events. + + The method to remove + + + + Removes a method from this type. It also removes it from any properties and events. + + The method to remove + true if we should remove all + empty properties and events. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets all fields named + + Field name + A list of 0 or more fields with name + + + + Gets the first field named + + Field name + The field or null if none found + + + + FInd a method implementation method + + Method + + + + + + + + A TypeDef row created by the user and not present in the original .NET file + + + + + Constructor + + Name + + + + Constructor + + Namespace + Name + + + + Constructor + + Name + Base class or null if it's an interface + + + + Constructor + + Namespace + Name + Base class or null if it's an interface + + + + Created from a row in the TypeDef table + + + + The module where this instance is located + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Constructor + + The module which contains this TypeDef row + Row ID + If is null + If is invalid + + + + Gets all methods overrides + + The method + Generic parameter context + A list (possibly empty) of all methods overrides + + + + Initializes all . Only those s + that are property or event handlers get updated. + + + + + Initializes a property's special methods + + The property + Updated with a list of all get methods + Updated with a list of all set methods + Updated with a list of all other methods + + + + Initializes an event's special methods + + The event + Updated with the addOn method or null if none + Updated with the fire method or null if none + Updated with the removeOn method or null if none + Updated with a list of all other methods + + + + + + + + + + + + + + + + + + + Finds s + + + + + true if the cache is enabled. false if the cache + is disabled and a slower O(n) lookup is performed. + + + + + Constructor + + All root types. All their nested types are also included. + If is null + + + + Constructor + + All root types + true if all nested types that are reachable + from should also be included. + If is null + + + + Resets the cache (clears all cached elements). Use this method if the cache is + enabled but some of the types have been modified (eg. removed, added, renamed). + + + + + + + + + + + Gets the next or null if there are no more left + + The next or null if none + + + + Gets the next or null if there are no more left. + The cache is updated with the returned before the method + returns. + + The next or null if none + + + + + + + Various helper methods for classes to prevent infinite recursion + + + + + Checks whether contains a or a + . + + Calling convention signature + true if contains a + or a . + + + + Checks whether contains a or a + . + + Field signature + true if contains a + or a . + + + + Checks whether contains a or a + . + + Method or property signature + true if contains a + or a . + + + + Checks whether contains a or a + . + + Local signature + true if contains a + or a . + + + + Checks whether contains a or a + . + + Generic method signature + true if contains a + or a . + + + + Checks whether contains a or a + . + + Type + true if contains a or a + . + + + + Checks whether contains a or a + . + + Type + true if contains a or a + . + + + + Checks whether contains a or a + . + + Type + true if contains a or a + . + + + + Checks whether contains a or a + . + + Type + true if contains a or a + . + + + + Checks whether contains a or a + . + + Type + true if contains a or a + . + + + + Checks whether contains a or a + . + + Type + true if contains a or a + . + + + + Thrown by when it fails to parse a type name + + + + + Default constructor + + + + + Constructor + + Exception message + + + + Constructor + + Exception message + Inner exception or null if none + + + + Constructor + + + + + + + Helps create types + + + + + Finds a 's when the original assembly + info is missing from the full type name. + + A non-nested + 's or null + + + + Parses a type name and creates an + + + + Owner module + + + + Parses a Reflection type name and creates a + + Module that will own the returned or null + Full name of type + Helper class + A new instance + If parsing failed + + + + Parses a Reflection type name and creates a + + Module that will own the returned or null + Full name of type + Helper class + Generic parameter context + A new instance + If parsing failed + + + + Parses a Reflection type name and creates a + + Module that will own the returned or null + Full name of type + Helper class + A new instance or null if parsing failed + + + + Parses a Reflection type name and creates a + + Module that will own the returned or null + Full name of type + Helper class + Generic parameter context + A new instance or null if parsing failed + + + + Parses a Reflection type name and creates a + + Module that will own the returned or null + Full name of type + Helper class + A new instance + If parsing failed + + + + Parses a Reflection type name and creates a + + Module that will own the returned or null + Full name of type + Helper class + Generic parameter context + A new instance + If parsing failed + + + + Parses a Reflection type name and creates a + + Module that will own the returned or null + Full name of type + Helper class + A new instance or null if parsing failed + + + + Parses a Reflection type name and creates a + + Module that will own the returned or null + Full name of type + Helper class + Generic parameter context + A new instance or null if parsing failed + + + + Constructor + + Module that will own the returned or null + Full name of type + Helper class + + + + Constructor + + Module that will own the returned or null + Full name of type + Helper class + Generic parameter context + + + + Parses a type name and creates a + + A new instance + If parsing failed + + + + Parses a type name and creates a + + A new instance + If parsing failed + + + + Increment recursion counter + + If this method has been called too many times + + + + Decrement recursion counter + + + + + + + + Dispose method + + true if called by + + + + Reads a including any possible nested s. + + Character separating nested types + A new instance, which could be nested. + + + + Reads a namespace and name and creates a TypeRef. Does not read any nested types. + + A new instance + + + + Peeks the next char. -1 if no more chars. + + + + + Gets the next char or -1 if no more chars + + + + + Gets the next ID char or -1 if no more ID chars + + true if white space should be ignored + + + + Parses reflection type names. Grammar http://msdn.microsoft.com/en-us/library/yfsftwz6.aspx + + + + + Constructor + + Module that will own the returned or null + Full name of type + Helper class + + + + Constructor + + Module that will own the returned or null + Full name of type + Helper class + Generic parameter context + + + + Parses an assembly name + + Full assembly name + A new instance or null if parsing failed + + + + Parses an assembly name + + Full assembly name + Generic parameter context + A new instance or null if parsing failed + + + + + + + A high-level representation of a row in the TypeRef table + + + + + The row id in its table + + + + + The owner module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always returns false since a does not contain any + or . + + + + + + + + From column TypeRef.ResolutionScope + + + + + + + + + + Called to initialize + + + + From column TypeRef.Name + + + + Name + + + + From column TypeRef.Namespace + + + + Name + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + true if it's nested within another + + + + + + + + + + + Gets the declaring type, if any + + + + + + + + Resolves the type + + A instance or null if it couldn't be resolved + + + + Resolves the type + + The module that needs to resolve the type or null + A instance or null if it couldn't be resolved + + + + Resolves the type + + A instance + If the type couldn't be resolved + + + + Resolves the type + + The module that needs to resolve the type or null + A instance + If the type couldn't be resolved + + + + Gets the top-most (non-nested) + + Input + The non-nested or null + + + + + + + A TypeRef row created by the user and not present in the original .NET file + + + + + Constructor + + Owner module + Type name + + + + Constructor + + Owner module + Type namespace + Type name + + + + Constructor + + Owner module + Type namespace + Type name + Resolution scope (a , + , or ) + + + + Created from a row in the TypeRef table + + + + The module where this instance is located + + + + + + + + + + + + + + + + Constructor + + The module which contains this TypeRef row + Row ID + If is null + If is invalid + + + + Type sig base class + + + + + Returns the wrapped element type. Can only be null if it was an invalid sig or + if it's a + + + + + Gets the element type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a or a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if it's a + + + + + true if this contains a or a + . + + + + + + + + Base class for element types that are last in a type sig, ie., + , , , + , + + + + + + + + Wraps a + + + + + Gets the the TypeDefOrRef + + + + + Returns true if != null + + + + + Returns true if != null + + + + + Returns true if != null + + + + + Gets the or null if it's not a + + + + + Gets the or null if it's not a + + + + + Gets the or null if it's not a + + + + + Constructor + + A , or + a + + + + A core library type + + + + + Gets the element type + + + + + Constructor + + The type which must be a or a + . and null are not allowed. + The type's element type + + + + Base class for class/valuetype element types + + + + + Constructor + + A + + + + Represents a + + + + + + + + Constructor + + A + + + + Represents a + + + + + + + + Constructor + + A + + + + Generic method/type var base class + + + + + true if it has an owner or + + + + + true if it has an owner ( is + not null) + + + + + true if it has an owner ( is + not null) + + + + + Gets the owner type or null if the owner is a or if it + has no owner. + + + + + Gets the owner method or null if the owner is a or if it + has no owner. + + + + + Gets the generic param number + + + + + Gets the corresponding or null if none exists. + + + + + Constructor + + true if it's a Var, false if it's a MVar + Generic param number + + + + Constructor + + true if it's a Var, false if it's a MVar + Generic param number + Owner method/type or null + + + + Returns true if it's a MVar element type + + + + + Returns true if it's a Var element type + + + + + Represents a + + + + + + + + + + + + + + Constructor + + Generic parameter number + Owner type or null + + + + Constructor + + Generic parameter number + Owner type or null + + + + Represents a + + + + + + + + + + + + + + Constructor + + Generic parameter number + Owner method or null + + + + Constructor + + Generic parameter number + Owner method or null + + + + Represents a + + + + + + + + Represents a + + + + + + + + Gets the signature + + + + + Gets the + + + + + Constructor + + The method signature + + + + Represents a + + + + + + + + Gets the generic type + + + + + Gets the generic arguments (it's never null) + + + + + Default constructor + + + + + Constructor + + The generic type + + + + Constructor + + The generic type + Number of generic arguments + + + + Constructor + + The generic type + Number of generic arguments + + + + Constructor + + The generic type + Generic argument #1 + + + + Constructor + + The generic type + Generic argument #1 + Generic argument #2 + + + + Constructor + + The generic type + Generic argument #1 + Generic argument #2 + Generic argument #3 + + + + Constructor + + The generic type + Generic arguments + + + + Constructor + + The generic type + Generic arguments + + + + Base class of non-leaf element types + + + + + + + + Constructor + + Next sig + + + + Represents a + + + + + + + + Constructor + + The next element type + + + + Represents a + + + + + + + + Constructor + + The next element type + + + + Array base class + + + + + Constructor + + Array type + + + + true if it's a multi-dimensional array (i.e., ), + and false if it's a single-dimensional array (i.e., ) + + + + + + true if it's a single-dimensional array (i.e., ), + and false if it's a multi-dimensional array (i.e., ) + + + + + + Gets/sets the rank (number of dimensions). This can only be set if + is true + + + + + Gets all sizes. If it's a , then it will be an empty temporary + list that is re-created every time this method is called. + + A list of sizes + + + + Gets all lower bounds. If it's a , then it will be an empty + temporary list that is re-created every time this method is called. + + A list of lower bounds + + + + Represents a + + + + + + + + + Gets/sets the rank (max value is 0x1FFFFFFF) + + + + + Gets all sizes (max elements is 0x1FFFFFFF) + + + + + Gets all lower bounds (max elements is 0x1FFFFFFF) + + + + + Constructor + + Array type + + + + Constructor + + Array type + Array rank + + + + Constructor + + Array type + Array rank + + + + Constructor + + Array type + Array rank + Sizes list. This instance will be the owner of this list. + Lower bounds list. This instance will be the owner of this list. + + + + Constructor + + Array type + Array rank + Sizes list. This instance will be the owner of this list. + Lower bounds list. This instance will be the owner of this list. + + + + Constructor + + Array type + Array rank + Sizes list. This instance will be the owner of this list. + Lower bounds list. This instance will be the owner of this list. + + + + + + + + + + Represents a (single dimension, zero lower bound array) + + + + + + + + + + + + Constructor + + The next element type + + + + + + + + + + Base class for modifier type sigs + + + + + Returns the modifier type + + + + + Constructor + + Modifier type + The next element type + + + + Represents a + + + + + + + + + + + Represents a + + + + + + + + + + + Represents a + + + + + + + + Constructor + + The next element type + + + + Represents a + + + + + + + + Gets/sets the size + + + + + Constructor + + The next element type + Size of the array + + + + Represents a + + + + + + + + Gets/sets the index + + + + + Constructor + + Index + The next element type + + + + A high-level representation of a row in the TypeSpec table + + + + + The row id in its table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From column TypeSpec.Signature + + + + + Gets/sets the extra data that was found after the signature + + + + + + + + + + + + + Called to initialize + + + + Gets all custom attributes + + + + + + + Initializes + + + + + + + + + + + + + Gets all custom debug infos + + + + + + + Initializes + + + + + + + A TypeSpec row created by the user and not present in the original .NET file + + + + + Default constructor + + + + + Constructor + + A type sig + + + + Created from a row in the TypeSpec table + + + + The module where this instance is located + + + + + + + + + + + + + + + + Constructor + + The module which contains this TypeSpec row + Row ID + Generic parameter context + If is null + If is invalid + + + + Compares s + + + + + The default instance + + + + + + + + + + + A UTF-8 encoded string where the original data is kept in memory to avoid conversions + when the data is not really valid UTF-8 encoded data + + When comparing strings, a byte compare is performed. The reason is that this + is what the CLR does when comparing strings in the #Strings stream. + + + + An empty + + + + + Gets the value as a UTF8 decoded string. Only use it for display purposes, + not for serialization. + + + + + Gets the original encoded data. Don't modify this data. + + + + + Gets the length of the this as a . I.e., it's the same as + String.Length. + + + + + + Gets the length of the raw data. It's the same as Data.Length + + + + + + Checks whether is null or if its data is null. + + The instance to check + true if null or empty, false otherwise + + + + Checks whether is null or if its data is null or the + data is zero length. + + The instance to check + true if null or empty, false otherwise + + + Implicit conversion from to + + + Implicit conversion from to + + + + Converts it to a + + The UTF-8 string instace or null + A or null if is null + + + + Converts it to a or an empty string if is null + + The UTF-8 string instace or null + A (never null) + + + + Gets the hash code of a + + Input + + + + + + + Compares two instances (case sensitive) + + Instance #1 or null + Instance #2 or null + < 0 if a < b, 0 if a == b, > 0 if a > b + + + + Compares two instances (case insensitive) + + Instance #1 or null + Instance #2 or null + < 0 if a < b, 0 if a == b, > 0 if a > b + + + + Compares two instances (case insensitive) + + Instance #1 or null + Instance #2 or null + true if equals, false otherwise + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + + Constructor + + UTF-8 data that this instance now owns + + + + Constructor + + The string + + + + Compares two instances + + First + Second + true if equals, false otherwise + + + + + + + + + + Checks whether exists in this string + + Value to find + true if exists in string or is the + empty string, else false + + + + Checks whether matches the end of this string + + Value + + + + + Checks whether matches the end of this string + + Value + true to ignore case + Culture info + + + + + Checks whether matches the end of this string + + Value + Comparison type + + + + + Checks whether matches the beginning of this string + + Value + + + + + Checks whether matches the beginning of this string + + Value + true to ignore case + Culture info + + + + + Checks whether matches the beginning of this string + + Value + Comparison type + + + + + Compares this instance with + + Other string + < 0 if a < b, 0 if a == b, > 0 if a > b + + + + Returns the index of the first character in this string + + Character + The index of or -1 if not found + + + + Returns the index of the first character in this string + starting from index + + Character + Start index + The index of or -1 if not found + + + + Returns the index of the first character in this string + starting from index for max + characters. + + Character + Start index + Max number of chars to scan + The index of or -1 if not found + + + + Returns the index of the first sub string in this string + + String + The index of or -1 if not found + + + + Returns the index of the first sub string in this string + starting from index + + String + Start index + The index of or -1 if not found + + + + Returns the index of the first sub string in this string + starting from index for max + characters. + + String + Start index + Max number of chars to scan + The index of or -1 if not found + + + + Returns the index of the first sub string in this string + starting from index for max + characters. + + String + Start index + Max number of chars to scan + Comparison type + The index of or -1 if not found + + + + Returns the index of the first sub string in this string + starting from index + + String + Start index + Comparison type + The index of or -1 if not found + + + + Returns the index of the first sub string in this string + + String + Comparison type + The index of or -1 if not found + + + + Returns the index of the last character in this string + + Character + The index of or -1 if not found + + + + Returns the index of the last character in this string + starting from index + + Character + Start index + The index of or -1 if not found + + + + Returns the index of the last character in this string + starting from index for max + characters. + + Character + Start index + Max number of chars to scan + The index of or -1 if not found + + + + Returns the index of the last sub string in this string + + String + The index of or -1 if not found + + + + Returns the index of the last sub string in this string + starting from index + + String + Start index + The index of or -1 if not found + + + + Returns the index of the last sub string in this string + starting from index for max + characters. + + String + Start index + Max number of chars to scan + The index of or -1 if not found + + + + Returns the index of the last sub string in this string + starting from index for max + characters. + + String + Start index + Max number of chars to scan + Comparison type + The index of or -1 if not found + + + + Returns the index of the last sub string in this string + starting from index + + String + Start index + Comparison type + The index of or -1 if not found + + + + Returns the index of the last sub string in this string + + String + Comparison type + The index of or -1 if not found + + + + Inserts string at a index + + Start index + Value to insert + A new instance with the inserted at position + + + + + Removes all characters starting from position + + Start index + A new instance + + + + Removes characters starting from position + + + Start index + Number of characters to remove + A new instance + + + + Replaces all characters with + + Character to find + Character to replace all + A new instance + + + + Replaces all sub strings with + + Sub string to find + Sub string to replace all + A new instance + + + + Returns a sub string of this string starting at offset + + Start index + A new instance + + + + Returns a sub string of this string starting at offset . + Length of sub string is . + + Start index + Length of sub string + A new instance + + + + Returns the lower case version of this string + + A new instance + + + + Returns the lower case version of this string + + Culture info + A new instance + + + + Returns the lower case version of this string using the invariant culture + + A new instance + + + + Returns the upper case version of this string + + A new instance + + + + Returns the upper case version of this string + + Culture info + A new instance + + + + Returns the upper case version of this string using the invariant culture + + A new instance + + + + Removes all leading and trailing whitespace characters + + A new instance + + + + + + + + + + Compares byte arrays + + + + + Default instance + + + + + + + + + + + Returns an assembly name string + + Simple assembly name + Version or null + Culture or null + Public key / public key token or null + Assembly attributes + An assembly name string + + + + Convert a byte[] to a + + All bytes + true if output should be in upper case hex + as a hex string + + + + Converts a hex string to a byte[] + + A string with an even number of hex characters + converted to a byte[] or null + if is invalid + + + + Converts a character to a hex digit + + Hex character + 0x00-0x0F if successful, -1 if is not + a valid hex digit + + + + Compares two byte arrays + + Byte array #1 + Byte array #2 + < 0 if a < b, 0 if a == b, > 0 if a > b + + + + Checks whether two byte arrays are equal + + First + Second + true if same, false otherwise + + + + Gets the hash code of a byte array + + Byte array + The hash code + + + + Compares two versions + + This differs from if the build + and/or revision numbers haven't been initialized or if one of the args is null. + + Version #1 or null to be treated as v0.0.0.0 + Version #2 or null to be treated as v0.0.0.0 + < 0 if a < b, 0 if a == b, > 0 if a > b + + + + Checks whether two versions are the same + + This differs from if the build + and/or revision numbers haven't been initialized or if one of the args is null. + + Version #1 or null to be treated as v0.0.0.0 + Version #2 or null to be treated as v0.0.0.0 + true if same, false otherwise + + + + Creates a new instance with no undefined version values (eg. + the build and revision values won't be -1). + + A instance + A new instance + + + + Parses a version string + + Version string + A new or null if + is an invalid version + + + + Compares two locales (cultures) + + First + Second + < 0 if a < b, 0 if a == b, > 0 if a > b + + + + Compares two locales (cultures) + + First + Second + true if same, false otherwise + + + + Compares two locales (cultures) + + First + Second + < 0 if a < b, 0 if a == b, > 0 if a > b + + + + Compares two locales (cultures) + + First + Second + true if same, false otherwise + + + + Gets the hash code of a locale + + Value + The hash code + + + + Align up + + Value + Alignment + + + + Align up + + Value + Alignment + + + + Variant type (VT_XXX in the Windows SDK) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This wasn't present in the blob + + + + All native vtables + + + + + Gets/sets the RVA of the vtable fixups + + + + + Gets all s + + + + + Default constructor + + + + + Constructor + + Module + + + + + + + + + + See COR_VTABLE_XXX in CorHdr.h + + + + + 32-bit vtable slots + + + + + 64-bit vtable slots + + + + + Transition from unmanaged code + + + + + Also retain app domain + + + + + Call most derived method + + + + + One VTable accessed by native code + + + + + Gets/sets the of this vtable + + + + + Gets/sets the flags + + + + + true if each vtable slot is 32 bits in size + + + + + true if each vtable slot is 64 bits in size + + + + + Gets the vtable methods + + + + + Default constructor + + + + + Constructor + + Flags + + + + Constructor + + RVA of this vtable + Flgas + Number of methods in vtable + + + + Constructor + + RVA of this vtable + Flgas + Vtable methods + + + + + + + + + + + + + Converts WinMD type to a CLR type. Returns null + if it's not a CLR compatible WinMD type. + + Owner module or null + Type + + + + + Converts WinMD type to a CLR type. Returns null + if it's not a CLR compatible WinMD type. + + Owner module or null + Type + true if the returned type is a value type + + + + + Converts WinMD type to a CLR type. Returns null + if it's not a CLR compatible WinMD type. + + Owner module or null + Type + + + + + Converts WinMD type to a CLR type. Returns null + if it's not a CLR compatible WinMD type. + + Owner module or null + Type + true if the returned type is a value type + + + + + Converts WinMD type to a CLR type. Returns null + if it's not a CLR compatible WinMD type. + + Owner module or null + Type + + + + + Converts WinMD type to a CLR type. Returns null + if it's not a CLR compatible WinMD type. + + Owner module or null + Type + + + + + Converts WinMD member reference to a CLR member reference. Returns + null if it's not a CLR compatible WinMD member reference. + + Owner module or null + Member reference + + + + + Converts WinMD method to a CLR member reference. Returns + null if it's not a CLR compatible WinMD method + + Owner module or null + Method + + + + + WinMD status + + + + + This is not a WinMD file + + + + + This is a pure WinMD file (not managed) + + + + + This is a managed WinMD file (created by eg. winmdexp.exe) + + + + + Writes data + + + + + Gets the current position + + + + + Constructor + + Destination array + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes bytes + + Bytes + + + + Writes bytes + + Bytes + Source index + Number of bytes to write + + + + #Blob heap + + + + + + + + Populates blobs from an existing (eg. to preserve + blob offsets) + + The #Blob stream with the original content + + + + Adds data to the #Blob heap + + The data + The offset of the data in the #Blob heap + + + + Adds data to the #Blob heap, but does not re-use an existing position + + The data + The offset of the data in the #Blob heap + + + + + + + + + + + + + + + + + + + Stores a byte array + + + + + + + + + + + Gets the data + + + + + Constructor + + The data. It will be owned by this instance and can't be modified by + other code if this instance is inserted as a key in a dictionary (because + return value will be different if you modify the array). If + it's never inserted as a key in a dictionary, then the contents can be modified, + but shouldn't be resized after has been called. + + + + + + + + + + + + + + + + + + + + + + Checksum algorithm + + + + + SHA-1 + + + + + SHA-256 + + + + + SHA-384 + + + + + SHA-512 + + + + + Contains a list of s + + + + + Default constructor + + + + + Add a + + The chunk to add or null if none + Chunk alignment + + + + Remove a + + The chunk to remove or null if none + Alignment of the chunk, or null if the chunk cannot be removed. + + + + Base class of chunk list types + + Chunk type + + + All chunks + + + true if has been called + + + + Helper struct + + + + Data + + + Alignment + + + + Constructor + + Chunk + Alignment + + + + Equality comparer for + + + + + Constructor + + Compares the chunk type + + + + + + + + + + + + + + + + + + + + + + + + + + + + Helps write custom attributes + + + + + Writes s + + + + + Writes a custom attribute + + Helper class + The custom attribute + Custom attribute blob + + + + Writes custom attribute named arguments + + Helper class + Named arguments + The named args blob + + + + Write a value + + The ctor arg type, field type, or property type + The value to write + + + + Gets the enum's underlying type + + An enum type + The underlying type or null if we couldn't resolve the type ref + + + + Converts to a , possibly resolving + a + + The type + A or null if we couldn't resolve the + or if is a type spec + + + + + + + A chunk + + + + + + + + + + + Constructor + + The data + + + + Constructor + + The data + Virtual size of + + + + Constructor + + The data + + + + Constructor + + The data + Virtual size of + + + + Gets the data reader + + + + + Replaces the old data with new data. The new data must be the same size as the old data if + has been called. That method gets called after + event + + + + + + + + + + + + + + + + + + Copies existing data to a new metadata heap + + + + + Gets the name of the heap + + + + + Constructor + + The stream whose data will be copied to the new metadata file + + + + Constructor + + Heap name + Heap content + + + + + + + + + + Writes data + + + + + Gets/sets the position + + + + + Constructor + + Destination stream + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes a + + Value + + + + Writes bytes + + Bytes to write + + + + Writes bytes + + Bytes to write + Index to start copying from + Number of bytes to copy + + + + Writes a compressed + + Value + + + + Writes a compressed + + + + + + Gets the size of a compressed , see + + Value + + + + + Debug directory entry + + + + + Gets the header + + + + + Gets the data + + + + + Constructor + + Data + + + + Debug directory chunk + + + + Default debug directory alignment + + + + + + + + + + Constructor + + + + + Adds data + + Data + + + + + Adds data + + Data + + + + + Adds data + + Data + Debug type + Major version + Minor version + Timestamp + + + + + Adds data + + Data + Debug type + Major version + Minor version + Timestamp + + + + + + + + + + + + + + + + + Writes DeclSecurity blobs + + + + + Creates a DeclSecurity blob from + + Owner module + List of s + Helps this class + A DeclSecurity blob + + + + Creates a DeclSecurity blob from + + Owner module + List of s + Helps this class + Optimize serialized type strings in custom attributes. + For more info, see + A DeclSecurity blob + + + + Extension methods + + + + + Write zeros + + this + Number of zeros + + + + Writes all data to and verifies that all bytes were written + + this + Destination + Not all bytes were written + + + + Writes a data directory + + Writer + The data + + + + #GUID heap + + + + + + + + Adds a guid to the #GUID heap + + The guid + The index of the guid in the #GUID heap + + + + + + + + + + + + + + + + + + + Base class of most heaps + + + + + true if has been called + + + + + + + + + + + + + + + + + true if offsets require 4 bytes instead of 2 bytes. + + + + + + + + + + + + + + + + + Gets the raw length of the heap + + Raw length of the heap + + + + + + + Writes all data to at its current location. + + Destination + + + + + + + Data that gets written to the file + + + + + Gets the file offset. This is valid only after has been called. + + + + + Gets the RVA. This is valid only after has been called. + + + + + Called when the file offset and RVA are known + + File offset of this chunk + RVA of this chunk + + + + Gets the raw file length of this chunk. Must only be called after + has been called. + + Length of this chunk + + + + Gets the virtual size of this chunk. Must only be called after + has been called. + + Virtual size of this chunk + + + + Writes all data to at its current location. It's only + called after and have been called. + You cannot assume that 's file position is the same as this + chunk's file position. + + Destination + + + + Implemented by s that can reuse the old data location in the original PE file + + + + + Returns true if this chunk fits in the old location + + Original RVA of data + Size of the original location + + + + + .NET Heap interface + + + + + Gets the name of the heap + + + + + Checks whether the heap is empty + + + + + Called when the heap should be set to read-only mode + + + + + Options to + + + + + Default major runtime version + + + + + Default minor runtime version + + + + + Major runtime version + + + + + Minor runtime version + + + + + Flags + + + + + Entry point or null. Either a Method/File token or an RVA. + + + + + Default constructor + + + + + Constructor + + Flags + + + + Constructor + + Major runtime version (default is ) + Minor runtime version (default is ) + Flags + + + + .NET header + + + + + Gets/sets the + + + + + Gets/sets the .NET resources + + + + + Gets/sets the strong name signature + + + + + + + + + + + Constructor + + Options + + + + + + + + + + + + + + + + Import address table chunk + + + + + Gets/sets the + + + + + + + + + + + Constructor + + true if it's a 64-bit PE file, false if it's a 32-bit PE file + + + + + + + + + + + + + + + + Import directory chunk + + + + + Gets/sets the + + + + + Gets the RVA of _CorDllMain/_CorExeMain in the import lookup table + + + + + Gets RVA of _CorExeMain/_CorDllMain in the IAT + + + + + Gets/sets a value indicating whether this is a EXE or a DLL file + + + + + + + + + + + Gets/sets the name of the dll which should be imported. + + + + + Gets/sets the name of the entry point of the imported dll. + + + + + Constructor + + true if it's a 64-bit PE file, false if it's a 32-bit PE file + + + + + + + + + + + + + + + + Interface to get and set raw heap data. Implemented by the offset heaps: #Strings, + #GUID, #Blob, and #US. + + Type of cooked data + + + + Gets the size of the data as raw data when written to the heap + + The data + Size of the data as raw data when written to the heap + + + + Overrides what value should be written to the heap. + + Offset of value. Must match an offset returned by + + The new raw data. The size must match the raw size exactly. + + + + Gets all inserted raw data and their offsets. The returned array + is owned by the caller. + + An enumerable of all raw data and their offsets + + + + Gets notified of errors. The default handler should normally throw since the written data + will probably be invalid. Any error can be ignored. + + + + + Called when an error is detected (eg. a null pointer or other invalid value). The error + can be ignored but the written data won't be valid. + + Error message + + + + Writes the .sdata blob. We could write the data in any order, but we write the data in the same order as ILASM + + PE timestamp + + + + Writes field marshal blobs + + + + + Creates a field marshal blob from + + Owner module + Marshal type + Helps this class + A field marshal blob or null if is + null + + + + Creates a field marshal blob from + + Owner module + Marshal type + Helps this class + Optimize serialized type strings in custom attributes. + For more info, see + A field marshal blob or null if is + null + + + + + + + Calculates max stack usage by using a simple pass over all instructions. This value + can be placed in the fat method header's MaxStack field. + + + + + Gets max stack value + + All instructions + All exception handlers + Max stack value + + + + Gets max stack value + + All instructions + All exception handlers + Updated with max stack value + true if no errors were detected, false otherwise + + + + MD table interface + + + + + Gets the table type + + + + + true if the table is empty + + + + + Gets the number of rows in this table + + + + + Gets/sets a value indicating whether it's sorted + + + + + true if has been called + + + + + Gets/sets the + + + + + Called when the table can't be modified any more + + + + + Creates rows in a table. Rows can optionally be shared to create a compact table. + + The raw row type + + + + + + + + + + + + + + + + + + + + + + Gets the value with rid + + The row ID + + + + Constructor + + The table type + Equality comparer + + + + + + + Adds a row. If the row already exists, returns a rid to the existing one, else + it's created and a new rid is returned. + + The row. It's now owned by us and must NOT be modified by the caller. + The RID (row ID) of the row + + + + Creates a new row even if this row already exists. + + The row. It's now owned by us and must NOT be modified by the caller. + The RID (row ID) of the row + + + + Re-adds all added rows. Should be called if rows have been modified after being + inserted. + + + + + Reset the table. + + + + + Writes s + + + + + Writes a Module table + + Writer + Metadata + Table + + + + Writes a TypeRef table + + Writer + Metadata + Table + + + + Writes a TypeDef table + + Writer + Metadata + Table + + + + Writes a FieldPtr table + + Writer + Metadata + Table + + + + Writes a Field table + + Writer + Metadata + Table + + + + Writes a MethodPtr table + + Writer + Metadata + Table + + + + Writes a Method table + + Writer + Metadata + Table + + + + Writes a ParamPtr table + + Writer + Metadata + Table + + + + Writes a Param table + + Writer + Metadata + Table + + + + Writes a InterfaceImpl table + + Writer + Metadata + Table + + + + Writes a MemberRef table + + Writer + Metadata + Table + + + + Writes a Constant table + + Writer + Metadata + Table + + + + Writes a CustomAttribute table + + Writer + Metadata + Table + + + + Writes a FieldMarshal table + + Writer + Metadata + Table + + + + Writes a DeclSecurity table + + Writer + Metadata + Table + + + + Writes a ClassLayout table + + Writer + Metadata + Table + + + + Writes a FieldLayout table + + Writer + Metadata + Table + + + + Writes a StandAloneSig table + + Writer + Metadata + Table + + + + Writes a EventMap table + + Writer + Metadata + Table + + + + Writes a EventPtr table + + Writer + Metadata + Table + + + + Writes a Event table + + Writer + Metadata + Table + + + + Writes a PropertyMap table + + Writer + Metadata + Table + + + + Writes a PropertyPtr table + + Writer + Metadata + Table + + + + Writes a Property table + + Writer + Metadata + Table + + + + Writes a MethodSemantics table + + Writer + Metadata + Table + + + + Writes a MethodImpl table + + Writer + Metadata + Table + + + + Writes a ModuleRef table + + Writer + Metadata + Table + + + + Writes a TypeSpec table + + Writer + Metadata + Table + + + + Writes a ImplMap table + + Writer + Metadata + Table + + + + Writes a FieldRVA table + + Writer + Metadata + Table + + + + Writes a ENCLog table + + Writer + Metadata + Table + + + + Writes a ENCMap table + + Writer + Metadata + Table + + + + Writes a Assembly table + + Writer + Metadata + Table + + + + Writes a AssemblyProcessor table + + Writer + Metadata + Table + + + + Writes a AssemblyOS table + + Writer + Metadata + Table + + + + Writes a AssemblyRef table + + Writer + Metadata + Table + + + + Writes a AssemblyRefProcessor table + + Writer + Metadata + Table + + + + Writes a AssemblyRefOS table + + Writer + Metadata + Table + + + + Writes a File table + + Writer + Metadata + Table + + + + Writes a ExportedType table + + Writer + Metadata + Table + + + + Writes a ManifestResource table + + Writer + Metadata + Table + + + + Writes a NestedClass table + + Writer + Metadata + Table + + + + Writes a GenericParam table + + Writer + Metadata + Table + + + + Writes a MethodSpec table + + Writer + Metadata + Table + + + + Writes a GenericParamConstraint table + + Writer + Metadata + Table + + + + Writes a Document table + + Writer + Metadata + Table + + + + Writes a MethodDebugInformation table + + Writer + Metadata + Table + + + + Writes a LocalScope table + + Writer + Metadata + Table + + + + Writes a LocalVariable table + + Writer + Metadata + Table + + + + Writes a LocalConstant table + + Writer + Metadata + Table + + + + Writes a ImportScope table + + Writer + Metadata + Table + + + + Writes a StateMachineMethod table + + Writer + Metadata + Table + + + + Writes a CustomDebugInformation table + + Writer + Metadata + Table + + + + flags + + + + + Preserves all rids in the TypeRef table + + + + + Preserves all rids in the TypeDef table + + + + + Preserves all rids in the Field table + + + + + Preserves all rids in the Method table + + + + + Preserves all rids in the Param table + + + + + Preserves all rids in the MemberRef table + + + + + Preserves all rids in the StandAloneSig table + + + + + Preserves all rids in the Event table + + + + + Preserves all rids in the Property table + + + + + Preserves all rids in the TypeSpec table + + + + + Preserves all rids in the MethodSpec table + + + + + Preserves all method rids, i.e., Method, MemberRef and + MethodSpec rids. + + + + + Preserves all rids in the following tables: TypeRef, TypeDef, + Field, Method, Param, MemberRef, StandAloneSig, + Event, Property, TypeSpec, MethodSpec + + + + + Preserves all offsets in the #Strings heap (the original #Strings heap will be saved + in the new file). Type names, field names, and other non-user strings are stored + in the #Strings heap. + + + + + Preserves all offsets in the #US heap (the original #US heap will be saved + in the new file). User strings (referenced by the ldstr instruction) are stored in + the #US heap. + + + + + Preserves all offsets in the #Blob heap (the original #Blob heap will be saved + in the new file). Custom attributes, signatures and other blobs are stored in the + #Blob heap. + + + + + Preserves the extra data that is present after the original signature in the #Blob + heap. This extra data shouldn't be present but might be present if an obfuscator + has added this extra data and is eg. using it to decrypt stuff. + + + + + Preserves as much as possible + + + + + The original method body's max stack field should be used and a new one should not + be calculated. + + + + + Always create the #GUID heap even if it's empty + + + + + Always create the #Strings heap even if it's empty + + + + + Always create the #US heap even if it's empty + + + + + Always create the #Blob heap even if it's empty + + + + + Sort the InterfaceImpl table the same way Roslyn sorts it. Roslyn doesn't sort it + according to the ECMA spec, see https://github.com/dotnet/roslyn/issues/3905 + + + + + Don't write method bodies + + + + + Don't write .NET resources + + + + + Don't write field data + + + + + Serialized type names stored in custom attributes are optimized if the types + exist in the core library (eg. mscorlib/System.Private.CoreLib). + Instead of storing type-name + assembly-name, only type-name is stored. This results in + slightly smaller assemblies. +
+
+ If it's a type in the current module, the type name is optimized and no assembly name is stored in the custom attribute. +
+
+ This is disabled by default. It's safe to enable if the reference core assembly + is the same as the runtime core assembly (eg. it's mscorlib.dll and .NET Framework, + but not .NET Core / .NET Standard). +
+
+ + + Metadata heaps event args + + + + + Gets the metadata writer + + + + + Gets all heaps + + + + + Constructor + + Metadata writer + All heaps + + + + options + + + + + Gets/sets the options. This is never null. + + + + + Gets/sets the debug (portable PDB) options. This is never null. + + + + + Gets/sets the options. This is never null. + + + + + Gets/sets the debug (portable PDB) options. This is never null. + + + + + Various options + + + + + Extra heaps to add to the metadata. Also see and + + + + + Raised after all heaps have been added. The caller can sort the list if needed + + + + + Preserves the original order of heaps, and optionally adds all custom heaps to . + + Original module with the heaps + If true, all custom streams are added to + + + + Default constructor + + + + + Constructor + + Flags + + + + Constructor + + Meta data header options + + + + Constructor + + Meta data header options + Flags + + + + Portable PDB metadata kind + + + + + No debugging metadata + + + + + Standalone / embedded portable PDB metadata + + + + + Metadata writer event args + + + + + Gets the metadata writer + + + + + Gets the event + + + + + Constructor + + Writer + Event + + + + Metadata writer progress event args + + + + + Gets the metadata writer + + + + + Gets the progress, 0.0 - 1.0 + + + + + Constructor + + Writer + Progress, 0.0 - 1.0 + + + + .NET meta data + + + + + Raised at various times when writing the metadata + + + + + Raised when the progress is updated + + + + + Gets/sets the logger + + + + + Gets the module + + + + + Gets the constants + + + + + Gets the method body chunks + + + + + Gets the .NET resources + + + + + Gets the MD header + + + + + Gets the tables heap. Access to this heap is not recommended, but is useful if you + want to add random table entries. + + + + + Gets the #Strings heap. Access to this heap is not recommended, but is useful if you + want to add random strings. + + + + + Gets the #US heap. Access to this heap is not recommended, but is useful if + you want to add random user strings. + + + + + Gets the #GUID heap. Access to this heap is not recommended, but is useful if you + want to add random GUIDs. + + + + + Gets the #Blob heap. Access to this heap is not recommended, but is useful if you + want to add random blobs. + + + + + Gets the #Pdb heap. It's only used if it's portable PDB metadata + + + + + Gets all exported methods + + + + + The public key that should be used instead of the one in . + + + + + Creates a instance + + Module + Constants list + Method bodies list + .NET resources list + Options + Debug metadata kind + A new instance + + + + + + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + Gets/sets the bit + + + + + If true, use the original Field RVAs. If it has no RVA, assume it's a new + field value and create a new Field RVA. + + + + + Gets the number of methods that will be written. + + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the new rid + + Value + Its new rid or 0 + + + + Gets the + + Method + The or null if is + null or not a method defined in this module. + + + + Gets a method's local variable signature token + + Method + Locals sig token or 0 + + + + Gets the where the resource data will be stored + + Embedded resource + A instance or null if + is invalid + + + + Gets the where the initial value is stored + + Field + A instance or null if + is invalid + + + + Called when an error is detected + + Error message + Optional message arguments + + + + Called to warn of something + + Warning message + Optional message arguments + + + + Raises + + Event + + + + Raises the progress event + + Base event + Sub progress + + + + Creates the .NET metadata tables + + + + + Updates each Method row's RVA column if it has any code + + + + + Updates the FieldRVA rows + + + + + Initializes all TypeDef, Field, Method, Event, + Property and Param rows. Other tables that are related to these six + tables are also updated. No custom attributes are written yet, though. Method bodies + aren't written either. + + + + + Writes TypeDef, Field, Method, Event, + Property and Param custom attributes and custom debug infos. + + + + + Adds the tokens of all methods in all vtables, if any + + + + + Adds the entry point. It's only needed if it's a since if it's + a , it will have already been added. + + + + + Sorts all unsorted tables except GenericParamConstraint and CustomAttribute + + + + + Initializes the GenericParamConstraint table + + + + + Inserts all custom attribute / custom debug info rows in the tables and sort them + + + + + Writes all method bodies + + + + + Checks whether a list is empty or whether it contains only nulls + + Any type + The list + true if the list is empty or if it contains only nulls, false otherwise + + + + + + + + + + Adds a + + Method signature + Original StandAloneSig token or 0 if none + Its new rid + + + + Adds a + + FIeld signature + Original StandAloneSig token or 0 if none + Its new rid + + + + Adds a + + Value + Its encoded token + + + + Adds a + + Value + Its encoded token + + + + Adds a + + Value + Its encoded token + + + + Adds a + + Value + Its encoded token + + + + Adds a + + Value + Its encoded token + + + + Adds a + + Value + Its encoded token + + + + Adds a NestedType row + + Nested type + Declaring type + + + + Adds a Module row + + Module + Its new rid + + + + Adds a ModuleRef row + + Module ref + Its new rid + + + + Adds an AssemblyRef row + + Assembly ref + Its new rid + + + + Adds an Assembly row + + Assembly + The public key that should be used + Its new rid + + + + Adds generic parameters + + New token of owner + All generic params + + + + Adds a generic param + + New token of owner + Generic paramater + + + + Adds generic parameter constraints + + New rid of owner generic param + Its constraints + + + + Adds a generic parameter constraint + + New rid of owner generic param + Generic parameter constraint + + + + Adds a InterfaceImpl row + + New rid of owner + All interfaces + + + + Adds a FieldLayout row + + Owner field + + + + Adds a FieldMarshal row + + New owner token + Owner + + + + Adds a FieldRVA row + + The field + + + + Adds a ImplMap row + + New owner token + Owner + + + + Adds a Constant row + + New owner token + Owner + + + + Adds a DeclSecurity row + + New owner token + All DeclSecurity rows + + + + Adds MethodSemantics rows + + Event + + + + Adds MethodSemantics rows + + Property + + + + Adds a ClassLayout row + + Type + + + + Adds a File row + + File + Its new rid + + + + Adds a ExportedType row + + Exported type + Its new rid + + + + Gets a #Blob offset of a type signature + + Type sig + Extra data to append the signature if + is true. + #Blob offset + + + + Gets a #Blob offset of a calling convention signature + + Signature + #Blob offset + + + + Adds a CustomAttribute row + + Owner table + New owner rid + Onwer + + + + Adds a CustomDebugInformation row + + Owner table + New owner rid + Onwer + + + + Writes the portable PDB to . + + Output stream + Entry point token + Updated with the offset of the 20-byte PDB ID. The caller is responsible for initializing it with the PDB ID + + + + + + + + + + + + + Called before any other methods + + + + + Gets all s that should be saved in the meta data + + + + + Initializes TypeDef rids and creates raw rows, but does not initialize + any columns. + + + + + Allocates Field, Method, Property, Event, Param: + rid and raw row, but doesn't initialize the raw row. + Initializes TypeDef columns: FieldList, MethodList. + Initializes Method column: ParamList. + Initializes and . + + + + + Adds a . Its custom attributes are also added. + + Type reference + Its new rid + + + + Adds a . Its custom attributes are also added. + + Type spec + Its new rid + + + + Adds a . Its custom attributes are also added. + + Member ref + Its new rid + + + + Adds a . Its custom attributes are also added. + + Stand alone sig + Its new rid + + + + Adds a . Its custom attributes are also added. + + Method spec + Its new rid + + + + Called before sorting the CustomAttribute table. This is the last time anything + can be inserted into this table. + + + + + Called after everything has been initialized. The sub class can initialize more + rows if necessary or do nothing. After this method has been called, nothing else + can be added. + + + + + Should be called before all chunks get an RVA + + + + + + + + + + + + + + + + + Sorts the s + + All s + A sorted list + + + + All events + + + + + Creating the tables has just begun + + + + + Before allocating all TypeDef RIDs + + + + + Before allocating all MemberDef RIDs + + + + + The rids of types, fields, methods, events, properties and parameters are + now known. + + + + + The tables and rows of all types, fields, methods, events, properties and parameters + have been initialized. Method body RVAs are still not known, and no method has been + written yet. + + + + + Before sorting most tables + + + + + Most of the tables that should be sorted have been sorted. The CustomAttribute + table is still unsorted since it's not been created yet. + + + + + Custom attributes of all types, fields, methods, events, properties and parameters + have now been written. + + + + + All resources are about to be added to the .NET resources table + + + + + All resources have been added to the .NET resources table + + + + + All method bodies are about to be written + + + + + All method bodies have been written. Their RVAs are still not known. + + + + + All tables are now sorted, including the CustomAttribute table. + + + + + All tables have been created and all rows populated. The only columns that haven't + been initialized yet are the ones that are RVAs. + + + + + options + + + + + Default version string + + + + + Default header signature + + + + + MD header signature. Default value is + + + + + Major version. Default is 1. MS' CLR supports v0.x (x >= 19) and v1.1, nothing else. + + + + + Minor version. Default is 1. + + + + + Reserved and should be 0. + + + + + Version string. Default is . It's stored as a + zero-terminated UTF-8 string. Length should be <= 255 bytes. + + + + + Storage flags should be 0 + + + + + Reserved and should be 0 + + + + + Creates portable PDB v1.0 options + + + + + + Meta data header. IMAGE_COR20_HEADER.Metadata points to this header. + + + + + + + + + + + Gets/sets the heaps + + + + + Default constructor + + + + + Constructor + + Options + + + + + + + + + + + + + + + + Method body chunk + + + + + + + + + + + Gets the code + + + + + Gets the extra sections (exception handlers) or null + + + + + Gets the token of the locals + + + + + true if it's a fat body + + + + + true if it's a tiny body + + + + + true if there's an extra section + + + + + Constructor + + Code + + + + Constructor + + Code + Extra sections or null + + + + Constructor + + Code + Extra sections or null + Token of locals + + + + Gets the approximate size of the method body (code + exception handlers) + + + + + + + + + + + + + + + + + + + + + + + Stores all method body chunks + + + + + + + + + + + Gets the number of bytes saved by re-using method bodies + + + + + Constructor + + true if bodies can be shared + + + + Adds a and returns the one that has been cached + + The method body + The cached method body + + + Removes the specified method body from this chunk + The method body + if the method body is removed + + + + + + + + + + + + + + + + Returns tokens of token types, strings and signatures + + + + + Gets the token of + + A token type or a string or a signature + The token + + + + Gets a StandAloneSig token + + All locals + The original token or 0 if none + A StandAloneSig token or 0 if is + empty. + + + + Writes CIL method bodies + + + + + Gets the code as a byte array. This is valid only after calling . + The size of this array is not necessarily a multiple of 4, even if there are exception + handlers present. See also + + + + + Gets the extra sections (exception handlers) as a byte array or null if there + are no exception handlers. This is valid only after calling + + + + + Gets the token of the locals + + + + + Constructor + + Helps this instance + The CIL method body + + + + Constructor + + Helps this instance + The CIL method body + Keep the original max stack value that has been initialized + in + + + + Writes the method body + + + + + Gets the code and (possible) exception handlers in one array. The exception handlers + are 4-byte aligned. + + The code and any exception handlers + + + + + + + + + + + + + + + + + + + + + + + + + Base class of all CIL method body writers + + + + + + + + + + + true if there was at least one error + + + + + Constructor + + All instructions + All exception handlers + + + + Called when an error is detected (eg. a null pointer). The error can be + ignored but the method won't be valid. + + Error message + + + + Called when an error is detected (eg. a null pointer). The error can be + ignored but the method won't be valid. + + Error message + + + + Gets max stack value + + + + + Gets the offset of an instruction + + The instruction + The offset or 0 if is null or not + present in the list of all instructions. + + + + Initializes instruction offsets and returns the total code size + + Size of code + + + + Gets the size of an instruction + + The instruction + Size of the instruction in bytes + + + + Writes all instructions to at its current offset + + The instruction writer + Number of bytes written + + + + Gets the current offset in the instruction stream. This offset is relative to + the first written instruction. + + The instruction writer + Current offset, relative to the first written instruction + + + + Writes an instruction + + The instruction writer + The instruction + + + + Writes an instruction's opcode + + The instruction writer + The instruction + + + + Writes an instruction's operand + + The instruction writer + The instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes an operand + + Instruction writer + Instruction + + + + Writes a operand + + Instruction writer + Instruction + + + + Writes a operand + + Instruction writer + Instruction + + + + Writes a operand + + Instruction writer + Instruction + + + + Writes a operand + + Instruction writer + Instruction + + + + options + + + + + Constructor + + The module + + + + Writes a .NET PE file. See also + + + + + + + + + + + Gets/sets the writer options. This is never null + + + + + Gets all s. The reloc section must be the last section, so use if you need to append a section + + + + + Adds to the sections list, but before the reloc section which must be last + + New section to add to the list + + + + Gets the .text section + + + + + Gets the .sdata section + + + + + Gets the .rsrc section or null if none + + + + + Gets the .reloc section + + + + + Gets the PE headers + + + + + Gets the IAT or null if there's none + + + + + Gets the .NET header + + + + + Gets the import directory or null if there's none + + + + + Gets the startup stub or null if there's none + + + + + Gets the reloc directory or null if there's none + + + + + Constructor + + The module + + + + Constructor + + The module + Options or null + + + + + + + + + + Module writer event args + + + + + Gets the writer ( or ) + + + + + Gets the event + + + + + Constructor + + Writer + Event + + + + Module writer progress event args + + + + + Gets the writer ( or ) + + + + + Gets the progress, 0.0 - 1.0 + + + + + Constructor + + Writer + Progress, 0.0 - 1.0 + + + + Content ID + + + + + Gets the GUID + + + + + Gets the timestamp + + + + + Constructor + + Guid + Timestamp + + + + Event handler + + Event args type + Sender + Event args + + + + PDB writer options + + + + + No bit is set + + + + + Don't use Microsoft.DiaSymReader.Native. This is a NuGet package with an updated Windows PDB reader/writer implementation, + and if it's available at runtime, dnlib will try to use it. If this option is set, dnlib won't use it. + You have to add a reference to the NuGet package if you want to use it, dnlib has no reference to the NuGet package. + + This is only used if it's a Windows PDB file. + + + + + Don't use diasymreader.dll's PDB writer that is shipped with .NET Framework. + + This is only used if it's a Windows PDB file. + + + + + Create a deterministic PDB file and add a debug directory entry to the PE file. + + It's ignored if the PDB writer doesn't support it. + + + + + Hash the PDB file and add a PDB checksum debug directory entry to the PE file. + + It's ignored if the PDB writer doesn't support it. + + + + + Common module writer options base class + + + + + Raised at various times when writing the file. The listener has a chance to modify + the file, eg. add extra metadata, encrypt methods, etc. + + + + + Raised when the progress is updated + + + + + Gets/sets the logger. If this is null, any errors result in a + being thrown. To disable this behavior, either + create your own logger or use . + + + + + Gets/sets the writer logger. If this is null, use + . + + + + + Gets/sets the options. This is never null. + + + + + Gets/sets the options. This is never null. + + + + + Gets/sets the options. This is never null. + + + + + If true, Win32 resources aren't written to the output + + + + + Gets/sets the Win32 resources. If this is null, use the module's + Win32 resources if any. + + + + + true to delay sign the assembly. Initialize to the + public key to use, and don't initialize . To generate the + public key from your strong name key file, execute sn -p mykey.snk mypublickey.snk + + + + + Gets/sets the strong name key. When you enhance strong name sign an assembly, + this instance's HashAlgorithm must be initialized to its public key's HashAlgorithm. + You should call + to initialize this property if you use normal strong name signing. + You should call + or + to initialize this property if you use enhanced strong name signing. + + + + + Gets/sets the new public key that should be used. If this is null, use + the public key generated from . If it is also null, + use the module's Assembly's public key. + You should call + or + to initialize this property if you use enhanced strong name signing. + + + + + true if method bodies can be shared (two or more method bodies can share the + same RVA), false if method bodies can't be shared. Don't enable it if there + must be a 1:1 relationship with method bodies and their RVAs. + This is enabled by default and results in smaller files. + + + + + true if the PE header CheckSum field should be updated, false if the + CheckSum field isn't updated. + + + + + true if it's a 64-bit module, false if it's a 32-bit or AnyCPU module. + + + + + Gets/sets the module kind + + + + + true if it should be written as an EXE file, false if it should be + written as a DLL file. + + + + + Set it to true to enable writing a PDB file. Default is false (a PDB file + won't be written to disk). + + + + + PDB writer options. This property is ignored if is false. + + + + + PDB file name. If it's null a PDB file with the same name as the output assembly + will be created but with a PDB extension. must be true or + this property is ignored. + + + + + PDB file name stored in the debug directory, or null to use + + + + + PDB stream. If this is initialized, then you should also set + to the name of the PDB file since the file name must be written to the PE debug directory. + must be true or this property is ignored. + + + + + Gets the PDB content id (portable PDBs). The argument is the PDB stream with the PDB ID zeroed out, + and the 2nd argument is the default timestamp. + This property is ignored if a deterministic PDB file is created or if the PDB checksum is calculated. + + + + + PDB checksum algorithm + + + + + true if an .mvid section should be added to the assembly. Not used by native module writer. + + + + + Constructor + + The module + + + + Initializes and + for normal strong name signing. + + Module + Signature strong name key pair + + + + Initializes and + for enhanced strong name signing (without key migration). See + http://msdn.microsoft.com/en-us/library/hh415055.aspx + + Module + Signature strong name key pair + Signature public key + + + + Initializes and + for enhanced strong name signing (with key migration). See + http://msdn.microsoft.com/en-us/library/hh415055.aspx + + Module + Signature strong name key pair + Signature public key + Identity strong name key pair + Identity public key + + + + Module writer base class + + + + Default alignment of all constants + + + Default alignment of all method bodies + + + Default alignment of all .NET resources + + + Default alignment of the .NET metadata + + + Default Win32 resources alignment + + + Default strong name signature alignment + + + Default COR20 header alignment + + + See + + + See + + + See + + + See + + + See + + + See + + + Offset where the module is written. Usually 0. + + + Debug directory + + + + Strong name signature + + + + + Returns the module writer options + + + + + Gets the destination stream + + + + + Gets the constants + + + + + Gets the method bodies + + + + + Gets the .NET resources + + + + + Gets the .NET metadata + + + + + Gets the Win32 resources or null if there's none + + + + + Gets the strong name signature or null if there's none + + + + + Gets all s. The reloc section must be the last section, so use if you need to append a section + + + + + Adds to the sections list, but before the reloc section which must be last + + New section to add to the list + + + + Gets the .text section + + + + + Gets the .rsrc section or null if there's none + + + + + Gets the debug directory or null if there's none + + + + + true if this is a , false if + this is a . + + + + + null if we're not writing a PDB + + + + + Writes the module to a file + + File name. The file will be truncated if it exists. + + + + Writes the module to a + + Destination stream + + + + Returns the module that is written + + + + + Writes the module to . Event listeners and + have been initialized when this method is called. + + Number of bytes written + + + + Creates the strong name signature if the module has one of the strong name flags + set or wants to sign the assembly. + + + + + Creates the .NET metadata chunks (constants, method bodies, .NET resources, + the metadata, and Win32 resources) + + + + + + Gets the Win32 resources that should be written to the new image or null if none + + + + + Calculates and of all s + + All chunks + Starting file offset + Starting RVA + File alignment + Section alignment + + + + Writes all chunks to + + The writer + All chunks + File offset of first chunk + File alignment + + + + Strong name sign the assembly + + Strong name signature offset + + + + Creates the debug directory if a PDB file should be written + + + + + Write the PDB file. The caller should send the PDB events before and after calling this + method. + + + + + Gets the timestamp stored in the PE header + + + + + + Raises a writer event + + Event + + + + + + + + + + Logs an error message + + Format + Format args + + + + Logs a warning message + + Format + Format args + + + + All / events + + + + + Writing has just begun + + + + + All PE sections have been created + + + + + All chunks have been created + + + + + All chunks have been added to their sections + + + + + Original event: . + Creating the metadata tables has just begun + + + + + Original event: . + Before allocating all TypeDef RIDs + + + + + Original event: . + Before allocating all MemberDef RIDs + + + + + Original event: . + The rids of types, fields, methods, events, properties and parameters are + now known. + + + + + Original event: . + The tables and rows of all types, fields, methods, events, properties and parameters + have been initialized. Method body RVAs are still not known, and no method has been + written yet. + + + + + Original event: . + Before sorting most tables + + + + + Original event: . + Most of the tables that should be sorted have been sorted. The CustomAttribute + table is still unsorted since it's not been created yet. + + + + + Original event: . + Custom attributes of all types, fields, methods, events, properties and parameters + have now been written. + + + + + Original event: . + All resources are about to be added to the .NET resources table + + + + + Original event: . + All resources have been added to the .NET resources table + + + + + Original event: . + All method bodies are about to be written + + + + + Original event: . + All method bodies have been written. Their RVAs are still not known. + + + + + Original event: . + All tables are now sorted, including the CustomAttribute table. + + + + + Original event: . + All tables have been created and all rows populated. The only columns that haven't + been initialized yet are the ones that are RVAs. + + + + + This event occurs before the PDB file is written. This event occurs even if no PDB file + will be written. + + + + + The PDB file has been written. This event occurs even if no PDB file has been written. + + + + + This event occurs just before all RVAs and file offsets of the chunks are calculated. + + + + + File offsets and RVAs of all chunks are now known. This includes method body and + field RVAs. Nothing has been written to the destination stream yet. + + + + + This event occurs before all chunks are written to the destination stream, and after + all RVAs and file offsets are known. + + + + + All chunks have been written to the destination stream. + + + + + This event occurs before the strong name signature is calculated. This event + occurs even if the assembly isn't strong name signed. + + + + + This event occurs after the strong name signature has been calculated. This event + occurs even if the assembly isn't strong name signed. + + + + + This event occurs before the checksum in the PE header is updated. This event + occurs even if the checksum isn't updated. + + + + + This event occurs after the checksum in the PE header has been updated. This event + occurs even if the checksum isn't updated. + + + + + Writing has ended + + + + + Thrown when the module writer encounters an unrecoverable error + + + + + Default constructor + + + + + Constructor + + Error message + + + + Constructor + + Error message + Other exception + + + + Constructor + + + + + + + options + + + + + If true, any extra data after the PE data in the original file is also saved + at the end of the new file. Enable this option if some protector has written data to + the end of the file and uses it at runtime. + + + + + If true, keep the original Win32 resources + + + + + Constructor + + Module + true to optimize the image size so it's as small as possible. + Since the file can contain native methods and other native data, we re-use the + original file when writing the new file. If is true, + we'll try to re-use the old method body locations in the original file and + also try to fit the new metadata in the old metadata location. + + + + A module writer that supports saving mixed-mode modules (modules with native code). + The original image will be re-used. See also + + + + The original .NET module + + + All options + + + + Any extra data found at the end of the original file. This is null if there's + no extra data or if is + false. + + + + The original PE sections and their data + + + Original PE image + + + New sections we've added and their data + + + New .text section where we put some stuff, eg. .NET metadata + + + The new COR20 header + + + + New .rsrc section where we put the new Win32 resources. This is null if there + are no Win32 resources or if + is true + + + + + Offset in of the PE checksum field. + + + + + Original PE section + + + + PE section + + + PE section data + + + + Constructor + + PE section + + + + + + + + + + Gets the module + + + + + + + + + + + Gets/sets the writer options. This is never null + + + + + Gets all s + + + + + Gets the original PE sections and their data + + + + + Gets the .text section + + + + + Gets the .rsrc section or null if there's none + + + + + Constructor + + The module + Options or null + + + + + + + + + + Gets the raw section data of the image. The sections are saved in + . + + + + + Creates the PE header "section" + + + + + Saves any data that is appended to the original PE file + + + + + true if image is 64-bit + + + + + Updates the PE header and COR20 header fields that need updating. All sections are + also updated, and the new ones are added. + + + + + Converts to a file offset in the destination stream + + RVA + + + + Gets the entry point + + Updated with entry point (either a token or RVA of native method) + true if it's a managed entry point or there's no entry point, + false if it's a native entry point + + + + .NET resources + + + + + + + + + + + Gets offset of next resource. This offset is relative to the start of + the .NET resources and is always aligned. + + + + + Constructor + + Alignment of all resources + + + + Adds a resource + + The resource data + The resource data + + + + + + + + + + + + + + + + Does not preserve metadata tokens + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Pdb heap + + + + + + + + Gets the PDB ID. This is always 20 bytes in size. + + + + + Gets/sets the entry point token + + + + + Gets the offset of the 20-byte PDB ID + + + + + Gets/sets the referenced type system tables + + + + + Gets the type system table rows. This table has 64 elements. + + + + + Constructor + + + + + + + + + + + options + + + + + Default DLL characteristics + + + + + Default subsystem value + + + + + Default major linker version. Roslyn C# defaults to 0x30, and Roslyn VB defaults to 0x50. + + + + + Default minor linker version + + + + + IMAGE_FILE_HEADER.Machine value + + + + + IMAGE_FILE_HEADER.TimeDateStamp value + + + + + IMAGE_FILE_HEADER.PointerToSymbolTable value + + + + + IMAGE_FILE_HEADER.NumberOfSymbols value + + + + + IMAGE_FILE_HEADER.Characteristics value. bit + is ignored and set/cleared depending on whether it's a EXE or a DLL file. + + + + + IMAGE_OPTIONAL_HEADER.MajorLinkerVersion value + + + + + IMAGE_OPTIONAL_HEADER.MinorLinkerVersion value + + + + + IMAGE_OPTIONAL_HEADER.ImageBase value + + + + + IMAGE_OPTIONAL_HEADER.SectionAlignment value + + + + + IMAGE_OPTIONAL_HEADER.FileAlignment value + + + + + IMAGE_OPTIONAL_HEADER.MajorOperatingSystemVersion value + + + + + IMAGE_OPTIONAL_HEADER.MinorOperatingSystemVersion value + + + + + IMAGE_OPTIONAL_HEADER.MajorImageVersion value + + + + + IMAGE_OPTIONAL_HEADER.MinorImageVersion value + + + + + IMAGE_OPTIONAL_HEADER.MajorSubsystemVersion value + + + + + IMAGE_OPTIONAL_HEADER.MinorSubsystemVersion value + + + + + IMAGE_OPTIONAL_HEADER.Win32VersionValue value + + + + + IMAGE_OPTIONAL_HEADER.Subsystem value + + + + + IMAGE_OPTIONAL_HEADER.DllCharacteristics value + + + + + IMAGE_OPTIONAL_HEADER.SizeOfStackReserve value + + + + + IMAGE_OPTIONAL_HEADER.SizeOfStackCommit value + + + + + IMAGE_OPTIONAL_HEADER.SizeOfHeapReserve value + + + + + IMAGE_OPTIONAL_HEADER.SizeOfHeapCommit value + + + + + IMAGE_OPTIONAL_HEADER.LoaderFlags value + + + + + IMAGE_OPTIONAL_HEADER.NumberOfRvaAndSizes value + + + + + Creates a new time date stamp using current time + + A new time date stamp + + + + DOS and PE headers + + + + + Gets/sets the native entry point + + + + + Gets/sets the COR20 header + + + + + Gets/sets the IAT + + + + + Gets/sets the + + + + + Gets/sets the Win32 resources + + + + + Gets/sets the relocation directory + + + + + Gets/sets the debug directory + + + + + Gets the image base + + + + + Gets/sets a value indicating whether this is a EXE or a DLL file + + + + + + + + + + + Gets the section alignment + + + + + Gets the file alignment + + + + + Gets/sets the s + + + + + Default constructor + + + + + Constructor + + Options + + + + + + + + + + + + + + + + Calculates the PE checksum and writes it to the checksum field + + Writer + Length of PE file + + + + A PE section + + + + + Gets the name + + + + + Gets the Characteristics + + + + + true if this is a code section + + + + + true if this is an initialized data section + + + + + true if this is an uninitialized data section + + + + + Constructor + + Section name + Section characteristics + + + + Writes the section header to at its current position. + Returns aligned virtual size (aligned to ) + + Writer + File alignment + Section alignment + Current + + + + Preserves metadata tokens + + + + + Its real rid + + + + + Its logical rid or real rid. If the ptr table exists (eg. MethodPtr), then it's + an index into it, else it's the real rid. + + + + + Gets total number of defs in the list. It does not necessarily return + the table size. Use for that. + + + + + Gets the number of rows that need to be created in the table + + + + + Returns true if the ptr table (eg. MethodPtr) is needed + + + + + Sorts the table + + Comparer + + + + Adds a def. must be called after adding the last def. + + The def + Collection position + + + + Must be called after 'ing the last def + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reserves rows in TypeRef, MemberRef, StandAloneSig, + TypeSpec and MethodSpec where we will store the original rows + to make sure they get the same rid. Any user created rows will be stored at + the end of each table. + + + + + Adds any non-referenced rows that haven't been added yet but are present in + the original file. If there are any non-referenced rows, it's usually a sign + that an obfuscator has encrypted one or more methods or that it has added + some rows it uses to decrypt something. + + + + + + + + Re-uses all Field rows which aren't owned by any type due to the fields + having been deleted by the user. The reason we must do this is that the + FieldPtr and Field tables must be the same size. + + + + + Re-uses all Method rows which aren't owned by any type due to the methods + having been deleted by the user. The reason we must do this is that the + MethodPtr and Method tables must be the same size. + + + + + Re-uses all Param rows which aren't owned by any type due to the params + having been deleted by the user. The reason we must do this is that the + ParamPtr and Param tables must be the same size. + This method must be called after since + this method will create more methods at the end of the Method table. + + + + + Re-uses all Event rows which aren't owned by any type due to the events + having been deleted by the user. The reason we must do this is that the + EventPtr and Event tables must be the same size. + + + + + Re-uses all Property rows which aren't owned by any type due to the properties + having been deleted by the user. The reason we must do this is that the + PropertyPtr and Property tables must be the same size. + + + + + Creates a dummy TypeDef at the end of the TypeDef table that will own + dummy methods and fields. These dummy methods and fields are only created if the size + of the ptr table is less than the size of the non-ptr table (eg. size MethodPtr table + is less than size Method table). The only reason the ptr table would be smaller than + the non-ptr table is when some field/method has been deleted and we must preserve + all method/field rids. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Relocations directory + + + + + + + + + + + Constructor + + Machine + + + + + + + + + + + + + + + + Adds a relocation + + RVA of location + + + + Adds a relocation + + Chunk or null. If it's null, is the RVA + Offset relative to the start of , or if is null, this is the RVA + + + + Length of section + + + + + Section characteristics + + + + + Constructor + + Length of section + Section characteristics + + + + Calculates the optional header section sizes + + + + + Helps map s to tokens + + + + + Returns a TypeDefOrRef encoded token + + A TypeDefOrRef type + + + + Writes signatures + + + + + Write a signature + + Helper + The type + The signature as a byte array + + + + Write a signature + + Helper + The signature + The signature as a byte array + + + + + + + Stores the instruction that jumps to _CorExeMain/_CorDllMain + + + + + Gets/sets the + + + + + Gets/sets the + + + + + + + + + + + Gets the address of the JMP instruction + + + + + Constructor + + Reloc directory + Machine + Error logger + + + + + + + + + + + + + + + + #Strings heap + + + + + + + + Populates strings from an existing (eg. to preserve + string offsets) + + The #Strings stream with the original content + + + + Adds a string to the #Strings heap. The returned value is not necessarily an offset in + the #Strings heap. Call to get the offset. + + The string + The offset id. This is not a #Strings offset. Call to get the #Strings offset + + + + Gets the offset of a string in the #Strings heap. This method can only be called after + all strings have been added. + + Offset id returned by + + + + + Adds a string to the #Strings heap, but does not re-use an existing position + + The string + The offset of the string in the #Strings heap + + + + + + + + + + + + + + + + + + + Strong name signature chunk + + + + + + + + + + + Constructor + + Size of strong name signature + + + + + + + + + + + + + + + + options + + + + + Should be 0 + + + + + Major version number. Default is 2. Valid versions are v1.0 (no generics), + v1.1 (generics are supported), or v2.0 (recommended). + + + + + Minor version number. Default is 0. + + + + + Force #- or #~ stream. Default value is null and recommended because the correct + tables stream will be used. true will force #- (Edit N' Continue) + stream, and false will force #~ (normal compressed) stream. + + + + + Extra data to write + + + + + true if there are deleted s, s, + s, s, s and/or + s. + + + + + Creates portable PDB v1.0 options + + + + + + Contains all .NET tables + + + + + + + + + + + All tables + + + + + + + + + + + true if the Edit 'N Continue name will be used (#-) + + + + + true if any rows have been deleted (eg. a deleted TypeDef, Method, Field, etc. + Its name has been renamed to _Deleted). + + + + + true if #Strings heap size > 0xFFFF + + + + + true if #GUID heap size > 0xFFFF + + + + + true if #Blob heap size > 0xFFFF + + + + + Constructor + + Metadata owner + Options + + + + + + + + + + + + + + + + Calculates the length. This will set all MD tables to read-only. + + + + + + + + + + + Re-uses existing chunks to save space + + Chunk type + + + + Default constructor + + + + + Constructor + + Compares the chunk type + + + + + + + Adds a if not already present + + The chunk to add or null if none + Chunk alignment + The original input if it wasn't present, or the cached one + + + + #US heap + + + + + + + + Populates strings from an existing (eg. to preserve + string tokens) + + The #US stream with the original content + + + + Adds a string to the #US heap + + The string + The offset of the string in the #US heap + + + + Adds a string to the #US heap + + The string + The offset of the string in the #US heap + + + + + + + + + + + + + + + + + + + Writes Win32 resources + + + + + + + + + + + Constructor + + Win32 resources + + + + Returns the and of a + . must have been called. + + A + Updated with the file offset + Updated with the RVA + true if is valid and + and have been updated. false + if is not part of the Win32 resources. + + + + Returns the of a . + must have been called. + + A + The file offset or 0 if is invalid + + + + Returns the of a . + must have been called. + + A + The RVA or 0 if is invalid + + + + Returns the and of a + . must have been called. + + A + Updated with the file offset + Updated with the RVA + true if is valid and + and have been updated. false + if is not part of the Win32 resources. + + + + Returns the of a . + must have been called. + + A + The file offset or 0 if is invalid + + + + Returns the of a . + must have been called. + + A + The RVA or 0 if is invalid + + + + Returns the and of a + . must have been called. + + A + Updated with the file offset + Updated with the RVA + true if is valid and + and have been updated. false + if is not part of the Win32 resources. + + + + Returns the of a . + must have been called. + + A + The file offset or 0 if is invalid + + + + Returns the of a . + must have been called. + + A + The RVA or 0 if is invalid + + + + Returns the and of a + 's name. must have been + called. + + The name of a + Updated with the file offset + Updated with the RVA + true if is valid and + and have been updated. false + if is not part of the Win32 resources. + + + + Returns the of a 's name. + must have been called. + + The name of a + The file offset or 0 if is invalid + + + + Returns the of a 's name. + must have been called. + + The name of a + The RVA or 0 if is invalid + + + + + + + + + + + + + + + + A that reads from a byte array + + + + + The filename or null if the data is not from a file + + + + + Gets the total length of the data + + + + + Creates a instance + + Data + The filename or null if the data is not from a file + + + + + Creates a data reader + + Data + + + + + Creates a data reader + + Offset of data + Length of data + + + + + This method doesn't need to be called since a has nothing that must be cleaned up + + + + + Thrown by a when it can't read data or if the caller tries to set an invalid offset + + + + + Reads data + + + + + Gets the start offset of the data + + + + + Gets the end offset of the data, not inclusive + + + + + Gets the total length of the data + + + + + Gets the current offset. This is between and (inclusive) + + + + + Gets/sets the position relative to + + + + + Gets the number of bytes that can be read without throwing an exception + + + + + Constructor + + Stream + Start offset of data + Length of data + + + + Resets the reader so it points to the start of the data + + + + + Creates a new reader that can access a smaller part of this reader + + Start position relative to + Length of data + + + + + Creates a new reader that can access everything from to the end of the data + + Start position relative to + + + + + Creates a new reader that can access a smaller part of this reader + + Start position relative to + Length of data + + + + + Creates a new reader that can access everything from to the end of the data + + Start position relative to + + + + + Checks if it's possible to read bytes + + Length of data + + + + + Checks if it's possible to read bytes + + Length of data + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a + + + + + + Reads a UTF-16 encoded + + Number of characters to read + + + + + Reads bytes + + Destination pointer + Number of bytes to read + + + + Reads bytes + + Destination array + Destination index + Number of bytes to read + + + + Reads bytes + + Number of bytes to read + + + + + Reads a compressed + + Uncompressed + + + + + Reads a compressed + + + + + + Reads a compressed + + Uncompressed + + + + + Reads a compressed + + + + + + Reads a 7-bit encoded integer + + + + + + Reads a 7-bit encoded integer + + + + + + Reads a serialized UTF-8 string + + + + + + Reads a serialized string + + Encoding + + + + + Returns all data without updating the current position + + + + + + Returns the remaining data + + + + + + Reads all bytes until a terminating byte or returns null if wasn't found. + If found, the current offset is incremented by the length of the returned data + + Terminating byte value + + + + + Reads a zero-terminated UTF-8 string or returns null if the string couldn't be read. + If successful, the current offset is incremented past the terminating zero. + + + + + + Reads a zero-terminated string or returns null if the string couldn't be read. + If successful, the current offset is incremented past the terminating zero. + + Encoding + + + + + Reads a UTF-8 encoded string + + Number of bytes to read (not characters) + + + + + Reads a string + + Number of bytes to read (not characters) + Encoding + + + + + Creates a that can access this content. The caller doesn't have to dispose of the returned stream. + + + + + + Copies the data, starting from , to + + Destination + Number of bytes written + + + + Copies the data, starting from , to + + Destination + Temp buffer during writing + Number of bytes written + + + + Copies the data, starting from , to + + Destination + Number of bytes written + + + + Copies the data, starting from , to + + Destination + Temp buffer during writing + Number of bytes written + + + + Copies the data, starting from , to + + Destination + Number of bytes written + + + + Copies the data, starting from , to + + Destination + Temp buffer during writing + Number of bytes written + + + + Creates s that can read its data. + + This factory class is thread safe and its data can be read by on any thread. + + + + + The filename or null if the data is not from a file + + + + + Gets the total length of the data + + + + + Creates a data reader that can read all data + + + + + + Creates a data reader + + Offset of data + Length of data + + + + + Creates a data reader + + Offset of data + Length of data + + + + + Creates a data reader + + Offset of data + Length of data + + + + + Creates a data reader + + Offset of data + Length of data + + + + + Creates a data reader + + Stream + Offset of data + Length of data + + + + + Raised when all cached s created by this instance must be recreated + + + + + Disposes of this instance + + + + + This class is used by a . The instance + verifies that all input are valid before calling any methods in this class. + This class is thread safe. + + + + + Reads bytes + + Offset of data + Destination pointer + Number of bytes to read + + + + Reads bytes + + Offset of data + Destination array + Destination index + Number of bytes to read + + + + Reads a + + Offset of data + + + + + Reads a + + Offset of data + + + + + Reads a + + Offset of data + + + + + Reads a + + Offset of data + + + + + Reads a + + Offset of data + + + + + Reads a + + Offset of data + + + + + Reads a + + Offset of data + + + + + Reads a UTF-16 encoded + + Offset of data + Number of characters to read + + + + + Reads a string + + Offset of data + Length of string in bytes + Encoding + + + + + Gets the data offset of a byte or returns false if the byte wasn't found + + Offset of data + End offset of data (not inclusive) + Byte value to search for + Offset of the byte if found + + + + + Creates s + + + + + Creates a that reads from native memory + + Pointer to data + + + + + Creates a that reads from a byte array + + Data + + + + + Represents a file offset + + + + + Extension methods + + + + + Align up + + this + Alignment + + + + Align up + + this + Alignment + + + + Base class for classes needing to implement IFileSection + + + + + The start file offset of this section + + + + + Size of the section + + + + + + + + + + + Set to 's current position + + The reader + + + + Set according to 's current position + + The reader + + + + Represents a section in a file + + + + + Start offset of the section in the file + + + + + End offset of the section in the file. This is one byte after the last + valid offset in the section. + + + + + Creates s that read memory mapped data + + + + + The filename or null if the data is not from a file + + + + + Gets the total length of the data + + + + + Raised when all cached s created by this instance must be recreated + + + + + Creates a data reader + + Offset of data + Length of data + + + + + Cleans up and frees all allocated memory + + + + + true if memory mapped I/O is enabled + + + + + Call this to disable memory mapped I/O. This must only be called if no other code is + trying to access the memory since that could lead to an exception. + + + + + Creates s that read native memory + + + + + The filename or null if the data is not from a file + + + + + Gets the total length of the data + + + + + Creates a instance + + Pointer to data + Length of data + The filename or null if the data is not from a file + + + + + Creates a data reader + + Offset of data + Length of data + + + + + This method doesn't need to be called since this instance doesn't own the native memory + + + + + IMAGE_FILE_HEADER.Characteristics flags + + + + Relocation info stripped from file. + + + File is executable (i.e. no unresolved externel references). + + + Line nunbers stripped from file. + + + Local symbols stripped from file. + + + Agressively trim working set + + + App can handle >2gb addresses + + + + + + Bytes of machine word are reversed. + + + 32 bit word machine. + + + Debugging info stripped from file in .DBG file + + + If Image is on removable media, copy and run from the swap file. + + + If Image is on Net, copy and run from the swap file. + + + System File. + + + File is a DLL. + + + File should only be run on a UP machine + + + Bytes of machine word are reversed. + + + + IMAGE_OPTIONAL_HEADER.DllCharacteristics + + + + + + + + + + + + + + + + + + + Image can handle a high entropy 64-bit virtual address space. + + + DLL can move. + + + Code Integrity Image + + + Image is NX compatible + + + Image understands isolation and doesn't want it + + + Image does not use SEH. No SE handler may reside in this image + + + Do not bind this image. + + + Image should execute in an AppContainer + + + Driver uses WDM model + + + Image supports Control Flow Guard. + + + + + + + Interface for PE optional header classes + + + + + Returns the Magic field + + + + + Returns the MajorLinkerVersion field + + + + + Returns the MinorLinkerVersion field + + + + + Returns the SizeOfCode field + + + + + Returns the SizeOfInitializedData field + + + + + Returns the SizeOfUninitializedData field + + + + + Returns the AddressOfEntryPoint field + + + + + Returns the BaseOfCode field + + + + + Returns the BaseOfData field + + + + + Returns the ImageBase field + + + + + Returns the SectionAlignment field + + + + + Returns the FileAlignment field + + + + + Returns the MajorOperatingSystemVersion field + + + + + Returns the MinorOperatingSystemVersion field + + + + + Returns the MajorImageVersion field + + + + + Returns the MinorImageVersion field + + + + + Returns the MajorSubsystemVersion field + + + + + Returns the MinorSubsystemVersion field + + + + + Returns the Win32VersionValue field + + + + + Returns the SizeOfImage field + + + + + Returns the SizeOfHeaders field + + + + + Returns the CheckSum field + + + + + Returns the Subsystem field + + + + + Returns the DllCharacteristics field + + + + + Returns the SizeOfStackReserve field + + + + + Returns the SizeOfStackCommit field + + + + + Returns the SizeOfHeapReserve field + + + + + Returns the SizeOfHeapCommit field + + + + + Returns the LoaderFlags field + + + + + Returns the NumberOfRvaAndSizes field + + + + + Returns the DataDirectories field. This array contains exactly 16 elements. + + + + + Represents the IMAGE_DATA_DIRECTORY PE section + + + + + Returns the IMAGE_DATA_DIRECTORY.VirtualAddress field + + + + + Returns the IMAGE_DATA_DIRECTORY.Size field + + + + + Default constructor + + + + + Constructor + + PE file reader pointing to the start of this section + Verify section + Thrown if verification fails + + + + A IMAGE_DEBUG_DIRECTORY + + + + + Gets the characteristics (reserved) + + + + + Gets the timestamp + + + + + Gets the major version + + + + + Gets the minor version + + + + + Gets the type + + + + + Gets the size of data + + + + + RVA of the data + + + + + File offset of the data + + + + + Constructor + + PE file reader pointing to the start of this section + Verify section + Thrown if verification fails + + + + Image debug type, see IMAGE_DEBUG_TYPE_* in winnt.n + + + + + Contains PDB info + + + + + It's a deterministic (reproducible) PE file + + + + + Embedded portable PDB data + + + + + Checksum of the PDB file. 0 or more entries allowed. + + + + + Represents the IMAGE_DOS_HEADER PE section + + + + + File offset of the NT headers + + + + + Constructor + + PE file reader + Verify section + Thrown if verification fails + + + + Represents the IMAGE_FILE_HEADER PE section + + + + + Returns the IMAGE_FILE_HEADER.Machine field + + + + + Returns the IMAGE_FILE_HEADER.NumberOfSections field + + + + + Returns the IMAGE_FILE_HEADER.TimeDateStamp field + + + + + Returns the IMAGE_FILE_HEADER.PointerToSymbolTable field + + + + + Returns the IMAGE_FILE_HEADER.NumberOfSymbols field + + + + + Returns the IMAGE_FILE_HEADER.SizeOfOptionalHeader field + + + + + Returns the IMAGE_FILE_HEADER.Characteristics field + + + + + Constructor + + PE file reader pointing to the start of this section + Verify section + Thrown if verification fails + + + + Represents the IMAGE_NT_HEADERS PE section + + + + + Returns the IMAGE_NT_HEADERS.Signature field + + + + + Returns the IMAGE_NT_HEADERS.FileHeader field + + + + + Returns the IMAGE_NT_HEADERS.OptionalHeader field + + + + + Constructor + + PE file reader pointing to the start of this section + Verify section + Thrown if verification fails + + + + Creates an IImageOptionalHeader + + PE file reader pointing to the start of the optional header + Verify section + The created IImageOptionalHeader + Thrown if verification fails + + + + Represents the IMAGE_OPTIONAL_HEADER (32-bit) PE section + + + + + Returns the IMAGE_OPTIONAL_HEADER.Magic field + + + + + Returns the IMAGE_OPTIONAL_HEADER.MajorLinkerVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER.MinorLinkerVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER.SizeOfCode field + + + + + Returns the IMAGE_OPTIONAL_HEADER.SizeOfInitializedData field + + + + + Returns the IMAGE_OPTIONAL_HEADER.SizeOfUninitializedData field + + + + + Returns the IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint field + + + + + Returns the IMAGE_OPTIONAL_HEADER.BaseOfCode field + + + + + Returns the IMAGE_OPTIONAL_HEADER.BaseOfData field + + + + + Returns the IMAGE_OPTIONAL_HEADER.ImageBase field + + + + + Returns the IMAGE_OPTIONAL_HEADER.SectionAlignment field + + + + + Returns the IMAGE_OPTIONAL_HEADER.FileAlignment field + + + + + Returns the IMAGE_OPTIONAL_HEADER.MajorOperatingSystemVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER.MinorOperatingSystemVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER.MajorImageVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER.MinorImageVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER.MajorSubsystemVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER.MinorSubsystemVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER.Win32VersionValue field + + + + + Returns the IMAGE_OPTIONAL_HEADER.SizeOfImage field + + + + + Returns the IMAGE_OPTIONAL_HEADER.SizeOfHeaders field + + + + + Returns the IMAGE_OPTIONAL_HEADER.CheckSum field + + + + + Returns the IMAGE_OPTIONAL_HEADER.Subsystem field + + + + + Returns the IMAGE_OPTIONAL_HEADER.DllCharacteristics field + + + + + Returns the IMAGE_OPTIONAL_HEADER.SizeOfStackReserve field + + + + + Returns the IMAGE_OPTIONAL_HEADER.SizeOfStackCommit field + + + + + Returns the IMAGE_OPTIONAL_HEADER.SizeOfHeapReserve field + + + + + Returns the IMAGE_OPTIONAL_HEADER.SizeOfHeapCommit field + + + + + Returns the IMAGE_OPTIONAL_HEADER.LoaderFlags field + + + + + Returns the IMAGE_OPTIONAL_HEADER.NumberOfRvaAndSizes field + + + + + Returns the IMAGE_OPTIONAL_HEADER.DataDirectories field + + + + + Constructor + + PE file reader pointing to the start of this section + Total size of this optional header (from the file header) + Verify section + Thrown if verification fails + + + + Represents the IMAGE_OPTIONAL_HEADER64 PE section + + + + + Returns the IMAGE_OPTIONAL_HEADER64.Magic field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.MajorLinkerVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.MinorLinkerVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.SizeOfCode field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.SizeOfInitializedData field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.SizeOfUninitializedData field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.AddressOfEntryPoint field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.BaseOfCode field + + + + + Returns 0 since BaseOfData is not present in IMAGE_OPTIONAL_HEADER64 + + + + + Returns the IMAGE_OPTIONAL_HEADER64.ImageBase field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.SectionAlignment field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.FileAlignment field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.MajorOperatingSystemVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.MinorOperatingSystemVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.MajorImageVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.MinorImageVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.MajorSubsystemVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.MinorSubsystemVersion field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.Win32VersionValue field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.SizeOfImage field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.SizeOfHeaders field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.CheckSum field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.Subsystem field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.DllCharacteristics field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.SizeOfStackReserve field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.SizeOfStackCommit field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.SizeOfHeapReserve field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.SizeOfHeapCommit field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.LoaderFlags field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.NumberOfRvaAndSizes field + + + + + Returns the IMAGE_OPTIONAL_HEADER64.DataDirectories field + + + + + Constructor + + PE file reader pointing to the start of this section + Total size of this optional header (from the file header) + Verify section + Thrown if verification fails + + + + Represents the IMAGE_SECTION_HEADER PE section + + + + + Returns the human readable section name, ignoring everything after + the first nul byte + + + + + Returns the IMAGE_SECTION_HEADER.Name field + + + + + Returns the IMAGE_SECTION_HEADER.VirtualSize field + + + + + Returns the IMAGE_SECTION_HEADER.VirtualAddress field + + + + + Returns the IMAGE_SECTION_HEADER.SizeOfRawData field + + + + + Returns the IMAGE_SECTION_HEADER.PointerToRawData field + + + + + Returns the IMAGE_SECTION_HEADER.PointerToRelocations field + + + + + Returns the IMAGE_SECTION_HEADER.PointerToLinenumbers field + + + + + Returns the IMAGE_SECTION_HEADER.NumberOfRelocations field + + + + + Returns the IMAGE_SECTION_HEADER.NumberOfLinenumbers field + + + + + Returns the IMAGE_SECTION_HEADER.Characteristics field + + + + + Constructor + + PE file reader pointing to the start of this section + Verify section + Thrown if verification fails + + + + Converts s to/from s + + + + + Converts a to an + + The file offset to convert + The RVA + + + + Converts an to a + + The RVA to convert + The file offset + + + + Interface to access a PE image + + + + + true if image layout is the same as the raw PE image layout, false + if it's the same layout as a PE image loaded by the OS PE loader. + + + + + true if some of the memory where the image is located could be unavailable. + This could happen if it's been loaded by the OS loader. + + + + + The filename or null if the data is not from a file + + + + + Returns the DOS header + + + + + Returns the NT headers + + + + + Returns the section headers + + + + + Returns the debug directories + + + + + Gets/sets the Win32 resources. This is null if there are no Win32 resources. + + + + + Gets the factory + + + + + Creates a from to the end of the image + + Offset of data + + + + + Creates a + + Offset of data + Length of data + + + + + Creates a from to the end of the image + + RVA of data + + + + + Creates a + + RVA of data + Length of data + + + + + Creates a that can read the whole image + + + + + + Interface to access a PE image + + + + + Call this to disable memory mapped I/O if it was used to open the file. This must only + be called if no other code is trying to access the memory since that could lead to an + exception. + + + + + true if memory mapped I/O is enabled + + + + + Extension methods + + + + + Finds a + + this + Type + Name + Language ID + The or null if none found + + + + Calculates a PE checksum + + PE image stream positioned at the MZ bytes + Length of image + Offset of checksum + PE checksum + + + + Align up + + this + Alignment + + + + Align up + + this + Alignment + + + + Converts a to/from an + + + + + Converts a to an + + The PEInfo context + The file offset to convert + The RVA + + + + Converts an to a + + The PEInfo context + The RVA to convert + The file offset + + + + IMAGE_FILE_HEADER.Machine enum + + + + Unknown machine + + + x86 + + + MIPS little-endian, 0x160 big-endian + + + MIPS little-endian + + + MIPS little-endian + + + MIPS little-endian WCE v2 + + + Alpha_AXP + + + SH3 little-endian + + + + + + SH3E little-endian + + + SH4 little-endian + + + SH5 + + + ARM Little-Endian + + + ARM Thumb/Thumb-2 Little-Endian + + + ARM Thumb-2 Little-Endian + + + + + + IBM PowerPC Little-Endian + + + + + + IA-64 + + + + + + + + + + + + + + + Infineon + + + + + + EFI Byte Code + + + x64 + + + M32R little-endian + + + + + + + + + + Extensions + + + + + Checks if is a 64-bit machine + + Machine + + + + + Checks if is , , etc... + + Machine + + + + + Checks if is , , etc... + + Machine + + + + + Checks if is , , etc... + + Machine + + + + + Checks if is , , etc... + + Machine + + + + + Image layout + + + + + Use this if the PE file has a normal structure (eg. it's been read from a file on disk) + + + + + Use this if the PE file has been loaded into memory by the OS PE file loader + + + + + Accesses a PE file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Constructor + + Data reader factory + Image layout + Verify PE file data + + + + Constructor + + Name of the file + true if we should map it as an executable + Verify PE file data + + + + Constructor + + Name of the file + Verify PE file data + + + + Constructor + + Name of the file + + + + Constructor + + The PE file data + Filename or null + Image layout + Verify PE file data + + + + Constructor + + The PE file data + Image layout + Verify PE file data + + + + Constructor + + The PE file data + Verify PE file data + + + + Constructor + + The PE file data + Filename or null + Verify PE file data + + + + Constructor + + The PE file data + + + + Constructor + + The PE file data + Filename or null + + + + Constructor + + Address of PE image + Length of PE image + Image layout + Verify PE file data + + + + Constructor + + Address of PE image + Length of PE image + Verify PE file data + + + + Constructor + + Address of PE image + Length of PE image + + + + Constructor + + Address of PE image + Image layout + Verify PE file data + + + + Constructor + + Address of PE image + Verify PE file data + + + + Constructor + + Address of PE image + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reads all PE sections from a PE stream + + + + + Returns the DOS header + + + + + Returns the NT headers + + + + + Returns the section headers + + + + + Constructor + + PE file reader pointing to the start of this section + Verify sections + Thrown if verification fails + + + + Returns the first that has data at file offset + + + The file offset + + + + + Returns the first that has data at RVA + + + The RVA + + + + + Converts a to an + + The file offset to convert + The RVA + + + + Converts an to a + + The RVA to convert + The file offset + + + + Returns size of image rounded up to + + It calculates the size itself, and does not return + Size of image in bytes + + + + Represents an RVA (relative virtual address) + + + + + IMAGE_OPTIONAL_HEADER.Subsystem + + + + Unknown subsystem. + + + Image doesn't require a subsystem. + + + Image runs in the Windows GUI subsystem. + + + Image runs in the Windows character subsystem. + + + image runs in the OS/2 character subsystem. + + + image runs in the Posix character subsystem. + + + image is a native Win9x driver. + + + Image runs in the Windows CE subsystem. + + + + + + + + + + + + + + + + + + + + + + dnlib settings + + + + + true if dnlib is thread safe. (THREAD_SAFE was defined during compilation) + + + + + Cancellation token interface + + + + + Throws a if the operation should be canceled + + + + + Simple class using Monitor.Enter() and Monitor.Exit() + and just like ReaderWriterLockSlim it prevents recursive locks. It doesn't support + multiple readers. A reader lock is the same as a writer lock. + + + + + Creates a new instance of this class + + + + + + Constructor + + + + + Enter read mode + + + + + Exit read mode + + + + + Enter write mode + + + + + Exit write mode + + + + + Interface to access a lazily initialized list + + Type to store in list + + + + Gets notified of list events + + List value + + + + Called before a new value is lazily added to the list. + + If you must access this list, you can only call _NoLock() methods + since a write lock is now held by this thread. + Index where the value will be added + Value that will be added to the list. It can be modified by + the callee. + + + + Called before a new value is added to the list. + + If you must access this list, you can only call _NoLock() methods + since a write lock is now held by this thread. + Index where the value will be added + Value that will be added to the list + + + + Called before a value is removed from the list. If all elements are removed, + is called, and this method is not called. + + If you must access this list, you can only call _NoLock() methods + since a write lock is now held by this thread. + Index of value + The value that will be removed + + + + Called after the list has been resized (eg. an element has been added/removed). It's not + called when an element is replaced. + + If you must access this list, you can only call _NoLock() methods + since a write lock is now held by this thread. + Index where the change occurred. + + + + Called before the whole list is cleared. + + If you must access this list, you can only call _NoLock() methods + since a write lock is now held by this thread. + + + + Implements a that is lazily initialized + + Type to store in list + + + + Stores a simple value + + + + + true if it has been initialized, false otherwise + + + + + Default constructor + + + + + Constructor that should be used when new elements are inserted into + + User data + + + + Gets the value + + Index in the list + + + + Sets the value + + Index in the list + New value + + + + + + + + + + + + + + + + + + + Default constructor + + + + + Constructor + + List listener + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enumerator + + + + + Gets the current value + + + + + Moves to the next element in the collection + + + + + + Disposes the enumerator + + + + + Gets the list enumerator + + + + + + + + + Implements a that is lazily initialized + + Type to store in list + Type of the context passed to the read-value delegate + + + + Stores data and keeps track of the original index and whether the data has been + initialized or not. + + + + + + + + + + + + + + Constructor that should only be called when is initialized. + + Original index of this element + LazyList instance + + + + + + + Default constructor + + + + + Constructor + + List listener + + + + Constructor + + Initial length of the list + Context passed to + Delegate instance that returns original values + + + + Constructor + + Initial length of the list + List listener + Context passed to + Delegate instance that returns original values + + + + A readonly list that gets initialized lazily + + Any class type + + + + Gets the length of this list + + + + + Access the list + + Index + The element or null if is invalid + + + + Constructor + + Length of the list + Delegate instance that lazily reads an element. It might + be called more than once for each rid in rare cases. It must never return + null. + + + + A readonly list that gets initialized lazily + + Any class type + + + + Gets the length of this list + + + + + Access the list + + Index + Generic parameter context + The element or null if is invalid + + + + Constructor + + Length of the list + Delegate instance that lazily reads an element. It might + be called more than once for each rid. It must never return null. + + + + Lazily returns the original value if the user hasn't overwritten the value + + Value type + + + + Sets the lock that protects the data + + + + + Set a delegate instance that will return the original value + + + + + Gets/sets the value + + The getter returns the original value if the value hasn't been initialized. + + + + Returns true if the value has been initialized + + + + + Returns true if the value was set by the user + + + + + A resource blob + + + + + Gets the data reader + + + + + + Gets/sets the code page + + + + + Gets/sets the reserved field + + + + + Constructor + + Name + + + + Constructor + + Data reader factory + Offset of resource data + Length of resource data + Name + + + + Constructor + + Data reader factory + Offset of resource data + Length of resource data + Name + Code page + Reserved value + + + + A Win32 resource directory (see IMAGE_RESOURCE_DIRECTORY in the Windows SDK) + + + + See + + + See + + + See + + + See + + + See + + + See + + + + Gets/sets the characteristics + + + + + Gets/sets the time date stamp + + + + + Gets/sets the major version number + + + + + Gets/sets the minor version number + + + + + Gets all directory entries + + + + + Gets all resource data + + + + + Constructor + + Name + + + + Finds a by name + + Name + A or null if it wasn't found + + + + Finds a by name + + Name + A or null if it wasn't found + + + + A Win32 resource directory created by the user + + + + + Constructor + + Name + + + + A Win32 resource directory created from a PE file + + + + + To make sure we don't get stuck in an infinite loop, don't allow more than this + many sub directories. + + + + Owner + + + Directory depth. When creating more 's, + the instances get this value + 1 + + + + Info about all 's we haven't created yet + + + + + Info about all 's we haven't created yet + + + + Offset of resource directory / data + + + + Constructor + + Starts from 0. If it's big enough, we'll stop reading more data. + Name + Resources + Reader positioned at the start of this resource directory + + + + Reads the directory header and initializes and + . + + + + + + Reads a string + + Reader + Offset of string + The string or null if we could not read it + + + + Base class of and + + + + + Gets/sets the name + + + + + Constructor + + Name + + + + + + + A Win32 resource name. It can be either an integer or a string. + + + + + true if is valid + + + + + true if is valid + + + + + The ID. It's only valid if is true + + + + + The name. It's only valid if is true + + + + + Constructor + + ID + + + + Constructor + + Name + + + Converts input to a + + + Converts input to a + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + Overloaded operator + + + + + + + + + + + + + + + + + + + Win32 resources base class + + + + + Gets/sets the root directory + + + + + Finds a + + Type + The or null if none found + + + + Finds a + + Type + Name + The or null if none found + + + + Finds a + + Type + Name + Language ID + The or null if none found + + + + + + + Dispose method + + true if called by + + + + Win32 resources class created by the user + + + + + + + + Win32 resources class created from a PE file + + + + + Converts data RVAs to file offsets in + + + + + This reader only reads the raw data. The data RVA is found in the data header and + it's first converted to a file offset using . This file + offset is where we'll read from using this reader. + + + + + This reader only reads the directory entries and data headers. The data is read + by + + + + + + + + Gets the resource reader + + + + + Constructor + + / converter + Reader for the whole Win32 resources section (usually + the .rsrc section). It's used to read 's and + 's but not the actual data blob. + Offset of resource section + Length of resource section + true if this instance can dispose of + Data reader (it's used after converting an + to a ) + Offset of resource section + Length of resource section + true if this instance can dispose of + + + + Constructor + + The PE image + + + + Constructor + + The PE image + Reader for the whole Win32 resources section (usually + the .rsrc section) or null if we should create one from the resource data + directory in the optional header + Offset of resource section + Length of resource section + true if this instance can dispose of + + + + Creates a new data reader + + RVA of data + Size of data + + + + + + + diff --git a/dumper/dll2sdk/CommandLine.dll b/dumper/dll2sdk/CommandLine.dll deleted file mode 100644 index a946a5a49..000000000 Binary files a/dumper/dll2sdk/CommandLine.dll and /dev/null differ diff --git a/dumper/dll2sdk/Dll2Sdk.deps.json b/dumper/dll2sdk/Dll2Sdk.deps.json deleted file mode 100644 index 85cecc469..000000000 --- a/dumper/dll2sdk/Dll2Sdk.deps.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v3.1", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v3.1": { - "Dll2Sdk/1.0.0": { - "dependencies": { - "CommandLineParser": "2.7.82", - "dnlib": "3.3.2" - }, - "runtime": { - "Dll2Sdk.dll": {} - } - }, - "CommandLineParser/2.7.82": { - "runtime": { - "lib/netstandard2.0/CommandLine.dll": { - "assemblyVersion": "2.7.82.0", - "fileVersion": "2.7.82.0" - } - } - }, - "dnlib/3.3.2": { - "dependencies": { - "System.Reflection.Emit": "4.7.0", - "System.Reflection.Emit.Lightweight": "4.7.0" - }, - "runtime": { - "lib/netstandard2.0/dnlib.dll": { - "assemblyVersion": "3.3.2.0", - "fileVersion": "3.3.2.0" - } - } - }, - "System.Reflection.Emit/4.7.0": {}, - "System.Reflection.Emit.Lightweight/4.7.0": {} - } - }, - "libraries": { - "Dll2Sdk/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "CommandLineParser/2.7.82": { - "type": "package", - "serviceable": true, - "sha512": "sha512-JnjxBu4++EDnYtDzHskiPrPJ9hAna8amu8qlQx8J+2oZnPddDnkR/0FFtQMDz0Cs0YF2lbyW3OmYfRmIrLNY0A==", - "path": "commandlineparser/2.7.82", - "hashPath": "commandlineparser.2.7.82.nupkg.sha512" - }, - "dnlib/3.3.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-16p2zxL0d0FJ7POvunZ+9cn3mREmQD1rDm+1C1eIMDBRAuEGLCSWdIobrUNYP//DcfMRYHbpgB8Gh2BYjEkS2Q==", - "path": "dnlib/3.3.2", - "hashPath": "dnlib.3.3.2.nupkg.sha512" - }, - "System.Reflection.Emit/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", - "path": "system.reflection.emit/4.7.0", - "hashPath": "system.reflection.emit.4.7.0.nupkg.sha512" - }, - "System.Reflection.Emit.Lightweight/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-a4OLB4IITxAXJeV74MDx49Oq2+PsF6Sml54XAFv+2RyWwtDBcabzoxiiJRhdhx+gaohLh4hEGCLQyBozXoQPqA==", - "path": "system.reflection.emit.lightweight/4.7.0", - "hashPath": "system.reflection.emit.lightweight.4.7.0.nupkg.sha512" - } - } -} \ No newline at end of file diff --git a/dumper/dll2sdk/Dll2Sdk.dll b/dumper/dll2sdk/Dll2Sdk.dll deleted file mode 100644 index b8762e208..000000000 Binary files a/dumper/dll2sdk/Dll2Sdk.dll and /dev/null differ diff --git a/dumper/dll2sdk/Dll2Sdk.exe b/dumper/dll2sdk/Dll2Sdk.exe deleted file mode 100644 index a7b5de5bf..000000000 Binary files a/dumper/dll2sdk/Dll2Sdk.exe and /dev/null differ diff --git a/dumper/dll2sdk/Dll2Sdk.pdb b/dumper/dll2sdk/Dll2Sdk.pdb deleted file mode 100644 index b0f59e2bf..000000000 Binary files a/dumper/dll2sdk/Dll2Sdk.pdb and /dev/null differ diff --git a/dumper/dll2sdk/Dll2Sdk.runtimeconfig.dev.json b/dumper/dll2sdk/Dll2Sdk.runtimeconfig.dev.json deleted file mode 100644 index 7b78ea5a3..000000000 --- a/dumper/dll2sdk/Dll2Sdk.runtimeconfig.dev.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "runtimeOptions": { - "additionalProbingPaths": [ - "C:\\Users\\xerox\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\xerox\\.nuget\\packages" - ] - } -} \ No newline at end of file diff --git a/dumper/dll2sdk/Dll2Sdk.runtimeconfig.json b/dumper/dll2sdk/Dll2Sdk.runtimeconfig.json deleted file mode 100644 index bc456d786..000000000 --- a/dumper/dll2sdk/Dll2Sdk.runtimeconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "netcoreapp3.1", - "framework": { - "name": "Microsoft.NETCore.App", - "version": "3.1.0" - } - } -} \ No newline at end of file diff --git a/dumper/dll2sdk/dnlib.dll b/dumper/dll2sdk/dnlib.dll deleted file mode 100644 index 58e49b471..000000000 Binary files a/dumper/dll2sdk/dnlib.dll and /dev/null differ diff --git a/il2cpp_dump.so b/il2cpp_dump.so new file mode 100644 index 000000000..d999b2667 Binary files /dev/null and b/il2cpp_dump.so differ diff --git a/ligma-cheat/ligma-cheat/SDK/Assembly-CSharp.dll/Includes/GameEngine/GamePlay.h b/ligma-cheat/ligma-cheat/SDK/Assembly-CSharp.dll/Includes/GameEngine/GamePlay.h index c850b1b64..8227c553a 100644 --- a/ligma-cheat/ligma-cheat/SDK/Assembly-CSharp.dll/Includes/GameEngine/GamePlay.h +++ b/ligma-cheat/ligma-cheat/SDK/Assembly-CSharp.dll/Includes/GameEngine/GamePlay.h @@ -74,9 +74,11 @@ public: return *(T*)((uintptr_t)StaticClass()->static_fields + 0x50); } - template static T get_Game() { - return ((T (*)(void *))(Il2CppBase() + 0x36E708C))(0); + template static T get_Game() + { + return ((T(*)(void))(Il2CppBase() + 0x36E708C))(); } + template static T get_MatchGame() { return ((T (*)(void *))(Il2CppBase() + 0x36F611C))(0); } diff --git a/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2Cpp.cpp b/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2Cpp.cpp index b67e71937..f33cf31dc 100644 --- a/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2Cpp.cpp +++ b/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2Cpp.cpp @@ -10,62 +10,48 @@ #define IL2CPP_LOGW(...) __android_log_print(ANDROID_LOG_WARN,IL2CPP__TAG,__VA_ARGS__) #define IL2CPP_LOGE(...) __android_log_print(ANDROID_LOG_ERROR,IL2CPP__TAG,__VA_ARGS__) // ========================================================================================================================================== // -map m_cacheFields; -map m_cacheMethods; -map m_cacheClasses; +std::map m_cacheFields; +std::map m_cacheMethods; +std::map m_cacheClasses; // ========================================================================================================================================== // -namespace { +namespace +{ const void *(*il2cpp_assembly_get_image)(const void *assembly); - void *(*il2cpp_domain_get)(); - void **(*il2cpp_domain_get_assemblies)(const void *domain, size_t *size); - const char *(*il2cpp_image_get_name)(void *image); - void *(*il2cpp_class_from_name)(const void *image, const char *namespaze, const char *name); - void *(*il2cpp_class_get_field_from_name)(void *klass, const char *name); - void *(*il2cpp_class_get_method_from_name)(void *klass, const char *name, int argsCount); - size_t (*il2cpp_field_get_offset)(void *field); - void (*il2cpp_field_static_get_value)(void *field, void *value); - void (*il2cpp_field_static_set_value)(void *field, void *value); - void *(*il2cpp_array_new)(void *elementTypeInfo, size_t length); - char *(*il2cpp_type_get_name)(void *type); - void* (*il2cpp_method_get_param)(void *method, uint32_t index); - void* (*il2cpp_class_get_methods)(void *klass, void* *iter); - const char* (*il2cpp_method_get_name)(void *method); - const char *(*il2cpp_class_get_name)(void *klass); - void *(*il2cpp_class_get_nested_types)(void *, void **); - void *(*il2cpp_object_new)(void *); - Il2CppString *(*il2cpp_string_new)(const char *); - Il2CppString *(*il2cpp_string_new_utf16)(const wchar_t *, size_t len); } // ========================================================================================================================================== // -vector split_string(string str, string token) { - vector result; - while (str.size()) { - int index = str.find(token); - if (index != string::npos) { +std::vector split_string(std::string str, std::string token) +{ + std::vector result; + while (str.size()) + { + const auto index = str.find(token); + if (index != std::string::npos) + { result.push_back(str.substr(0, index)); str = str.substr(index + token.size()); - if (str.size() == 0) + if (!str.size()) result.push_back(str); - } else { + } else + { result.push_back(str); str = ""; } @@ -74,63 +60,34 @@ vector split_string(string str, string token) { } // ========================================================================================================================================== // int not_found_export = 0; - void *get_export_function(const char *lib, const char *name) { - void *handle = dlopen(lib, 4); - if(handle) { - void *fn = dlsym(handle, name); - if (fn) { - return fn; - } - } - not_found_export++; - return 0; + return dlsym(dlopen(lib, RTLD_NOLOAD), name); } + // ========================================================================================================================================== // #define GAME_LIB_ENGINE "libil2cpp.so" -uintptr_t lib_addr = 0; - -uintptr_t Il2CppBase(){ - if(lib_addr) - { - return lib_addr; - } - - char line[512]; - - FILE *f = fopen("/proc/self/maps", "r"); - - if (!f) - return 0; - - while (fgets(line, sizeof line, f)) { - uintptr_t base; - char tmp[64]; - sscanf(line, "%" PRIXPTR "-%*" PRIXPTR " %*s %*s %*s %*s %s", &base, tmp); - if (strstr(tmp, GAME_LIB_ENGINE)) { - fclose(f); - lib_addr = base; - return base; - } - } - fclose(f); - return 0; +std::uintptr_t Il2CppBase() +{ + return reinterpret_cast(dlopen(GAME_LIB_ENGINE, RTLD_NOLOAD)); } // ========================================================================================================================================== // typedef unsigned short UTF16; typedef wchar_t UTF32; typedef char UTF8; -int is_surrogate(UTF16 uc) { +int is_surrogate(UTF16 uc) +{ return (uc - 0xd800u) < 2048u; } -int is_high_surrogate(UTF16 uc) { +int is_high_surrogate(UTF16 uc) +{ return (uc & 0xfffffc00) == 0xd800; } -int is_low_surrogate(UTF16 uc) { +int is_low_surrogate(UTF16 uc) +{ return (uc & 0xfffffc00) == 0xdc00; } @@ -138,172 +95,192 @@ UTF32 surrogate_to_utf32(UTF16 high, UTF16 low) { return (high << 10) + low - 0x35fdc00; } -const char* utf16_to_utf8(const UTF16* source, size_t len) { +const char* utf16_to_utf8(const wchar_t* source, std::size_t len) +{ std::u16string s(source, source + len); std::wstring_convert, char16_t> convert; return convert.to_bytes(s).c_str(); } -const wchar_t* utf16_to_utf32(const UTF16* source, size_t len) { - UTF32* output = new UTF32[len + 1]; - - for (int i = 0; i < len; i++) { - const UTF16 uc = source[i]; - if (!is_surrogate(uc)) { +const wchar_t* utf16_to_utf32(const wchar_t* source, std::size_t len) +{ + auto output = new wchar_t[len + 1]; + for (int i = 0; i < len; i++) + { + const auto uc = source[i]; + if (!is_surrogate(uc)) output[i] = uc; - } - else { + else if (is_high_surrogate(uc) && is_low_surrogate(source[i])) output[i] = surrogate_to_utf32(uc, source[i]); else output[i] = L'?'; - } } - output[len] = L'\0'; return output; } // ========================================================================================================================================== // -const char* Il2CppString::CString() { +const char* Il2CppString::CString() +{ return utf16_to_utf8(&this->start_char, this->length); } // ========================================================================================================================================== // -const wchar_t* Il2CppString::WCString() { +const wchar_t* Il2CppString::WCString() +{ return utf16_to_utf32(&this->start_char, this->length); } // ========================================================================================================================================== // -int Il2Cpp::Attach(const char *libname) { - if(!libname) return -1; - - il2cpp_assembly_get_image = (const void *(*)(const void *)) get_export_function(libname, "il2cpp_assembly_get_image"); - - il2cpp_domain_get = (void *(*)()) get_export_function(libname, "il2cpp_domain_get"); +bool Il2Cpp::Attach(const char *libname) +{ + if (!libname) + return false; - il2cpp_domain_get_assemblies = (void **(*)(const void* , size_t*)) get_export_function(libname, "il2cpp_domain_get_assemblies"); + if(!(il2cpp_assembly_get_image = (const void *(*)(const void *)) get_export_function(libname, "il2cpp_assembly_get_image"))) + return false; - il2cpp_image_get_name = (const char *(*)(void *)) get_export_function(libname, "il2cpp_image_get_name"); + if (!(il2cpp_domain_get = (void* (*)()) get_export_function(libname, "il2cpp_domain_get"))) + return false; - il2cpp_class_from_name = (void* (*)(const void*, const char*, const char *)) get_export_function(libname, "il2cpp_class_from_name"); + if (!(il2cpp_domain_get_assemblies = (void** (*)(const void*, size_t*)) get_export_function(libname, "il2cpp_domain_get_assemblies"))) + return false; - il2cpp_class_get_field_from_name = (void* (*)(void*, const char *)) get_export_function(libname, "il2cpp_class_get_field_from_name");; + if (!(il2cpp_image_get_name = (const char* (*)(void*)) get_export_function(libname, "il2cpp_image_get_name"))) + return false; - il2cpp_class_get_method_from_name = (void* (*)(void *, const char*, int)) get_export_function(libname, "il2cpp_class_get_method_from_name");; + if (!(il2cpp_class_from_name = (void* (*)(const void*, const char*, const char*)) get_export_function(libname, "il2cpp_class_from_name"))) + return false; - il2cpp_field_get_offset = (size_t (*)(void *)) get_export_function(libname, "il2cpp_field_get_offset");; + if (!(il2cpp_class_get_field_from_name = (void* (*)(void*, const char*)) get_export_function(libname, "il2cpp_class_get_field_from_name"))) + return false; - il2cpp_field_static_get_value = (void (*)(void*, void *)) get_export_function(libname, "il2cpp_field_static_get_value");; + if (!(il2cpp_class_get_method_from_name = (void* (*)(void*, const char*, int)) get_export_function(libname, "il2cpp_class_get_method_from_name"))) + return false; - il2cpp_field_static_set_value = (void (*)(void*, void *)) get_export_function(libname, "il2cpp_field_static_set_value");; + if (!(il2cpp_field_get_offset = (size_t (*)(void *)) get_export_function(libname, "il2cpp_field_get_offset"))) + return false; - il2cpp_array_new = (void *(*)(void*, size_t)) get_export_function(libname, "il2cpp_array_new");; + if (!(il2cpp_field_static_get_value = (void (*)(void*, void*)) get_export_function(libname, "il2cpp_field_static_get_value"))) + return false; - il2cpp_type_get_name = (char *(*)(void *)) get_export_function(libname, "il2cpp_type_get_name");; + if (!(il2cpp_field_static_set_value = (void (*)(void*, void*)) get_export_function(libname, "il2cpp_field_static_set_value"))) + return false; - il2cpp_method_get_param = (void *(*)(void *, uint32_t)) get_export_function(libname, "il2cpp_method_get_param");; + if (!(il2cpp_array_new = (void* (*)(void*, size_t)) get_export_function(libname, "il2cpp_array_new"))) + return false; - il2cpp_class_get_methods = (void *(*)(void *, void **)) get_export_function(libname, "il2cpp_class_get_methods");; + if (!(il2cpp_type_get_name = (char* (*)(void*)) get_export_function(libname, "il2cpp_type_get_name"))) + return false; - il2cpp_method_get_name = (const char *(*)(void *)) get_export_function(libname, "il2cpp_method_get_name");; + if (!(il2cpp_method_get_param = (void* (*)(void*, uint32_t)) get_export_function(libname, "il2cpp_method_get_param"))) + return false; - il2cpp_class_get_name = (const char *(*)(void *)) get_export_function(libname, "il2cpp_class_get_name"); + if (!(il2cpp_class_get_methods = (void* (*)(void*, void**)) get_export_function(libname, "il2cpp_class_get_methods"))) + return false; - il2cpp_class_get_nested_types = (void *(*)(void *, void **)) get_export_function(libname, "il2cpp_class_get_nested_types"); + if (!(il2cpp_method_get_name = (const char* (*)(void*)) get_export_function(libname, "il2cpp_method_get_name"))) + return false; - il2cpp_object_new = (void *(*)(void *)) get_export_function(libname, "il2cpp_object_new"); + if (!(il2cpp_class_get_name = (const char* (*)(void*)) get_export_function(libname, "il2cpp_class_get_name"))) + return false; - il2cpp_string_new = (Il2CppString *(*)(const char *)) get_export_function(libname, "il2cpp_string_new"); + if (!(il2cpp_class_get_nested_types = reinterpret_cast(get_export_function(libname, "il2cpp_class_get_nested_types")))) + return false; - il2cpp_string_new_utf16 = (Il2CppString *(*)(const wchar_t *, size_t)) get_export_function(libname, "il2cpp_string_new_utf16"); + if (!(il2cpp_object_new = (void* (*)(void*)) get_export_function(libname, "il2cpp_object_new"))) + return false; - if(not_found_export) - { - return -1; - } - return 0; + if (!(il2cpp_string_new = (Il2CppString * (*)(const char*)) get_export_function(libname, "il2cpp_string_new"))) + return false; + if (!(il2cpp_string_new_utf16 = (Il2CppString * (*)(const wchar_t*, size_t)) get_export_function(libname, "il2cpp_string_new_utf16"))) + return false; + return true; } // ========================================================================================================================================== // -void *Il2Cpp::GetImage(const char *image) { - size_t size; +void* Il2Cpp::GetImage(const char *image) +{ + std::size_t size; void **assemblies = il2cpp_domain_get_assemblies(il2cpp_domain_get(), &size); for(int i = 0; i < size; ++i) { void *img = (void *)il2cpp_assembly_get_image(assemblies[i]); - const char *img_name = il2cpp_image_get_name(img); - - if(strcmp(img_name, image) == 0) - { + if(!strcmp(img_name, image)) return img; - } } - return 0; + return nullptr; } // ========================================================================================================================================== // -void Il2Cpp::GetStaticFieldValue(const char *image, const char *namespaze, const char *clazz, const char *name, void *output) { +void Il2Cpp::GetStaticFieldValue(const char *image, const char *namespaze, const char *clazz, const char *name, void *output) +{ void *img = GetImage(image); - if(!img) { + if(!img) + { IL2CPP_LOGI("Can't find image %s!", image); return; } void *klass = GetClass(image, namespaze, clazz); - if(!klass) { + if(!klass) + { IL2CPP_LOGI("Can't find class %s for field %s!", clazz, name); return; } void *field = il2cpp_class_get_field_from_name(klass, name); - if(!field) { + if(!field) + { IL2CPP_LOGI("Can't find field %s in class %s!", name, clazz); return; } - il2cpp_field_static_get_value(field, output); } // ========================================================================================================================================== // -void Il2Cpp::SetStaticFieldValue(const char *image, const char *namespaze, const char *clazz, const char *name, void* value) { +void Il2Cpp::SetStaticFieldValue(const char *image, const char *namespaze, const char *clazz, const char *name, void* value) +{ void *img = GetImage(image); - if(!img) { + if(!img) + { IL2CPP_LOGI("Can't find image %s!", image); return; } void *klass = GetClass(image, namespaze, clazz); - if(!klass) { + if(!klass) + { IL2CPP_LOGI("Can't find class %s for field %s!", clazz, name); return; } void *field = il2cpp_class_get_field_from_name(klass, name); - if(!field) { + if(!field) + { IL2CPP_LOGI("Can't find field %s in class %s!", name, clazz); return; } - il2cpp_field_static_set_value(field, value); } // ========================================================================================================================================== // -void *Il2Cpp::GetClass(const char *image, const char *namespaze, const char *clazz) { - string _sig = image; +void* Il2Cpp::GetClass(const char *image, const char *namespaze, const char *clazz) +{ + std::string _sig = image; _sig += namespaze; _sig += clazz; - if(m_cacheClasses.count(_sig) > 0) - { + if(m_cacheClasses.count(_sig)) return m_cacheClasses[_sig]; - } void *img = GetImage(image); - if(!img) { + if(!img) + { IL2CPP_LOGI("Can't find image %s!", image); - return 0; + return nullptr; } - vector classes = split_string(clazz, "."); - + std::vector classes = split_string(clazz, "."); void *klass = il2cpp_class_from_name(img, namespaze, classes[0].c_str()); - if(!klass) { + if(!klass) + { IL2CPP_LOGI("Can't find class %s!", clazz); - return 0; + return nullptr; } if(classes.size() > 1) @@ -313,17 +290,13 @@ void *Il2Cpp::GetClass(const char *image, const char *namespaze, const char *cla while(nest) { const char *name = il2cpp_class_get_name(nest); - if(strcmp(name, classes[1].c_str()) == 0) - { + if(!strcmp(name, classes[1].c_str())) return nest; - } - nest = il2cpp_class_get_nested_types(klass, &iter); } IL2CPP_LOGI("Can't find subclass %s in class %s!", classes[1].c_str(), classes[0].c_str()); - return 0; + return nullptr; } - return klass; } // ========================================================================================================================================== // @@ -351,11 +324,11 @@ void *Il2Cpp::NewClassObject(const char *image, const char *namespaze, const cha } // ========================================================================================================================================== // void *Il2Cpp::GetMethodOffset(const char *image, const char *namespaze, const char *clazz, const char *name, int argsCount) { - string _sig = image; + std::string _sig = image; _sig += namespaze; _sig += clazz; _sig += name; - _sig += to_string(argsCount); + _sig += std::to_string(argsCount); if(m_cacheMethods.count(_sig) > 0) { @@ -386,14 +359,14 @@ void *Il2Cpp::GetMethodOffset(const char *image, const char *namespaze, const ch } // ========================================================================================================================================== // void *Il2Cpp::GetMethodOffset(const char *image, const char *namespaze, const char *clazz, const char *name, char** args, int argsCount) { - string _sig = image; + std::string _sig = image; _sig += namespaze; _sig += clazz; _sig += name; for (int i = 0; i < argsCount; i++) { _sig += args[i]; } - _sig += to_string(argsCount); + _sig += std::to_string(argsCount); if(m_cacheMethods.count(_sig) > 0) { @@ -453,7 +426,7 @@ goto skip; } // ========================================================================================================================================== // uintptr_t Il2Cpp::GetFieldOffset(const char *image, const char *namespaze, const char *clazz, const char *name) { - string _sig = image; + std::string _sig = image; _sig += namespaze; _sig += clazz; _sig += name; diff --git a/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2Cpp.h b/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2Cpp.h index 8eceabd12..f4194b4a1 100644 --- a/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2Cpp.h +++ b/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2Cpp.h @@ -2,7 +2,6 @@ // Created by aimar on 12/28/2019. // #pragma once - #include #include #include @@ -13,42 +12,22 @@ #include #include #include - -using namespace std; - -#ifndef IL2CPP_H -#define IL2CPP_H - #include "Il2CppType.h" -namespace Il2Cpp { - int Attach(const char *libname = "libil2cpp.so"); - +namespace Il2Cpp +{ + bool Attach(const char *libname = "libil2cpp.so"); void *GetImage(const char *image); - void *GetClass(const char *image, const char *namespaze, const char *clazz); - void *CreateArray(const char *image, const char *namespaze, const char *clazz, size_t length); - void *GetMethodOffset(const char *image, const char *namespaze, const char *clazz, const char *name, int argsCount = 0); - void *GetMethodOffset(const char *image, const char *namespaze, const char *clazz, const char *name, char **args, int argsCount = 0); - - uintptr_t GetFieldOffset(const char *image, const char *namespaze, const char *clazz, const char *name); - + std::uintptr_t GetFieldOffset(const char *image, const char *namespaze, const char *clazz, const char *name); void GetStaticFieldValue(const char *image, const char *namespaze, const char *clazz, const char *name, void *output); - void SetStaticFieldValue(const char *image, const char *namespaze, const char *clazz, const char *name, void *value); - void *NewClassObject(const char *image, const char *namespaze, const char *clazz); - Il2CppString *CreateString(const char *s); - Il2CppString *CreateString(const wchar_t *s, size_t len); - bool IsAssembliesLoaded(); }; - -uintptr_t Il2CppBase(); - -#endif //ML_IL2CPP_H +std::uintptr_t Il2CppBase(); \ No newline at end of file diff --git a/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2CppType.h b/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2CppType.h index 98ed6987d..4557c1522 100644 --- a/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2CppType.h +++ b/ligma-cheat/ligma-cheat/SDK/Il2Cpp/Il2CppType.h @@ -2,6 +2,8 @@ // Created by aimar on 7/14/2020. // +#include + #ifndef CODM_IL2CPPTYPE_H #define CODM_IL2CPPTYPE_H @@ -101,20 +103,40 @@ template struct Il2CppArray { } }; -struct Il2CppString { +struct Il2CppString +{ Il2CppClass* klass; void* monitor; int32_t length; - uint16_t start_char; + wchar_t start_char; + + static Il2CppString* newString(const wchar_t* string) + { + const auto result = + reinterpret_cast( + malloc(sizeof(Il2CppString) + (std::wcslen(string) * sizeof(wchar_t)))); + memcpy(&result->start_char, string, std::wcslen(string) * sizeof(wchar_t)); + return result; + } - int getLength() { + static Il2CppString* newString(const char* string) + { + const auto result = + reinterpret_cast( + malloc(sizeof(Il2CppString) + (std::strlen(string)))); + memcpy(&result->start_char, string, std::strlen(string)); + return result; + } + + std::uint32_t getLength() + { return length; } - char *getChars() { + char* getChars() + { return (char *)&start_char; } - const char* CString(); const wchar_t* WCString(); }; diff --git a/ligma-cheat/ligma-cheat/bypass/bypass.cpp b/ligma-cheat/ligma-cheat/bypass/bypass.cpp index cedd1ecbc..436a643e3 100644 --- a/ligma-cheat/ligma-cheat/bypass/bypass.cpp +++ b/ligma-cheat/ligma-cheat/bypass/bypass.cpp @@ -14,14 +14,12 @@ namespace ligma ligma::utils::on_image_load("libxlua.so", [&](const std::uintptr_t module_base) { LOGI("libxlua.so base = %p", module_base); - // install lua hooks when libxlua.so gets loaded... ligma::hook::make_hook( dlsym(reinterpret_cast(module_base), "luaL_loadbufferx"), reinterpret_cast(&load_bufferx_hook) ); }); - // these hooks can be registered at anytime. fopen_ptr = dlsym(dlopen("libc.so", RTLD_NOLOAD), "fopen"); dlopen_ptr = dlsym(dlopen("libdl.so", RTLD_NOLOAD), "dlopen"); system_prop_get = dlsym(dlopen("libc.so", RTLD_NOLOAD), "__system_property_get"); @@ -80,8 +78,8 @@ namespace ligma { if (strstr(filename, file_key.c_str())) { - callback(reinterpret_cast(result)); ligma::utils::get_callbacks()->erase(file_key); + callback(reinterpret_cast(result)); break; } } diff --git a/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj b/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj index ec3f1bd9d..28ece825a 100644 --- a/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj +++ b/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj @@ -37,6 +37,7 @@ + @@ -44,6 +45,8 @@ + + @@ -125,10 +128,10 @@ - $(IncludePath) + C:\Users\interesting\Desktop\codm\ligma-cheat\ligma-cheat\SDK;$(IncludePath) - $(IncludePath) + C:\Users\interesting\Desktop\codm\ligma-cheat\ligma-cheat\SDK;$(IncludePath) $(IncludePath) @@ -143,10 +146,10 @@ $(IncludePath) - $(IncludePath) + C:\Users\interesting\Desktop\codm\ligma-cheat\ligma-cheat\SDK;$(IncludePath) - $(IncludePath) + C:\Users\interesting\Desktop\codm\ligma-cheat\ligma-cheat\SDK;$(IncludePath) diff --git a/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.filters b/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.filters index 968d7683c..23b0ca6b6 100644 --- a/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.filters +++ b/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.filters @@ -33,6 +33,7 @@ source\utils + @@ -50,5 +51,7 @@ headers + + \ No newline at end of file diff --git a/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.user b/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.user index 5df420f57..966b4ffb6 100644 --- a/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.user +++ b/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.user @@ -1,6 +1,6 @@  - false + true \ No newline at end of file diff --git a/ligma-cheat/ligma-cheat/main.cpp b/ligma-cheat/ligma-cheat/main.cpp index e64b80761..9c825a5ae 100644 --- a/ligma-cheat/ligma-cheat/main.cpp +++ b/ligma-cheat/ligma-cheat/main.cpp @@ -1,10 +1,30 @@ +#include #include "bypass/bypass.h" +#include "SDK/Il2Cpp/Il2Cpp.h" +#include "SDK/Assembly-CSharp.dll/GameEngine.h" +#include "SDK/Assembly-CSharp.dll/GameBase.h" + +#include "SDK/UnityEngine.dll/Includes/UnityEngine/Component.h" +#include "SDK/UnityEngine.dll/Includes/UnityEngine/Transform.h" +#include "SDK/UnityEngine.dll/Includes/UnityEngine/Screen.h" +#include "SDK/UnityEngine.dll/Includes/UnityEngine/Camera.h" +#include "SDK/UnityEngine.dll/Includes/UnityEngine/Physics.h" +#include "SDK/UnityEngine.dll/Includes/UnityEngine/RaycastHit.h" +#include "SDK/UnityEngine.dll/Includes/UnityEngine/Object.h" + +// just an example that this never gets called, ever +int get_localplayer_hook() +{ + LOGI("=========== get local player called!!!! ==========="); + return NULL; +} __attribute__((constructor)) void init() { - ligma::bypass::init([](const std::uintptr_t il2cpp_base) + ligma::bypass::init([&](const std::uintptr_t il2cpp_base) { LOGI("il2cpp base address = %p", il2cpp_base); + ligma::hook::make_hook(reinterpret_cast(il2cpp_base + 0x36F2600), reinterpret_cast(&get_localplayer_hook)); }); } \ No newline at end of file