diff --git a/mingw-w64-headers/include/windows.storage.h b/mingw-w64-headers/include/windows.storage.h
index ef3fff7..6c34a02 100644
--- a/mingw-w64-headers/include/windows.storage.h
+++ b/mingw-w64-headers/include/windows.storage.h
@@ -359,13 +359,21 @@
 namespace ABI {
     namespace Windows {
         namespace Storage {
-            enum StorageDeleteOption;
+            enum NameCollisionOption {
+                NameCollisionOption_GenerateUniqueName = 0,
+                NameCollisionOption_ReplaceExisting = 1,
+                NameCollisionOption_FailIfExists = 2
+            };
         }
     }
 }
 extern "C" {
 #else
-enum __x_ABI_CWindows_CStorage_CStorageDeleteOption;
+enum __x_ABI_CWindows_CStorage_CNameCollisionOption {
+    NameCollisionOption_GenerateUniqueName = 0,
+    NameCollisionOption_ReplaceExisting = 1,
+    NameCollisionOption_FailIfExists = 2
+};
 #endif
 
 #ifdef __cplusplus
@@ -373,13 +381,19 @@
 namespace ABI {
     namespace Windows {
         namespace Storage {
-            enum NameCollisionOption;
+            enum StorageDeleteOption {
+                StorageDeleteOption_Default = 0,
+                StorageDeleteOption_PermanentDelete = 1
+            };
         }
     }
 }
 extern "C" {
 #else
-enum __x_ABI_CWindows_CStorage_CNameCollisionOption;
+enum __x_ABI_CWindows_CStorage_CStorageDeleteOption {
+    StorageDeleteOption_Default = 0,
+    StorageDeleteOption_PermanentDelete = 1
+};
 #endif
 
 #ifdef __cplusplus
@@ -387,13 +401,21 @@
 namespace ABI {
     namespace Windows {
         namespace Storage {
-            enum StorageItemTypes;
+            enum StorageItemTypes {
+                StorageItemTypes_None = 0,
+                StorageItemTypes_File = 1,
+                StorageItemTypes_Folder = 2
+            };
         }
     }
 }
 extern "C" {
 #else
-enum __x_ABI_CWindows_CStorage_CStorageItemTypes;
+enum __x_ABI_CWindows_CStorage_CStorageItemTypes {
+    StorageItemTypes_None = 0,
+    StorageItemTypes_File = 1,
+    StorageItemTypes_Folder = 2
+};
 #endif
 
 #ifdef __cplusplus
@@ -401,13 +423,19 @@
 namespace ABI {
     namespace Windows {
         namespace Storage {
-            enum ApplicationDataLocality;
+            enum ApplicationDataCreateDisposition {
+                ApplicationDataCreateDisposition_Always = 0,
+                ApplicationDataCreateDisposition_Existing = 1
+            };
         }
     }
 }
 extern "C" {
 #else
-enum __x_ABI_CWindows_CStorage_CApplicationDataLocality;
+enum __x_ABI_CWindows_CStorage_CApplicationDataCreateDisposition {
+    ApplicationDataCreateDisposition_Always = 0,
+    ApplicationDataCreateDisposition_Existing = 1
+};
 #endif
 
 #ifdef __cplusplus
@@ -415,13 +443,21 @@
 namespace ABI {
     namespace Windows {
         namespace Storage {
-            enum ApplicationDataCreateDisposition;
+            enum ApplicationDataLocality {
+                ApplicationDataLocality_Local = 0,
+                ApplicationDataLocality_Roaming = 1,
+                ApplicationDataLocality_Temporary = 2
+            };
         }
     }
 }
 extern "C" {
 #else
-enum __x_ABI_CWindows_CStorage_CApplicationDataCreateDisposition;
+enum __x_ABI_CWindows_CStorage_CApplicationDataLocality {
+    ApplicationDataLocality_Local = 0,
+    ApplicationDataLocality_Roaming = 1,
+    ApplicationDataLocality_Temporary = 2
+};
 #endif
 
 #ifdef __cplusplus
@@ -429,13 +465,25 @@
 namespace ABI {
     namespace Windows {
         namespace Storage {
-            enum FileAttributes;
+            enum FileAttributes {
+                FileAttributes_Normal = 0,
+                FileAttributes_ReadOnly = 1,
+                FileAttributes_Directory = 2,
+                FileAttributes_Archive = 3,
+                FileAttributes_Temporary = 4
+            };
         }
     }
 }
 extern "C" {
 #else
-enum __x_ABI_CWindows_CStorage_CFileAttributes;
+enum __x_ABI_CWindows_CStorage_CFileAttributes {
+    FileAttributes_Normal = 0,
+    FileAttributes_ReadOnly = 1,
+    FileAttributes_Directory = 2,
+    FileAttributes_Archive = 3,
+    FileAttributes_Temporary = 4
+};
 #endif
 
 #ifdef __cplusplus
@@ -443,13 +491,23 @@
 namespace ABI {
     namespace Windows {
         namespace Storage {
-            enum CreationCollisionOption;
+            enum CreationCollisionOption {
+                CreationCollisionOption_GenerateUniqueName = 0,
+                CreationCollisionOption_ReplaceExisting = 1,
+                CreationCollisionOption_FailIfExists = 2,
+                CreationCollisionOption_OpenIfExists = 3
+            };
         }
     }
 }
 extern "C" {
 #else
-enum __x_ABI_CWindows_CStorage_CCreationCollisionOption;
+enum __x_ABI_CWindows_CStorage_CCreationCollisionOption {
+    CreationCollisionOption_GenerateUniqueName = 0,
+    CreationCollisionOption_ReplaceExisting = 1,
+    CreationCollisionOption_FailIfExists = 2,
+    CreationCollisionOption_OpenIfExists = 3
+};
 #endif
 
 /*****************************************************************************
@@ -474,7 +532,7 @@
 
                 virtual HRESULT STDMETHODCALLTYPE RenameAsync(
                     HSTRING desiredName,
-                    enum NameCollisionoption option,
+                    enum NameCollisionOption option,
                     IInspectable **action) = 0;
 
                 virtual HRESULT STDMETHODCALLTYPE DeleteAsyncOverloadDefaultOptions(
@@ -550,7 +608,7 @@
     HRESULT (STDMETHODCALLTYPE *RenameAsync)(
         __x_ABI_CWindows_CStorage_CIStorageItem *This,
         HSTRING desiredName,
-        enum __x_ABI_CWindows_CStorage_CNameCollisionoption option,
+        enum __x_ABI_CWindows_CStorage_CNameCollisionOption option,
         IInspectable **action);
 
     HRESULT (STDMETHODCALLTYPE *DeleteAsyncOverloadDefaultOptions)(
@@ -640,7 +698,7 @@
 static FORCEINLINE HRESULT __x_ABI_CWindows_CStorage_CIStorageItem_RenameAsyncOverloadDefaultOptions(__x_ABI_CWindows_CStorage_CIStorageItem* This,HSTRING desiredName,IInspectable **action) {
     return This->lpVtbl->RenameAsyncOverloadDefaultOptions(This,desiredName,action);
 }
-static FORCEINLINE HRESULT __x_ABI_CWindows_CStorage_CIStorageItem_RenameAsync(__x_ABI_CWindows_CStorage_CIStorageItem* This,HSTRING desiredName,enum __x_ABI_CWindows_CStorage_CNameCollisionoption option,IInspectable **action) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CStorage_CIStorageItem_RenameAsync(__x_ABI_CWindows_CStorage_CIStorageItem* This,HSTRING desiredName,enum __x_ABI_CWindows_CStorage_CNameCollisionOption option,IInspectable **action) {
     return This->lpVtbl->RenameAsync(This,desiredName,option,action);
 }
 static FORCEINLINE HRESULT __x_ABI_CWindows_CStorage_CIStorageItem_DeleteAsyncOverloadDefaultOptions(__x_ABI_CWindows_CStorage_CIStorageItem* This,IInspectable **action) {
diff --git a/mingw-w64-headers/include/windows.storage.idl b/mingw-w64-headers/include/windows.storage.idl
index ddc292a..0c7b006 100644
--- a/mingw-w64-headers/include/windows.storage.idl
+++ b/mingw-w64-headers/include/windows.storage.idl
@@ -33,60 +33,60 @@
     interface ApplicationDataSetVersionHandler; //delegate
     interface ISetVersionRequest;
     interface ISetVersionDeferral;
-    enum StorageDeleteOption;
-    enum NameCollisionOption;
-    enum StorageItemTypes;
-    enum ApplicationDataLocality;
-    enum ApplicationDataCreateDisposition;
-    enum FileAttributes;
-    enum CreationCollisionOption;
+    typedef enum StorageDeleteOption StorageDeleteOption;
+    typedef enum NameCollisionOption NameCollisionOption;
+    typedef enum StorageItemTypes StorageItemTypes;
+    typedef enum ApplicationDataLocality ApplicationDataLocality;
+    typedef enum ApplicationDataCreateDisposition ApplicationDataCreateDisposition;
+    typedef enum FileAttributes FileAttributes;
+    typedef enum CreationCollisionOption CreationCollisionOption;
   }
 }
 
 namespace Windows {
   namespace Storage {
-    typedef enum NameCollisionoption {
-      NameCollisionoption_GenerateUniqueName,
-      NameCollisionoption_ReplaceExisting,
-      NameCollisionoption_FailIfExists
-    } NameCollisionOption;
+    enum NameCollisionOption {
+      GenerateUniqueName,
+      ReplaceExisting,
+      FailIfExists
+    };
 
-    typedef enum StorageDeleteOption {
-      StorageDeleteOption_Default,
-      StorageDeleteOption_PermanentDelete
-    } StorageDeleteOption;
+    enum StorageDeleteOption {
+      Default,
+      PermanentDelete
+    };
 
-    typedef enum StorageItemTypes {
-      StorageItemTypes_None,
-      StorageItemTypes_File,
-      StorageItemTypes_Folder
-    } StorageItemTypes;
+    enum StorageItemTypes {
+      None,
+      File,
+      Folder
+    };
 
-    typedef enum ApplicationDataCreateDisposition {
-      ApplicationDataCreateDisposition_Always,
-      ApplicationDataCreateDisposition_Existing
-    } ApplicationDataCreateDisposition;
+    enum ApplicationDataCreateDisposition {
+      Always,
+      Existing
+    };
 
-    typedef enum ApplicationDataLocality {
-      ApplicationDataLocality_Local,
-      ApplicationDataLocality_Roaming,
-      ApplicationDataLocality_Temporary
-    } ApplicationDataLocality;
+    enum ApplicationDataLocality {
+      Local,
+      Roaming,
+      Temporary
+    };
 
-    typedef enum FileAttributes {
-      FileAttributes_Normal,
-      FileAttributes_ReadOnly,
-      FileAttributes_Directory,
-      FileAttributes_Archive,
-      FileAttributes_Temporary
-    } FileAttributes;
+    enum FileAttributes {
+      Normal,
+      ReadOnly,
+      Directory,
+      Archive,
+      Temporary
+    };
 
-    typedef enum CreationCollisionOption {
-      CreationCollisionOption_GenerateUniqueName,
-      CreationCollisionOption_ReplaceExisting,
-      CreationCollisionOption_FailIfExists,
-      CreationCollisionOption_OpenIfExists
-    } CreationCollisionOption;
+    enum CreationCollisionOption {
+      GenerateUniqueName,
+      ReplaceExisting,
+      FailIfExists,
+      OpenIfExists
+    };
 
     [uuid(4207A996-CA2F-42F7-BDE8-8B10457A7F30)]
     interface IStorageItem : IInspectable
