PDWORD lpAddr = (DWORD*)&(pThunk->u1.Function );当中的&什么意思~? 是按位"与"吗?用调试器观察:pThunk->u1.Function=0x7c80b6a1,运行这句代码之后lpaddr=0x0042513c,这是则么出来的?这样有什么意思?谢谢

解决方案 »

  1.   

    &是引用在这里是用来强制转化, 函数地址的强制转换用这个方法比较方便lpaddr=0x0042513c 这个值是Function的地址例:
    #define GET_FUN(_Fun) ((VOID *)(&(DWORD &)(_Fun)))
      

  2.   

    取地址操作pThunk-> u1.Function   是 u1.Function 的内容&(pThunk-> u1.Function   ); 是 u1.Function 在内存中的地址(DWORD*)&(pThunk-> u1.Function   ); 强制说明内存中的地址是一个 DWORD* 类型
    估计这个操作是取出 Function 在内存中的地址,然后强制转成 DWROD 数据指针,查看程序2进制代码
      

  3.   

    int n=123;
    int pn=&n;取地址
      

  4.   

    int   n=123;
    int*   pn=&n;取地址
      

  5.   

    靠~~~~~原来就是个取地址~~~~和(DWORD*)放一块就不认识了~~~~~孕 失误失误  结题