本文整理汇总了C#中Microsoft.VisualStudio.Debugger.DkmProcess.GetDataItem方法的典型用法代码示例。如果您正苦于以下问题:C# DkmProcess.GetDataItem方法的具体用法?C# DkmProcess.GetDataItem怎么用?C# DkmProcess.GetDataItem使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.VisualStudio.Debugger.DkmProcess
的用法示例。
在下文中一共展示了DkmProcess.GetDataItem方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Create
public static PyIntObject Create(DkmProcess process, int value) {
var allocator = process.GetDataItem<PyObjectAllocator>();
Debug.Assert(allocator != null);
var result = allocator.Allocate<PyIntObject>();
result.ob_ival.Write(value);
return result;
}
示例2: Create
public static PyComplexObject Create(DkmProcess process, Complex value) {
var allocator = process.GetDataItem<PyObjectAllocator>();
Debug.Assert(allocator != null);
var result = allocator.Allocate<PyComplexObject>();
result.cval.real.Write(value.Real);
result.cval.imag.Write(value.Imaginary);
return result;
}
示例3: Create
public static PyBytesObject Create(DkmProcess process, AsciiString value) {
var allocator = process.GetDataItem<PyObjectAllocator>();
Debug.Assert(allocator != null);
var result = allocator.Allocate<PyBytesObject>(value.Bytes.Length);
result.ob_size.Write(value.Bytes.Length);
process.WriteMemory(result.ob_sval.Address, value.Bytes);
return result;
}
示例4: Create
public static PyUnicodeObject27 Create(DkmProcess process, string value) {
// Allocate string buffer together with the object itself in a single block.
var allocator = process.GetDataItem<PyObjectAllocator>();
Debug.Assert(allocator != null);
var result = allocator.Allocate<PyUnicodeObject27>(value.Length * 2);
result.length.Write(value.Length);
var str = result.Address.OffsetBy(StructProxy.SizeOf<PyUnicodeObject27>(process));
result.str.Raw.Write(str);
var buf = Encoding.Unicode.GetBytes(value);
process.WriteMemory(str, buf);
return result;
}
示例5: Create
public static PyLongObject Create(DkmProcess process, BigInteger value) {
var allocator = process.GetDataItem<PyObjectAllocator>();
Debug.Assert(allocator != null);
var bitsInDigit = process.Is64Bit() ? 30 : 15;
var bytesInDigit = process.Is64Bit() ? 4 : 2;
var absValue = BigInteger.Abs(value);
long numDigits = 0;
for (var t = absValue; t != 0; ) {
++numDigits;
t >>= bitsInDigit;
}
var result = allocator.Allocate<PyLongObject>(numDigits * bytesInDigit);
if (value == 0) {
result.ob_size.Write(0);
} else if (value > 0) {
result.ob_size.Write(numDigits);
} else if (value < 0) {
result.ob_size.Write(-numDigits);
}
if (bitsInDigit == 15) {
for (var digitPtr = new UInt16Proxy(process, result.ob_digit.Address); absValue != 0; digitPtr = digitPtr.GetAdjacentProxy(1)) {
digitPtr.Write((ushort)(absValue % (1 << bitsInDigit)));
absValue >>= bitsInDigit;
}
} else {
for (var digitPtr = new UInt32Proxy(process, result.ob_digit.Address); absValue != 0; digitPtr = digitPtr.GetAdjacentProxy(1)) {
digitPtr.Write((uint)(absValue % (1 << bitsInDigit)));
absValue >>= bitsInDigit;
}
}
return result;
}