Conari
Avoids prefix for right operand if it's defined.
Avoids prefix for right operand if it's defined.
The aliases for exported-functions and variables.
Try to use alias.
The final name.
Configuration of alias.
The final name.
Configuration of alias.
Access to dynamic features like getting exported-variables at runtime.
Gets value from exported Variable. Full name is required.
The type of variable.
The full name of exported variable.
The value from exported variable.
Alias to `getVar<T>(string lpProcName)`
Gets value from exported Variable. Full name is required.
The full name of exported variable.
The value from exported variable.
Gets value from exported Variable.
The main prefix will affects on this result.
The type of variable.
The name of exported variable.
The value from exported variable.
Alias to `get<T>(string variable)`
Gets value from exported Variable.
The main prefix will affects on this result.
The name of exported variable.
The value from exported variable.
Get field with native data from export table.
Uses type for information about data.
To consider it as this type.
The name of record.
Alias to `getField(Type type, string name)`
Get field with native data from export table.
Uses type for information about data.
To consider it as T type.
The name of record.
Get field with native data from export table.
Uses size of unspecified unmanaged type in bytes.
To calculate it from managed types, see: `NativeData.SizeOf`
The size of raw-data in bytes.
The name of record.
Magic properties. Get.
Magic properties. Set.
Magic methods. Invoking.
()`
]]>
List of magic properties.
Provides dynamic features like getting exported-variables at runtime.
Gets value from exported Variable. Full name is required.
The type of variable.
The full name of exported variable.
The value from exported variable.
Alias to `getVar<T>(string lpProcName)`
Gets value from exported Variable. Full name is required.
The full name of exported variable.
The value from exported variable.
Gets value from exported Variable.
The main prefix will affects on this result.
The type of variable.
The name of exported variable.
The value from exported variable.
Alias to `get<T>(string variable)`
Gets value from exported Variable.
The main prefix will affects on this result.
The name of exported variable.
The value from exported variable.
Get field with native data from export table.
Uses type for information about data.
To consider it as this type.
The name of record.
Alias to `getField(Type type, string name)`
Get field with native data from export table.
Uses type for information about data.
To consider it as T type.
The name of record.
Get field with native data from export table.
Uses size of unspecified unmanaged type in bytes.
To calculate it from managed types, see: `NativeData.SizeOf`
The size of raw-data in bytes.
The name of record.
To cache dynamic types by default with similar signatures:
`{return_type} name( [{argument_types}] )`
To reset all cached types.
To cache dynamic types via signature of method.
The instance of MethodInfo.
false value if this signature is already exists or cannot be cached.
Extract all valuable types from MethodInfo.
The array of types that can be used for MICache containers etc.
Gets MethodInfo with empty method.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Gets MethodInfo with empty method.
Try to find same types from cache. The name cannot be actual if true.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Gets MethodInfo with empty method.
The name of method.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Gets MethodInfo with empty method.
The name of method.
Try to find same types from cache. The name cannot be actual if true.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Retrieves the address of an exported function or variable.
The name of function or variable, or the function's ordinal value.
The address if found.
Prepare NativeData for active provider.
The name of function or variable, or the function's ordinal value.
Extracts LpProcName.
Original lpProcName.
Uses prefix.
Try to get alias.
Possible alias name.
The address of the exported function or variable.
A handle of used module.
The function or variable name, or the function's ordinal value.
If this parameter is an ordinal value, it must be in the low-order word;
the high-order word must be zero.
Provides a T value to use with events.
To free memory from the heap allocated from the unmanaged memory.
The address of the memory to be freed.
Access to used IDynamic object.
To use cache for dynamic types etc.
Current Convention for all dynamic methods.
To use information about types from CallingContext if it's possible.
This should automatically:
* Detect all ByRef& types.
* Bind all null-values for any reference-types that pushed with out/ref modifier.
To use ByRef& (reference-types) for all sent types.
NOTE:
Do not use this type for `dynamic.CreateDelegate(...)` etc. if already used any caching of TDyn.
Use new type from MethodInfo instead, for example: `typeof(T).GetMethod("Invoke").DeclaringType`
The library.
To use `commit` methods for end calling.
To load library only when it required.
To cache dynamic types.
Auto name-decoration to find entry points of exported functions.
Default name for new methods.
Thread-safe getting of this instance.
To cache dynamic types by default with similar signatures:
`{return type} name( [{argument types}] )`
To reset all cached types.
To cache dynamic types via signature of method.
The instance of MethodInfo.
false value if this signature is already exists or cannot be cached.
Extract all valuable types from MethodInfo.
The array of types that can be used for MICache containers etc.
Gets MethodInfo with empty method.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Gets MethodInfo with empty method.
Try to find same types from cache. The name cannot be actual if true.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Gets MethodInfo with empty method.
The name of method.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Gets MethodInfo with empty method.
The name of method.
Try to find same types from cache. The name cannot be actual if true.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Alias to `IDynamic.getMethodInfo(Type ret, params Type[] args)`
Gets MethodInfo with empty method.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Alias to `IDynamic.getMethodInfo(bool cache, Type ret, params Type[] args)`
Gets MethodInfo with empty method.
Try to find same types from cache. The name cannot be actual if true.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Alias to `IDynamic.getMethodInfo(string name, Type ret, params Type[] args)`
Gets MethodInfo with empty method.
The name of method.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Alias to `IDynamic.getMethodInfo(string name, bool cache, Type ret, params Type[] args)`
Gets MethodInfo with empty method.
The name of method.
Try to find same types from cache. The name cannot be actual if true.
The return type.
Arguments of method if exists.
Complete signature as method without body.
Generates empty type with default name.
The return type.
Arguments if exists.
The type that contains signature as `{ret} {METHOD_NAME}({args})`
Generates empty type.
The name of type.
The return type.
Arguments if exists.
The type that contains signature as `{ret} {name}({args})`
Access to used IDynamic object.
To use cache for dynamic types etc.
Current Convention for all dynamic methods.
To use information about types from CallingContext if it's possible.
This should automatically:
* Detect all ByRef& types.
* Bind all null-values for any reference-types that pushed with out/ref modifier.
To use ByRef& (reference-types) for all sent types.
Magic methods. Invoking.
([{argument_types}])`
]]>
Binds the exported Function. Full name is required.
Type of delegate.
The full name of exported function.
Delegate of exported function.
Alias `bindFunc<Action>(string lpProcName)`
Binds the exported Function. Full name is required.
The full name of exported function.
Delegate of exported function.
Binds the exported Function.
The main prefix will affects on this result.
Type of delegate.
The name of exported function.
Delegate of exported function.
Alias `bind<Action>(string func)`
Binds the exported Function.
The main prefix will affects on this result.
The name of exported function.
Delegate of exported function.
Binds the exported Function via MethodInfo and an specific name.
Note:
It's recommended as a more efficient,
because it allows caching of all MethodInfo for the same signatures but different function names.
Use IProvider.procName() to same control of IProvider.Prefix if needed.
Prepared signature.
Valid function name.
Complete information to create delegates or to invoke methods.
Binds the exported Function via MethodInfo, an specific name and CallingConvention.
Prepared signature.
Valid function name. Full name is required.
How it should be called. It overrides only for current method.
Complete information to create delegates or to invoke methods.
Alias `bindFunc<object>(string lpProcName, Type ret, params Type[] args)`
Binds the exported function.
The full name of exported function.
The type of return value.
The type of arguments.
Delegate of exported function.
Binds the exported function.
The return type for new Delegate should be as T type.
The full name of exported function.
The type of return value.
The type of arguments.
Delegate of exported function.
Alias `bind<object>(string func, Type ret, params Type[] args)`
Binds the exported C API Function.
The name of exported C API function.
The type of return value.
The type of arguments.
Delegate of exported function.
Binds the exported C API Function.
The return type for new Delegate should be as T type.
The name of exported C API function.
The type of return value.
The type of arguments.
Delegate of exported function.
When Prefix has been changed.
When Convention has been changed.
When handling new non-zero ProcAddress.
To cache delegates, generated methods, etc.
Prefix for exported functions.
How should call methods implemented in unmanaged code.
Auto name-decoration to find entry points of exported functions.
The aliases for exported-functions and variables.
Access to exported variables.
Additional services.
Returns full lpProcName with main prefix etc.
Exported function or variable name.
The name of used library.
A handle of loaded library.
The library.
To use `commit` methods for end calling.
TODO:
To load library only when it required.
To cache dynamic types.
Auto name-decoration to find entry points of exported functions.
The library.
When Prefix has been changed.
When Convention has been changed.
When handling new non-zero ProcAddress.
To cache delegates, generated methods, etc.
Prefix for exported functions.
How should call methods implemented in unmanaged code.
Auto name-decoration to find entry points of exported functions.
The aliases for exported-functions and variables.
Access to exported variables.
Additional services.
Binds the exported Function. Full name is required.
Type of delegate.
The full name of exported function.
Delegate of exported function.
Alias `bindFunc<Action>(string lpProcName)`
Binds the exported Function. Full name is required.
The full name of exported function.
Delegate of exported function.
Binds the exported Function.
The main prefix will affects on this result.
Type of delegate.
The name of exported function.
Delegate of exported function.
Alias `bind<Action>(string func)`
Binds the exported Function.
The main prefix will affects on this result.
The name of exported function.
Delegate of exported function.
Binds the exported Function via MethodInfo and an specific name.
Prepared signature.
Valid function name.
Complete information to create delegates or to invoke methods.
Binds the exported Function via MethodInfo, an specific name and CallingConvention.
Prepared signature.
Valid function name. Full name is required.
How it should be called. It overrides only for current method.
Complete information to create delegates or to invoke methods.
Alias `bindFunc<object>(string lpProcName, Type ret, params Type[] args)`
Binds the exported function.
The full name of exported function.
The type of return value.
The type of arguments.
Delegate of exported function.
Binds the exported function.
The return type for new Delegate should be as T type.
The full name of exported function.
The type of return value.
The type of arguments.
Delegate of exported function.
Alias `bind<object>(string func, Type ret, params Type[] args)`
Binds the exported C API Function.
The name of exported C API function.
The type of return value.
The type of arguments.
Delegate of exported function.
Binds the exported C API Function.
The return type for new Delegate should be as T type.
The name of exported C API function.
The type of return value.
The type of arguments.
Delegate of exported function.
Returns full lpProcName with main prefix etc.
Exported function or variable name.
To free memory from the heap allocated from the unmanaged memory.
The address of the memory to be freed.
The name of exported function.
The address of the exported function.
The return type for new Delegate should be as T type.
The type of return value.
The type of arguments.
Delegate of exported function.
Fixes for specific types like a bool -> I1 etc.
https://github.com/3F/Conari/issues/6
Base type
to support of implicit conversions
Base type
Before unloading a library.
When library has been unloaded.
When library has been loaded.
Active library.
PE32/PE32+ features.
Before unloading a library.
When library has been unloaded.
When library has been loaded.
Active library.
PE32/PE32+ features.
Loads library into the address space.
The name of the library.
Alias to `.Invoke(name, BindingFlags.Public | BindingFlags.Instance[, args])`
Invoke specific public method from unspecified object.
Unspecified object.
The name of non-static public method from object.
Optional arguments.
The result from invoked method.
Invoke specific method from unspecified object.
Unspecified object.
The name of method from object.
Control binding.
Optional arguments.
The result from invoked method.
When the selected method with specific arguments was not found.
Get field value from unspecified object.
Unspecified object.
The name of field from object.
Is a non-public ?
Is a static ?
The value from selected field.
Get field value from unspecified object.
Unspecified object.
The name of field from object.
Control binding.
The value from selected field.
When the selected field was not found.
Get property value from unspecified object.
Unspecified object.
The name of property from object.
Is a non-public ?
Is a static ?
The value from selected property.
Get property value from unspecified object.
Unspecified object.
The name of property from object.
Control binding.
The value from selected property.
When the selected property was not found.
Execute action separately from result.
The type of value that should be returned.
Unspecified object.
Any action that should be executed.
Same value from selected object as T type.
Execute action separately from result.
Alias to `E<object>()`
Unspecified object.
Any action that should be executed.
Same value from selected object.
Get length of null-based string.
Pointer to unmanaged string.
Count of a zero '\0' after last character.
Byte-sequence of unmanaged string.
Pointer to unmanaged string.
Length of string in bytes.
Access to available configuration data of dynamic DLR.
Provides dynamic features like adding
and invoking of new exported-functions at runtime.
Access to logger and its events.
DLR Features with `__cdecl` calling convention.
DLR Features with `__stdcall` calling convention.
DLR Features with `__fastcall` calling convention.
DLR Features with `__vectorcall` calling convention.
Access to available configuration data of dynamic DLR.
Provides dynamic features like adding
and invoking of new exported-functions at runtime.
Access to logger and its events.
DLR Features with `__cdecl` calling convention.
DLR Features with `__stdcall` calling convention.
DLR Features with `__fastcall` calling convention.
DLR Features with `__vectorcall` calling convention.
https://msdn.microsoft.com/en-us/library/dn375768.aspx
The Conari with specific calling convention.
The Conari configuration.
How should call methods.
Optional prefix to use via `bind<>`
The Conari with Cdecl - When the stack is cleaned up by the caller, it can do vararg functions.
The Conari configuration.
Optional prefix to use via `bind<>`
The Conari with specific calling convention.
The library.
How should call methods.
Optional prefix to use via `bind<>`
The Conari with the calling convention by default.
The library.
Optional prefix to use via `bind<>`
When message has been received.
To send new message.
To send new message.
To send new message.
To send new message with default sender as typeof(T).
It useful for static methods etc.
To send new message with default sender as typeof(T).
It useful for static methods etc.
To send new message with default sender as typeof(T).
It useful for static methods etc.
A simple retranslator.
Use the NLog etc.
When message has been received.
Static alias to Received.
Static alias to `send(object sender, Message msg)`
Static alias to `send(object sender, string msg)`
Static alias to `send(object sender, string msg, Message.Level type)`
To send new message with default sender as typeof(T).
It useful for static methods etc.
To send new message with default sender as typeof(T).
It useful for static methods etc.
To send new message with default sender as typeof(T).
It useful for static methods etc.
To send new message.
To send new message.
To send new message.
To send new message with default sender as typeof(T).
It useful for static methods etc.
To send new message with default sender as typeof(T).
It useful for static methods etc.
To send new message with default sender as typeof(T).
It useful for static methods etc.
Thread-safe getting the instance of the Sender class
The Mangling by C rules.
Decorate function name from existing exported list.
Undecorated function name.
The exported function names. Use PE handler.
found decorated function or null.
Underscore character (_) is prefixed to names,
except when __cdecl functions that use C linkage are exported.
e.g: _get_Seven or get_Seven
Leading underscore (_) and a trailing at sign (@) followed by the number of bytes in the parameter list in decimal.
e.g: _get_SevenStdCall@0
Leading and trailing at signs (@) followed by a decimal number representing the number of bytes in the parameter list.
e.g.: @get_SevenFastCall@0
Two trailing at signs (@@) followed by a decimal number of bytes in the parameter list.
e.g.: get_SevenVectorCall@@0
To get manually the value from byte-sequence.
The type of result value.
Actual size of value in byte-sequence.
Offset at left.
Try to get the next value in byte-sequence.
The type of value.
Actual size of value.
Output value.
Gets next value in byte-sequence.
Alias to `next(Type type, int tsize)`
Gets next value in byte-sequence with size of type by default.
The type of value.
Alias to `next(Type type)`
To reset position.
Used size of type.
Field name.
The value of field.
User object for any purpose.
Checks the correct name for DLR features.
Get bytes from current field.
Access to dynamic features like getting of values at runtime from generated fields etc.
Magic fields. Get.
Magic fields. Set.
List of magic fields.
Final byte-sequence from values (via pointer or local data).
Access to byte-sequence from values (via pointer or local data).
Generates dynamic type for current data.
/+DLR
To work with native data via pointer.
pointer to data structure.
To work with native data via byte-array.
local raw data.
Alias to `NativeData.SizeOf ...`
Gets size of selected type in bytes that's should be considered as unmanaged type.
Get raw-data of complex native structure.
To reset chain in zero.
Align by max size of existing types without changing of original types.
Gets size of selected types in bytes that are should be considered as unmanaged types.
the size in bytes.
Gets size of selected type in bytes that's should be considered as unmanaged type.
the size in bytes.
Alias to `int SizeOf(Type type)`
Align size by specific type.
the count of types that should be in chain.
Alias to get instance: `new NativeData(IntPtr)`
pointer to data structure.
Alias to get instance: `new NativeData(byte[])`
local raw data.
Align the chain by specific type at the right.
the count of T that should be in chain.
Optional assigned names.
Align by specific size without changing of original types.
To assign custom names.
Initial offset for present data with.
The names, starting from offset.
To reset chain.
absolute position.
To add complex type from header file (.h)
Full path to header file.
The name of declared type that should be loaded.
pointer to data structure.
local raw data.
Get available sections.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680341.aspx
/winnt.h
Get IMAGE_EXPORT_DIRECTORY record.
WinNT IMAGE_OPTIONAL_HEADER - IMAGE_DATA_DIRECTORY[IMAGE_DIRECTORY_ENTRY_EXPORT]
Receives full names of all available exported functions or variables from ExportDirectory
(WinNT OPTIONAL_HEADER).
Full names of all available exported functions or variables from ExportDirectory
(WinNT OPTIONAL_HEADER).
Active pe-file.
Get available sections.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680341.aspx
/winnt.h
Get IMAGE_EXPORT_DIRECTORY record.
WinNT IMAGE_OPTIONAL_HEADER - IMAGE_DATA_DIRECTORY[IMAGE_DIRECTORY_ENTRY_EXPORT]
Receives full names of all available exported functions or variables from ExportDirectory
(WinNT OPTIONAL_HEADER).
Full names of all available exported functions or variables from ExportDirectory
(WinNT OPTIONAL_HEADER).
Active pe-file.
PE32/PE32+ files. Works with records from ExportDirectory:
WinNT IMAGE_OPTIONAL_HEADER - IMAGE_DATA_DIRECTORY[IMAGE_DIRECTORY_ENTRY_EXPORT]
Export Format
/winnt.h
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680341.aspx
/winnt.h
An 8-byte, null-padded UTF-8 string.
There is no terminating null character if the string is exactly eight characters long.
union { DWORD PhysicalAddress; DWORD VirtualSize; }
PhysicalAddress
The file address.
VirtualSize
The total size of the section when loaded into memory, in bytes.
If this value is greater than the SizeOfRawData member, the section is filled with zeroes.
This field is valid only for executable images and should be set to 0 for object files.
The address of the first byte of the section when loaded into memory,
relative to the image base. For object files, this is the address of the first byte
before relocation is applied.
The size of the initialized data on disk, in bytes.
This value must be a multiple of the FileAlignment member of the IMAGE_OPTIONAL_HEADER structure.
If this value is less than the VirtualSize member, the remainder of the section is filled with zeroes.
If the section contains only uninitialized data, the member is zero.
A file pointer to the first page within the COFF file.
This value must be a multiple of the FileAlignment member of the IMAGE_OPTIONAL_HEADER structure.
If a section contains only uninitialized data, set this member is zero.
A file pointer to the beginning of the relocation entries for the section.
If there are no relocations, this value is zero.
A file pointer to the beginning of the line-number entries for the section.
If there are no COFF line numbers, this value is zero.
The number of relocation entries for the section.
This value is zero for executable images.
The number of line-number entries for the section.
The characteristics of the image.
A BSTR (Basic string or binary string) is a string data type that is used by COM, Automation, and Interop functions.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms221069(v=vs.85).aspx
A BSTR is a composite data type that consists of a length prefix, a data string, and a terminator:
* Length prefix - A 4-byte integer that contains the number of bytes in the following data string.
It appears immediately before the first character of the data string.
* Data string - A string of Unicode characters. May contain multiple embedded null characters.
* Terminator - 2-null characters.
Raw byte-sequence
Frees a BSTR using the COM SysFreeString function:
https://msdn.microsoft.com/en-us/Library/ms221481.aspx
The type of return value.
The type of arguments.
Argument list.
Return value.
Access to internal data.
To get/set encapsulated data.
To get base type.
To store information about basic type for any null values.
Nullable type.
To get/set encapsulated data.
To get base type.
Pointer to unmanaged memory where will placed structure.
Who is the owner for allocated structure.
Managed structure.
Raw byte-sequence
Pointer to allocated string.
Raw byte-sequence
number is greater than Int32.MaxValue or less than Int32.MinValue
number is greater than Int16.MaxValue or less than Int16.MinValue
number is greater than SByte.MaxValue or less than SByte.MinValue
number is less than uint_t.MIN
number is greater than int_t.MAX
unsigned int
/or/
unsigned __int64 (unsigned long long)
number is greater than Int32.MaxValue
number is greater than Int16.MaxValue
number is greater than Byte.MaxValue
number is greater than int_t.MAX
number is less than uint_t.MIN
Possible actions for loading the module with LoadLibraryEx function.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179.aspx
If this value is used and lpFileName specifies an absolute path,
the system uses the alternate file search strategy discussed in the Remarks section to find
associated executable modules that the specified module causes to be loaded.
If this value is used and lpFileName specifies a relative path, the behavior is undefined.
If this value is not used, or if lpFileName does not specify a path,
the system uses the standard search strategy discussed in the Remarks section to find
associated executable modules that the specified module causes to be loaded.
This value cannot be combined with any LOAD_LIBRARY_SEARCH flag.
Loads the specified module into the address space of the calling process.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms684175.aspx
The system maintains a per-process reference count on all loaded modules.
* Calling LoadLibrary increments the reference count.
* Calling the FreeLibrary (see below) or FreeLibraryAndExitThread function decrements the reference count.
The system unloads a module when its reference count reaches zero or when the process terminates (regardless of the reference count).
The name of the module. This can be either a library module (a .dll file) or an executable module (an .exe file).
A handle that can be used in GetProcAddress to get the address of a DLL function.
Loads the specified module into the address space of the calling process. The specified module may cause other modules to be loaded.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179.aspx
The behavior of this function is identical to the LoadLibrary function without flags.
A string that specifies the file name of the module to load.
The module can be a library module (a .dll file) or an executable module (an .exe file).
This parameter is reserved for future use. It must be NULL.
The action to be taken when loading the module. Use from LoadLibraryFlags.
Retrieves the address of an exported function or variable from the specified dynamic-link library (DLL).
https://msdn.microsoft.com/en-us/library/windows/desktop/ms683212.aspx
A handle to the DLL module that contains the function or variable.
The function or variable name, or the function's ordinal value.
If this parameter is an ordinal value, it must be in the low-order word;
the high-order word must be zero.
the address of the exported function or variable if true.
Frees the loaded dynamic-link library (DLL) module and, if necessary, decrements its reference count.
When the reference count reaches zero, the module is unloaded from the address space of the calling process and the handle is no longer valid.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms683152.aspx
A handle to the loaded library module.
If the function succeeds, the return value is nonzero.