public override object GetArgumentValue(DkmStackWalkFrame frame, int index) { byte[] argumentBuffer = ReadArgumentBytes(frame); int wordZeroIndex = 0; for (int i = 0; i < index; ++i) { wordZeroIndex += _parameters[i].GetPaddedSize(WordSize); } FunctionParameter requestedParameter = _parameters[index]; int requestedParamSize = requestedParameter.GetSize(WordSize); byte[] result = new byte[requestedParamSize]; Array.ConstrainedCopy(argumentBuffer, wordZeroIndex, result, 0, requestedParamSize); switch (requestedParamSize) { case 4: return(BitConverter.ToUInt32(result, 0)); case 8: return(BitConverter.ToUInt64(result, 0)); default: return(result); } }