Make sure that unnamed union/struct are prefix by __GCC_EXTENSION.
authorKai Tietz <ktietz70@googlemail.com>
Sat, 27 Feb 2010 13:53:12 +0000 (13:53 +0000)
committerKai Tietz <ktietz70@googlemail.com>
Sat, 27 Feb 2010 13:53:12 +0000 (13:53 +0000)
svn path=/branches/header-work/; revision=45694

18 files changed:
include/ddk/bdasup.h
include/ddk/d3dhal.h
include/ddk/d3dnthal.h
include/ddk/ddkmapi.h
include/ddk/ddrawi.h
include/ddk/ddrawint.h
include/ddk/dmemmgr.h
include/ddk/ide.h
include/ddk/minitape.h
include/ddk/ndis.h
include/ddk/ntdddisk.h
include/ddk/ntifs.h
include/ddk/stdunk.h
include/ddk/strmini.h
include/ddk/usb.h
include/ddk/usb200.h
include/ddk/usbdi.h
include/ddk/winddk.h

index 69fcece..0bdd590 100644 (file)
@@ -2,6 +2,15 @@
 extern "C" {
 #endif
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #define STDMETHODCALLTYPE __stdcall
 typedef GUID *PGUID;
 
@@ -30,7 +39,7 @@ typedef struct _BDA_FILTER_TEMPLATE
 typedef struct _KSM_PIN
 {
     KSMETHOD    Method;
-    union
+    __GNU_EXTENSION union
     {
         ULONG       PinId;
         ULONG       PinType;
index 7cbe1e9..d4ecc2c 100644 (file)
 #ifndef _D3DHAL_H_
 #define _D3DHAL_H_
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -787,7 +796,7 @@ typedef struct _DD_GETD3DQUERYCOUNTDATA
 typedef struct _DD_GETD3DQUERYDATA
 {
     DD_GETDRIVERINFO2DATA gdi2;
-    union
+    __GNU_EXTENSION union
     {
         DWORD dwQueryIndex;
         D3DQUERYTYPE QueryType;
index b7bb06e..b396e6f 100644 (file)
@@ -9,6 +9,15 @@
 #include <d3dtypes.h>
 #include <d3dcaps.h>
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -22,17 +31,17 @@ DEFINE_GUID(GUID_DDStereoMode,                   0xF828169C, 0xA8E8, 0x11D2, 0xA
 
 typedef struct _D3DNTHAL_CONTEXTCREATEDATA
 {
-    union
+    __GNU_EXTENSION union
     {
         PDD_DIRECTDRAW_GLOBAL lpDDGbl;
         PDD_DIRECTDRAW_LOCAL lpDDLcl;
     };
-    union
+    __GNU_EXTENSION union
     {
         PDD_SURFACE_LOCAL lpDDS;
         PDD_SURFACE_LOCAL lpDDSLcl;
     };
-    union
+    __GNU_EXTENSION union
     {
         PDD_SURFACE_LOCAL lpDDSZ;
         PDD_SURFACE_LOCAL lpDDSZLcl;
@@ -223,7 +232,7 @@ typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA
     PDD_SURFACE_LOCAL lpDDCommands;
     DWORD dwCommandOffset;
     DWORD dwCommandLength;
-    union
+    __GNU_EXTENSION union
     {
         PDD_SURFACE_LOCAL lpDDVertex;
         LPVOID lpVertices;
@@ -233,7 +242,7 @@ typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA
     DWORD dwReqVertexBufSize;
     DWORD dwReqCommandBufSize;
     LPDWORD lpdwRStates;
-    union
+    __GNU_EXTENSION union
     {
         DWORD dwVertexSize;
         HRESULT ddrval;
index 88d52ec..fdd23a9 100644 (file)
 #ifndef __DDKMAPI_INCLUDED__
 #define __DDKMAPI_INCLUDED__
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
 
 #if defined(_DXAPI_)
   #define DXAPI
@@ -219,17 +227,17 @@ typedef struct _DDLOCKOUT
   DWORD  dwFormatFlags;
   DWORD  dwFormatFourCC;
   DWORD  dwFormatBitCount;
-  union
+  __GNU_EXTENSION union
   {
     DWORD  dwRBitMask;
     DWORD  dwYBitMask;
   };
-  union
+  __GNU_EXTENSION union
   {
     DWORD  dwGBitMask;
     DWORD  dwUBitMask;
   };
-  union
+  __GNU_EXTENSION union
   {
     DWORD  dwBBitMask;
     DWORD  dwVBitMask;
index a133f71..6b658ff 100644 (file)
 #ifndef __DDRAWI_INCLUDED__
 #define __DDRAWI_INCLUDED__
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -203,13 +212,13 @@ typedef struct _DDHALMODEINFO {
 typedef struct _VIDMEM {
     DWORD      dwFlags;
     FLATPTR    fpStart;
-    union {
+    __GNU_EXTENSION union {
        FLATPTR         fpEnd;
        DWORD           dwWidth;
     };
     DDSCAPS    ddsCaps;
     DDSCAPS    ddsCapsAlt;
-    union {
+    __GNU_EXTENSION union {
        LPVMEMHEAP      lpHeap;
        DWORD           dwHeight;
     };
@@ -1404,21 +1413,21 @@ typedef struct _DDRAWI_DDRAWSURFACE_INT {
 typedef struct _DDRAWI_DDRAWSURFACE_GBL {
     DWORD                      dwRefCnt;
     DWORD                      dwGlobalFlags;
-    union {
+    __GNU_EXTENSION union {
        LPACCESSRECTLIST        lpRectList;
        DWORD                       dwBlockSizeY;
        LONG                lSlicePitch;
     };
-    union {
+    __GNU_EXTENSION union {
        LPVMEMHEAP              lpVidMemHeap;
        DWORD                   dwBlockSizeX;
     };
-    union {
+    __GNU_EXTENSION union {
        LPDDRAWI_DIRECTDRAW_GBL lpDD;
        LPVOID                  lpDDHandle;
     };
     FLATPTR                    fpVidMem;
-    union {
+    __GNU_EXTENSION union {
        LONG                    lPitch;
        DWORD                   dwLinearSize;
     };
@@ -1454,7 +1463,7 @@ typedef struct _DDRAWI_DDRAWSURFACE_GBL {
 
 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE {
     DWORD                      dwSize;
-    union {
+    __GNU_EXTENSION union {
        DWORD                   dwPhysicalPageTable;
        FLATPTR                 fpPhysicalVidMem;
     };
@@ -1551,15 +1560,15 @@ typedef struct _DDRAWI_DDRAWSURFACE_LCL {
     DWORD                      dwProcessId;
     DWORD                      dwFlags;
     DDSCAPS                    ddsCaps;
-       union
+    __GNU_EXTENSION union
     {
-    LPDDRAWI_DDRAWPALETTE_INT  lpDDPalette;
+       LPDDRAWI_DDRAWPALETTE_INT       lpDDPalette;
        LPDDRAWI_DDRAWPALETTE_INT   lp16DDPalette;
-       };
-       union
+    };
+    __GNU_EXTENSION union
     {
-    LPDDRAWI_DDRAWCLIPPER_LCL   lpDDClipper;
-    LPDDRAWI_DDRAWCLIPPER_INT   lp16DDClipper;
+       LPDDRAWI_DDRAWCLIPPER_LCL   lpDDClipper;
+       LPDDRAWI_DDRAWCLIPPER_INT   lp16DDClipper;
     };
     DWORD                      dwModeCreatedIn;
     DWORD                      dwBackBufferCount;
@@ -1628,7 +1637,7 @@ typedef struct _DDRAWI_DDRAWPALETTE_GBL {
     LPDDRAWI_DIRECTDRAW_LCL    lpDD_lcl;
     DWORD                      dwProcessId;
     LPPALETTEENTRY             lpColorTable;
-    union {
+    __GNU_EXTENSION union {
        ULONG_PTR               dwReserved1;
        HPALETTE                hHELGDIPalette;
     };
@@ -1762,7 +1771,7 @@ typedef struct _DDMCBUFFERINFO
 
 typedef struct _DDHAL_GETDRIVERSTATEDATA {
     DWORD                       dwFlags;
-    union
+    __GNU_EXTENSION union
     {
         ULONG_PTR               dwhContext;
     };
index b1af17b..b78c209 100644 (file)
@@ -5,6 +5,14 @@
 #ifndef __DD_INCLUDED__
 #define __DD_INCLUDED__
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
 
 DEFINE_GUID( GUID_MiscellaneousCallbacks,  0xEFD60CC0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a);
 DEFINE_GUID( GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A);
@@ -81,14 +89,14 @@ typedef struct _VIDEOMEMORY
 {
     DWORD          dwFlags;
     FLATPTR        fpStart;
-    union
+    __GNU_EXTENSION union
     {
         FLATPTR    fpEnd;
         DWORD      dwWidth;
     };
     DDSCAPS        ddsCaps;
     DDSCAPS        ddsCapsAlt;
-    union
+    __GNU_EXTENSION union
     {
         struct _VMEMHEAP *lpHeap;
         DWORD      dwHeight;
@@ -128,13 +136,13 @@ typedef struct _DD_DIRECTDRAW_LOCAL
 
 typedef struct _DD_SURFACE_GLOBAL
 {
-    union
+    __GNU_EXTENSION union
     {
         DWORD        dwBlockSizeY;
         LONG         lSlicePitch;
     };
 
-    union
+    __GNU_EXTENSION union
     {
         PVIDEOMEMORY lpVidMemHeap;
         DWORD        dwBlockSizeX;
@@ -142,7 +150,7 @@ typedef struct _DD_SURFACE_GLOBAL
     };
 
     FLATPTR          fpVidMem;
-    union
+    __GNU_EXTENSION union
     {
         LONG         lPitch;
         DWORD        dwLinearSize;
@@ -174,12 +182,12 @@ typedef struct _DD_SURFACE_LOCAL
        DWORD              dwFlags;
        DDSCAPS            ddsCaps;
        ULONG_PTR          dwReserved1;
-       union
+       __GNU_EXTENSION union
        {
                DDCOLORKEY     ddckCKSrcOverlay;
                DDCOLORKEY     ddckCKSrcBlt;
        };
-       union
+       __GNU_EXTENSION union
        {
                DDCOLORKEY     ddckCKDestOverlay;
                DDCOLORKEY     ddckCKDestBlt;
@@ -591,7 +599,7 @@ typedef DWORD (WINAPI *PDD_CREATESURFACEEX)(PDD_CREATESURFACEEXDATA);
 typedef struct _DD_GETDRIVERSTATEDATA
 {
        DWORD                     dwFlags;
-       union
+       __GNU_EXTENSION union
        {
                PDD_DIRECTDRAW_GLOBAL lpDD;
                DWORD_PTR             dwhContext;
index ee9b0a9..3d11f0b 100644 (file)
 #ifndef __DMEMMGR_INCLUDED__
 #define __DMEMMGR_INCLUDED__
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -70,7 +79,7 @@ typedef struct _VMEMR
 
 typedef struct _SURFACEALIGNMENT
 {
-  union
+  __GNU_EXTENSION union
   {
     struct
     {
index 83da58a..5744a3f 100644 (file)
 #ifndef __IDE_H
 #define __IDE_H
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -104,7 +113,7 @@ typedef struct _EXTENDED_IDENTIFY_DATA {
   USHORT UnformattedBytesPerTrack;   /* 08 */
   USHORT UnformattedBytesPerSector;  /* 10 */
   USHORT NumSectorsPerTrack;         /* 12 */
-  union
+  __GNU_EXTENSION union
   {
     USHORT VendorUnique1[3];         /* 14 */
     struct
index f1d2b22..d8f7532 100644 (file)
 #ifndef __MINITAPE_H
 #define __MINITAPE_H
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -77,9 +86,9 @@ typedef struct _INQUIRYDATA {
        UCHAR  DeviceTypeQualifier : 3;
        UCHAR  DeviceTypeModifier : 7;
        UCHAR  RemovableMedia : 1;
-       union {
+       __GNU_EXTENSION union {
                UCHAR  Versions;
-               struct {
+               __GNU_EXTENSION struct {
                        UCHAR  ANSIVersion : 3;
                        UCHAR  ECMAVersion : 3;
                        UCHAR  ISOVersion : 2;
index 023b103..b08fb68 100644 (file)
 #ifndef __NDIS_H
 #define __NDIS_H
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #include "ntddk.h"
 #include "ntddndis.h"
 #include "netpnp.h"
@@ -238,8 +247,8 @@ typedef union _NDIS_RW_LOCK_REFCOUNT {
 } NDIS_RW_LOCK_REFCOUNT;
 
 typedef struct _NDIS_RW_LOCK {
-  union {
-    struct {
+  __GNU_EXTENSION union {
+    __GNU_EXTENSION struct {
       KSPIN_LOCK  SpinLock;
       PVOID  Context;
     };
@@ -380,16 +389,16 @@ typedef struct _NDIS_PACKET_PRIVATE {
 
 typedef struct _NDIS_PACKET {
   NDIS_PACKET_PRIVATE  Private;
-  union {
-    struct {
+  __GNU_EXTENSION union {
+    __GNU_EXTENSION struct {
       UCHAR  MiniportReserved[2 * sizeof(PVOID)];
       UCHAR  WrapperReserved[2 * sizeof(PVOID)];
     };
-    struct {
+    __GNU_EXTENSION struct {
       UCHAR  MiniportReservedEx[3 * sizeof(PVOID)];
       UCHAR  WrapperReservedEx[sizeof(PVOID)];
     };
-    struct {
+    __GNU_EXTENSION struct {
       UCHAR  MacReserved[4 * sizeof(PVOID)];
     };
   };
@@ -474,7 +483,7 @@ typedef struct _NDIS_REQUEST {
  } DATA;
 #if (defined(NDIS50) || defined(NDIS51))
   UCHAR  NdisReserved[9 * sizeof(PVOID)];
-  union {
+  __GNU_EXTENSION union {
     UCHAR  CallMgrReserved[2 * sizeof(PVOID)];
     UCHAR  ProtocolReserved[2 * sizeof(PVOID)];
   };
index 716609b..e7c89a1 100644 (file)
 #ifndef __NTDDDISK_H
 #define __NTDDDISK_H
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #include "ntddstor.h"
 
 #ifdef __cplusplus
@@ -394,7 +403,7 @@ typedef struct _DRIVE_LAYOUT_INFORMATION_GPT {
 typedef struct _DRIVE_LAYOUT_INFORMATION_EX {
   ULONG  PartitionStyle;
   ULONG  PartitionCount;
-  union {
+  __GNU_EXTENSION union {
     DRIVE_LAYOUT_INFORMATION_MBR  Mbr;
     DRIVE_LAYOUT_INFORMATION_GPT  Gpt;
   };
index ae1e502..dd58ed2 100644 (file)
 #define _NTIFS_
 #define _GNU_NTIFS_
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #define NTKERNELAPI DECLSPEC_IMPORT
 
 #include <ntddk.h>
@@ -962,7 +971,7 @@ typedef struct _REPARSE_DATA_BUFFER {
     ULONG  ReparseTag;
     USHORT ReparseDataLength;
     USHORT Reserved;
-    union {
+    __GNU_EXTENSION union {
         struct {
             USHORT SubstituteNameOffset;
             USHORT SubstituteNameLength;
@@ -1351,11 +1360,11 @@ typedef struct _FILE_OBJECTID_INFORMATION {
     LONGLONG        FileReference;
     UCHAR           ObjectId[16];
     _ANONYMOUS_UNION union {
-        struct {
+        __GNU_EXTENSION struct {
             UCHAR   BirthVolumeId[16];
             UCHAR   BirthObjectId[16];
             UCHAR   DomainId[16];
-        } ;
+        };
         UCHAR       ExtendedInfo[48];
     } DUMMYUNIONNAME;
 } FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
@@ -1985,13 +1994,13 @@ typedef struct _PORT_MESSAGE
         } s2;
         ULONG ZeroInit;
     } u2;
-    union
+    __GNU_EXTENSION union
     {
         LPC_CLIENT_ID ClientId;
         double DoNotUseThisField;
     };
     ULONG MessageId;
-    union
+    __GNU_EXTENSION union
     {
         LPC_SIZE_T ClientViewSize;
         ULONG CallbackId;
index d4652f6..c50e5b1 100644 (file)
 
 #include <punknown.h>
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 /* ===============================================================
     INonDelegatingUnknown interface
 */
@@ -110,7 +119,7 @@ Unknown_Release(
 
 typedef struct CUnknown
 {
-    union
+    __GNU_EXTENSION union
     {
         IUnknown IUnknown;
         INonDelegatingUnknown INonDelegatingUnknown;
index a223fa2..1558174 100644 (file)
@@ -5,6 +5,15 @@
 #include <windef.h>
 #include <ks.h>
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #define STREAMAPI __stdcall
 #define STREAM_SYSTEM_TIME_MASK   ((STREAM_SYSTEM_TIME)0x00000001FFFFFFFF)
 
@@ -61,7 +70,7 @@ typedef struct _HW_EVENT_DESCRIPTOR
     BOOLEAN Enable;
     PKSEVENT_ENTRY EventEntry;
     PKSEVENTDATA EventData;
-    union
+    __GNU_EXTENSION union
     {
         struct _HW_STREAM_OBJECT * StreamObject;
         struct _HW_DEVICE_EXTENSION *DeviceExtension;
@@ -285,7 +294,7 @@ typedef struct _HW_STREAM_REQUEST_BLOCK
     ULONG           Flags;
     PVOID       HwInstanceExtension;
 
-    union
+    __GNU_EXTENSION union
        {
         ULONG           NumberOfBytesToTransfer;
         ULONG           ActualBytesTransferred;
@@ -376,11 +385,11 @@ typedef enum _STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE
 
 typedef struct _HW_INITIALIZATION_DATA {
 #if (NTDDI_VERSION >= NTDDI_WINXP)
-    union
-       {
+    __GNU_EXTENSION union
+    {
         ULONG           HwInitializationDataSize;
-        struct
-               {
+        __GNU_EXTENSION struct
+       {
             USHORT      SizeOfThisPacket;
             USHORT      StreamClassVersion;
         };
index 4a294b1..0ac209d 100644 (file)
@@ -3,6 +3,15 @@
 #ifndef   __USB_H__
 #define   __USB_H__
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #ifdef __USBDI_H__
 error
 #endif
@@ -323,7 +332,7 @@ struct _URB_ISOCH_TRANSFER
 
 typedef struct _URB
 {
-  union
+  __GNU_EXTENSION union
   {
       struct _URB_HEADER
          UrbHeader;
index 7419b7f..2dea201 100644 (file)
@@ -1,6 +1,15 @@
 #ifndef   __USB200_H__
 #define   __USB200_H__
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #include "usb100.h"
 
 #include <pshpack1.h>
@@ -37,7 +46,7 @@ typedef struct _USB_DEFAULT_PIPE_SETUP_PACKET
   UCHAR bRequest;
   union _wValue
   {
-    struct
+    __GNU_EXTENSION struct
     {
       UCHAR LowByte;
       UCHAR HiByte;
@@ -46,7 +55,7 @@ typedef struct _USB_DEFAULT_PIPE_SETUP_PACKET
   } wValue;
   union _wIndex
   {
-    struct
+    __GNU_EXTENSION struct
     {
       UCHAR LowByte;
       UCHAR HiByte;
index 7dd565f..739a013 100644 (file)
 #ifndef __USBDI_H
 #define __USBDI_H
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #ifdef __USB_H
 #error usb.h cannot be included with usbdi.h
 #else
@@ -372,7 +381,7 @@ typedef struct _USBD_VERSION_INFORMATION {
 } USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;
 
 typedef struct _URB {
-       union {
+       __GNU_EXTENSION union {
                struct _URB_HEADER  UrbHeader;
                struct _URB_SELECT_INTERFACE  UrbSelectInterface;
                struct _URB_SELECT_CONFIGURATION  UrbSelectConfiguration;
index a2bbeb1..3c16d90 100644 (file)
 #ifndef __WINDDK_H
 #define __WINDDK_H
 
+/* Helper macro to enable gcc's extension.  */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -556,7 +565,7 @@ typedef struct _KUSER_SHARED_DATA
     ULONG SystemCall;
     ULONG SystemCallReturn;
     ULONGLONG SystemCallPad[3];
-    union {
+    __GNU_EXTENSION union {
         volatile KSYSTEM_TIME TickCount;
         volatile ULONG64 TickCountQuad;
     };
@@ -569,10 +578,10 @@ typedef struct _KUSER_SHARED_DATA
     USHORT UserModeGlobalLogger[8];
     ULONG HeapTracingPid[2];
     ULONG CritSecTracingPid[2];
-    union
+    __GNU_EXTENSION union
     {
         ULONG SharedDataFlags;
-        struct
+        __GNU_EXTENSION struct
         {
             ULONG DbgErrorPortPresent:1;
             ULONG DbgElevationEnabled:1;
@@ -1276,9 +1285,9 @@ typedef struct _KGUARDED_MUTEX
     PKTHREAD Owner;
     ULONG Contention;
     KGATE Gate;
-    union
+    __GNU_EXTENSION union
     {
-        struct
+        __GNU_EXTENSION struct
         {
             SHORT KernelApcDisable;
             SHORT SpecialApcDisable;
@@ -4591,7 +4600,7 @@ typedef struct _NT_TIB32 {
        ULONG StackBase;
        ULONG StackLimit;
        ULONG SubSystemTib;
-       union {
+       __GNU_EXTENSION union {
                ULONG FiberData;
                ULONG Version;
        };
@@ -4604,7 +4613,7 @@ typedef struct _NT_TIB64 {
        ULONG64 StackBase;
        ULONG64 StackLimit;
        ULONG64 SubSystemTib;
-       union {
+       __GNU_EXTENSION union {
                ULONG64 FiberData;
                ULONG Version;
        };
@@ -4705,7 +4714,7 @@ typedef struct _PROCESS_WS_WATCH_INFORMATION
 
 typedef struct _PROCESS_DEVICEMAP_INFORMATION
 {
-    union
+    __GNU_EXTENSION union
     {
         struct
         {
@@ -5382,10 +5391,10 @@ extern NTKERNELAPI ULONG_PTR MmUserProbeAddress;
 
 typedef struct _KPCR
 {
-    union
+    __GNU_EXTENSION union
     {
         NT_TIB NtTib;
-        struct
+        __GNU_EXTENSION struct
         {
             union _KGDTENTRY64 *GdtBase;
             struct _KTSS64 *TssBase;