Example #1
0
        int IDiaStackWalkHelper.registerValue_get(CV_HREG_e Index, out ulong retVal)
        {
            switch (Index)
            {
#if x86
            case CV_HREG_e.CV_REG_EAX: retVal = Context.Eax; return(S_OK);

            case CV_HREG_e.CV_REG_ECX: retVal = Context.Ecx; return(S_OK);

            case CV_HREG_e.CV_REG_EDX: retVal = Context.Edx; return(S_OK);

            case CV_HREG_e.CV_REG_EBX: retVal = Context.Ebx; return(S_OK);

            case CV_HREG_e.CV_REG_ESP: retVal = Context.Esp; return(S_OK);

            case CV_HREG_e.CV_REG_EBP: retVal = Context.Ebp; return(S_OK);

            case CV_HREG_e.CV_REG_ESI: retVal = Context.Esi; return(S_OK);

            case CV_HREG_e.CV_REG_EDI: retVal = Context.Edi; return(S_OK);

            case CV_HREG_e.CV_REG_ES: retVal = Context.SegEs; return(S_OK);

            case CV_HREG_e.CV_REG_CS: retVal = Context.SegCs; return(S_OK);

            case CV_HREG_e.CV_REG_SS: retVal = Context.SegSs; return(S_OK);

            case CV_HREG_e.CV_REG_DS: retVal = Context.SegDs; return(S_OK);

            case CV_HREG_e.CV_REG_FS: retVal = Context.SegFs; return(S_OK);

            case CV_HREG_e.CV_REG_GS: retVal = Context.SegGs; return(S_OK);

            case CV_HREG_e.CV_REG_EIP: retVal = Context.Eip; return(S_OK);

            case CV_HREG_e.CV_REG_EFLAGS: retVal = (ulong)Context.EFlags; return(S_OK);

            case CV_HREG_e.CV_REG_AX: retVal = 0x0000FFFF & Context.Eax; return(S_OK);

            case CV_HREG_e.CV_REG_BX: retVal = 0x0000FFFF & Context.Ebx; return(S_OK);

            case CV_HREG_e.CV_REG_CX: retVal = 0x0000FFFF & Context.Ecx; return(S_OK);

            case CV_HREG_e.CV_REG_DX: retVal = 0x0000FFFF & Context.Edx; return(S_OK);

            case CV_HREG_e.CV_REG_SI: retVal = 0x0000FFFF & Context.Esi; return(S_OK);

            case CV_HREG_e.CV_REG_DI: retVal = 0x0000FFFF & Context.Edi; return(S_OK);

            case CV_HREG_e.CV_REG_SP: retVal = 0x0000FFFF & Context.Esp; return(S_OK);

            case CV_HREG_e.CV_REG_BP: retVal = 0x0000FFFF & Context.Ebp; return(S_OK);
#endif
            default:
                retVal = 0;
                return(E_NOTIMPL);
            }
        }
Example #2
0
        int IDiaStackWalkHelper.registerValue_put(CV_HREG_e Index, ulong newVal)
        {
            switch (Index)
            {
            case CV_HREG_e.CV_REG_EAX: Context.Eax = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_ECX: Context.Ecx = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_EDX: Context.Edx = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_EBX: Context.Ebx = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_ESP: Context.Esp = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_EBP: Context.Ebp = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_ESI: Context.Esi = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_EDI: Context.Edi = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_ES: Context.SegEs = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_CS: Context.SegCs = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_SS: Context.SegSs = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_DS: Context.SegDs = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_FS: Context.SegFs = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_GS: Context.SegGs = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_EIP: Context.Eip = (uint)newVal; return(S_OK);

            case CV_HREG_e.CV_REG_EFLAGS: Context.EFlags = (EFlags)newVal; return(S_OK);
            }
            return(E_NOTIMPL);
        }
Example #3
0
 /// <summary>
 /// Gets register value.
 /// </summary>
 /// <param name="registerId">Register index.</param>
 /// <returns>Register value.</returns>
 public ulong GetRegisterValue(CV_HREG_e registerId)
 {
     return(proxy.GetRegisterValue(threadId, frameId, (uint)registerId));
 }