public DataSet(TempFileDatabase database, UnmanagedMemory view, TargetProcessPointer nativeStartPosition, TargetProcessPointer nativeRootFuncInfoStartPosition, bool isFirst) : base(nativeStartPosition, nativeRootFuncInfoStartPosition, view.Pointer, view.Length, isFirst, database.is64Bit) { this.database = database; this.view = view; }
public DataSet(TempFileDatabase database, UnmanagedMemory view, TargetProcessPointer nativeStartPosition, TargetProcessPointer nativeRootFuncInfoStartPosition, double cpuUsage, bool isFirst) : base(nativeStartPosition, nativeRootFuncInfoStartPosition, view.Pointer, view.Length, cpuUsage, isFirst, database.is64Bit) { this.database = database; this.view = view; }
unsafe internal override void* TranslatePointer(TargetProcessPointer ptr) { if (ptr.To64().Pointer == 0) return null; unchecked { long spaceDiff = (long)(new IntPtr(view.Pointer)) - (long)NativeStartPosition.To64().Pointer; return new IntPtr((long)ptr.To64().Pointer + spaceDiff).ToPointer(); } }
internal UnmanagedProfilingDataSet(TargetProcessPointer nativeStartPosition, TargetProcessPointer nativeRootFuncInfoPosition, byte *startPtr, long length, bool isFirst, bool is64Bit) { this.nativeStartPosition = nativeStartPosition; this.nativeRootFuncInfoPosition = nativeRootFuncInfoPosition; this.is64Bit = is64Bit; this.isFirst = isFirst; this.startPtr = new IntPtr(startPtr); this.length = length; }
unsafe internal override void *TranslatePointer(TargetProcessPointer ptr) { if (ptr.To64().Pointer == 0) { return(null); } unchecked { long spaceDiff = (long)(new IntPtr(view.Pointer)) - (long)NativeStartPosition.To64().Pointer; return(new IntPtr((long)ptr.To64().Pointer + spaceDiff).ToPointer()); } }
unsafe void AddDataset(byte *ptr, long length, TargetProcessPointer nativeStartPosition, TargetProcessPointer nativeRootFuncInfoStartPosition, bool isFirst) { byte[] data = new byte[length]; Marshal.Copy(new IntPtr(ptr), data, 0, (int)length); if (currentWrite != null) { file.EndWrite(currentWrite); } streamInfos.Add(new StreamInfo { NativeStartPosition = nativeStartPosition, NativeRootFuncInfoStartPosition = nativeRootFuncInfoStartPosition, StreamStartPosition = file.Length, StreamLength = length, IsFirst = isFirst }); currentWrite = file.BeginWrite(data, 0, (int)length, null, null); }
internal unsafe FunctionInfo *GetFunctionInfo(TargetProcessPointer ptr) { return((FunctionInfo *)TranslatePointer(ptr)); }
internal abstract unsafe void *TranslatePointer(TargetProcessPointer ptr);
unsafe void AddDataset(byte *ptr, long length, TargetProcessPointer nativeStartPosition, TargetProcessPointer nativeRootFuncInfoStartPosition, double cpuUsage, bool isFirst) { byte[] data = new byte[length]; Marshal.Copy(new IntPtr(ptr), data, 0, (int)length); if (this.currentWrite != null) this.file.EndWrite(this.currentWrite); this.streamInfos.Add(new StreamInfo { NativeStartPosition = nativeStartPosition, NativeRootFuncInfoStartPosition = nativeRootFuncInfoStartPosition, StreamStartPosition = this.file.Length, StreamLength = length, CpuUsage = cpuUsage, IsFirst = isFirst }); this.currentWrite = this.file.BeginWrite(data, 0, (int)length, null, null); }
internal unsafe FunctionInfo* GetFunctionInfo(TargetProcessPointer ptr) { return (FunctionInfo*)this.TranslatePointer(ptr); }