fixed the CONTAINING_RECORD macro Modified: trunk/reactos/tools/mkhive/registry.h Modified: trunk/reactos/w32api/include/ddk/winddk.h Modified: trunk/reactos/w32api/include/winnt.h _____
Modified: trunk/reactos/tools/mkhive/registry.h --- trunk/reactos/tools/mkhive/registry.h 2005-08-02 03:56:29 UTC (rev 16965) +++ trunk/reactos/tools/mkhive/registry.h 2005-08-02 11:23:40 UTC (rev 16966) @@ -213,8 +213,8 @@
* Type = Type of the whole structure * Field = Name of the field whose address is none */ -#define CONTAINING_RECORD(Address,Type,Field) \ - (Type *)(((LONG)Address) - FIELD_OFFSET(Type,Field)) +#define CONTAINING_RECORD(address, type, field) \ + ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field))))
#define REG_NONE 0 _____
Modified: trunk/reactos/w32api/include/ddk/winddk.h --- trunk/reactos/w32api/include/ddk/winddk.h 2005-08-02 03:56:29 UTC (rev 16965) +++ trunk/reactos/w32api/include/ddk/winddk.h 2005-08-02 11:23:40 UTC (rev 16966) @@ -4744,8 +4744,8 @@
* IN PCHAR Field); */ #ifndef CONTAINING_RECORD -#define CONTAINING_RECORD(Address, Type, Field) \ - ((Type *) (((ULONG_PTR) Address) - FIELD_OFFSET(Type, Field))) +#define CONTAINING_RECORD(address, type, field) \ + ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field)))) #endif
/* LONG _____
Modified: trunk/reactos/w32api/include/winnt.h --- trunk/reactos/w32api/include/winnt.h 2005-08-02 03:56:29 UTC (rev 16965) +++ trunk/reactos/w32api/include/winnt.h 2005-08-02 11:23:40 UTC (rev 16966) @@ -890,7 +890,7 @@
#define FIELD_OFFSET(t,f) ((LONG)&(((t*)0)->f)) #ifndef CONTAINING_RECORD #define CONTAINING_RECORD(address, type, field) \ - ((type*)((PCHAR)(address) - (PCHAR)(&((type *)0)->field))) + ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field)))) #endif /* end winddk.h */ #define IMAGE_SIZEOF_FILE_HEADER 20