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;
}