Exemple #1
0
        /// <summary>
        /// Gets the virtual base class start address.
        /// </summary>
        /// <param name="originalCodeType">Code type of the object.</param>
        /// <param name="objectAddress">Object address.</param>
        /// <param name="virtualCodeType">Virtual class code type.</param>
        /// <returns>Address of the object which code type is virtual class.</returns>
        public ulong GetVirtualClassBaseAddress(CodeType originalCodeType, ulong objectAddress, CodeType virtualCodeType)
        {
            ISymbolProviderModule symbolProviderModule = GetSymbolProviderModule(originalCodeType.Module);

            if (symbolProviderModule == null)
            {
                return(FallbackSymbolProvider.GetVirtualClassBaseAddress(originalCodeType, objectAddress, virtualCodeType));
            }
            return(symbolProviderModule.GetVirtualClassBaseAddress(((NativeCodeType)originalCodeType).TypeId, objectAddress, ((NativeCodeType)virtualCodeType).TypeId));
        }