internal CorDebugDataTargetWrapper(IServiceProvider services) { Debug.Assert(services != null); _target = services.GetService <ITarget>(); _symbolService = services.GetService <ISymbolService>(); _memoryService = services.GetService <IMemoryService>(); _threadService = services.GetService <IThreadService>(); _threadUnwindService = services.GetService <IThreadUnwindService>(); _ignoreAddressBitsMask = _memoryService.SignExtensionMask(); VTableBuilder builder = AddInterface(IID_ICorDebugDataTarget, validate: false); builder.AddMethod(new GetPlatformDelegate(GetPlatform)); builder.AddMethod(new ReadVirtualDelegate(ReadVirtual)); builder.AddMethod(new GetThreadContextDelegate(GetThreadContext)); ICorDebugDataTarget = builder.Complete(); builder = AddInterface(IID_ICorDebugDataTarget4, validate: false); builder.AddMethod(new VirtualUnwindDelegate(VirtualUnwind)); builder.Complete(); builder = AddInterface(IID_ICorDebugMutableDataTarget, validate: false); builder.AddMethod(new WriteVirtualDelegate(WriteVirtual)); builder.AddMethod(new SetThreadContextDelegate((self, threadId, contextSize, context) => HResult.E_NOTIMPL)); builder.AddMethod(new ContinueStatusChangeDelegate((self, continueStatus) => HResult.E_NOTIMPL)); builder.Complete(); builder = AddInterface(IID_ICorDebugMetaDataLocator, validate: false); builder.AddMethod(new GetMetaDataDelegate(GetMetaData)); builder.Complete(); AddRef(); }
public DataTargetWrapper(IServiceProvider services, IRuntime runtime) { Debug.Assert(services != null); Debug.Assert(runtime != null); _services = services; _runtimeBaseAddress = runtime.RuntimeModule.ImageBase; _symbolService = services.GetService <ISymbolService>(); _memoryService = services.GetService <IMemoryService>(); _threadService = services.GetService <IThreadService>(); _threadUnwindService = services.GetService <IThreadUnwindService>(); _moduleService = services.GetService <IModuleService>(); _remoteMemoryService = services.GetService <IRemoteMemoryService>(); _ignoreAddressBitsMask = _memoryService.SignExtensionMask(); VTableBuilder builder = AddInterface(IID_ICLRDataTarget, false); AddDataTarget(builder); IDataTarget = builder.Complete(); builder = AddInterface(IID_ICLRDataTarget2, false); AddDataTarget2(builder); builder.Complete(); builder = AddInterface(IID_ICLRDataTarget4, validate: false); builder.AddMethod(new VirtualUnwindDelegate(VirtualUnwind)); builder.Complete(); builder = AddInterface(IID_ICLRMetadataLocator, false); builder.AddMethod(new GetMetadataDelegate(GetMetadata)); builder.Complete(); builder = AddInterface(IID_ICLRRuntimeLocator, false); builder.AddMethod(new GetRuntimeBaseDelegate(GetRuntimeBase)); builder.Complete(); }