刘收获

导航

CONTAINING_RECORD的实现

// 9.25.cpp : 定义控制台应用程序的入口点。
//
/*----------------------------CONTAINING_RECODER的实现------------------------*/
#include "stdafx.h"
#include <windows.h>


typedef struct _DATA_
{
int a;
int b;
int c;
int d;
}DATA,*PDATA;

DATA Sub_1();


DWORD WINAPI VectoredHandler(PEXCEPTION_POINTERS Exception);
int main()
{

DATA Object;
Object.a = 10;
Object.b = 20;
Object.c = 30;
Object.d = 40;

 


int* v1 = &Object.c; //c的绝对地址


ULONG_PTR v2 = (ULONG_PTR)&((PDATA)0)->c; //c与结构体的相对地址

ULONG_PTR* v3 = (ULONG_PTR*)((ULONG_PTR)v1 - v2); //计算出结构体绝对地址


printf("%d\r\n", ((PDATA)v3)->a);
printf("%d\r\n", v2); //c与结构体的相对地址


printf("%d\r\n", Object.a);

return 0;
}

posted on 2016-09-25 23:11  沉疴  阅读(157)  评论(0编辑  收藏  举报