headers: update windows.security.cryptography.h
diff --git a/mingw-w64-headers/include/windows.security.cryptography.h b/mingw-w64-headers/include/windows.security.cryptography.h
index 2525b1d..78c71c8 100644
--- a/mingw-w64-headers/include/windows.security.cryptography.h
+++ b/mingw-w64-headers/include/windows.security.cryptography.h
@@ -1,11 +1,12 @@
-/*** Autogenerated by WIDL 1.5.31 from include/windows.security.cryptography.idl - Do not edit ***/
+/*** Autogenerated by WIDL 6.0-rc1 from include/windows.security.cryptography.idl - Do not edit ***/
 
+#ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
 #endif
-
 #include <rpc.h>
 #include <rpcndr.h>
+#endif
 
 #ifndef COM_NO_WINDOWS_H
 #include <windows.h>
@@ -17,9 +18,20 @@
 
 /* Forward declarations */
 
-#ifndef __ICryptographicBufferStatics_FWD_DEFINED__
-#define __ICryptographicBufferStatics_FWD_DEFINED__
-typedef interface ICryptographicBufferStatics ICryptographicBufferStatics;
+#ifndef ____x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_FWD_DEFINED__
+#define ____x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics;
+#ifdef __cplusplus
+namespace ABI {
+    namespace Windows {
+        namespace Security {
+            namespace Cryptography {
+                interface ICryptographicBufferStatics;
+            }
+        }
+    }
+}
+#endif /* __cplusplus */
 #endif
 
 /* Headers for imported files */
@@ -31,257 +43,308 @@
 extern "C" {
 #endif
 
-#ifndef __IBuffer_FWD_DEFINED__
-#define __IBuffer_FWD_DEFINED__
-typedef interface IBuffer IBuffer;
+#ifndef ____x_ABI_CWindows_CStorage_CStreams_CIBuffer_FWD_DEFINED__
+#define ____x_ABI_CWindows_CStorage_CStreams_CIBuffer_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CStorage_CStreams_CIBuffer __x_ABI_CWindows_CStorage_CStreams_CIBuffer;
+#ifdef __cplusplus
+namespace ABI {
+    namespace Windows {
+        namespace Storage {
+            namespace Streams {
+                interface IBuffer;
+            }
+        }
+    }
+}
+#endif /* __cplusplus */
 #endif
 
-#ifndef __ICryptographicBufferStatics_FWD_DEFINED__
-#define __ICryptographicBufferStatics_FWD_DEFINED__
-typedef interface ICryptographicBufferStatics ICryptographicBufferStatics;
+#ifndef ____x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_FWD_DEFINED__
+#define ____x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics;
+#ifdef __cplusplus
+namespace ABI {
+    namespace Windows {
+        namespace Security {
+            namespace Cryptography {
+                interface ICryptographicBufferStatics;
+            }
+        }
+    }
+}
+#endif /* __cplusplus */
 #endif
 
-enum BinaryStringEncoding;
+#ifdef __cplusplus
+} /* extern "C" */
+namespace ABI {
+    namespace Windows {
+        namespace Security {
+            namespace Cryptography {
+                enum BinaryStringEncoding {
+                    BinaryStringEncoding_Utf8 = 0,
+                    BinaryStringEncoding_Utf16LE = 1,
+                    BinaryStringEncoding_Utf16BE = 2
+                };
+            }
+        }
+    }
+}
+extern "C" {
+#else
+enum __x_ABI_CWindows_CSecurity_CCryptography_CBinaryStringEncoding {
+    BinaryStringEncoding_Utf8 = 0,
+    BinaryStringEncoding_Utf16LE = 1,
+    BinaryStringEncoding_Utf16BE = 2
+};
+#endif
 
-typedef enum BinaryStringEncoding {
-    Utf8 = 0,
-    Utf16LE = 1,
-    Utf16BE = 2
-} BinaryStringEncoding;
 /*****************************************************************************
  * ICryptographicBufferStatics interface
+ *
  */
-#ifndef __ICryptographicBufferStatics_INTERFACE_DEFINED__
-#define __ICryptographicBufferStatics_INTERFACE_DEFINED__
+#ifndef ____x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_INTERFACE_DEFINED__
+#define ____x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_INTERFACE_DEFINED__
 
-DEFINE_GUID(IID_ICryptographicBufferStatics, 0x320b7e22, 0x3cb0, 0x4cdf, 0x86,0x63, 0x1d,0x28,0x91,0x00,0x65,0xeb);
+DEFINE_GUID(IID___x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics, 0x320b7e22, 0x3cb0, 0x4cdf, 0x86,0x63, 0x1d,0x28,0x91,0x00,0x65,0xeb);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-MIDL_INTERFACE("320b7e22-3cb0-4cdf-8663-1d28910065eb")
-ICryptographicBufferStatics : public IInspectable
-{
-    virtual HRESULT STDMETHODCALLTYPE Compare(
-        IBuffer *object1,
-        IBuffer *object2,
-        boolean *isEqual) = 0;
+} /* extern "C" */
+namespace ABI {
+    namespace Windows {
+        namespace Security {
+            namespace Cryptography {
+                MIDL_INTERFACE("320b7e22-3cb0-4cdf-8663-1d28910065eb")
+                ICryptographicBufferStatics : public IInspectable
+                {
+                    virtual HRESULT STDMETHODCALLTYPE Compare(
+                        IBuffer *object1,
+                        IBuffer *object2,
+                        boolean *isEqual) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE GenerateRandom(
-        UINT32 length,
-        IBuffer **buffer) = 0;
+                    virtual HRESULT STDMETHODCALLTYPE GenerateRandom(
+                        UINT32 length,
+                        IBuffer **buffer) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE GenerateRandomNumber(
-        UINT32 *value) = 0;
+                    virtual HRESULT STDMETHODCALLTYPE GenerateRandomNumber(
+                        UINT32 *value) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE CreateFromByteArray(
-        UINT32 __valueSize,
-        BYTE *value,
-        IBuffer **buffer) = 0;
+                    virtual HRESULT STDMETHODCALLTYPE CreateFromByteArray(
+                        UINT32 __valueSize,
+                        BYTE *value,
+                        IBuffer **buffer) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE CopyToByteArray(
-        IBuffer *buffer,
-        UINT32 *__valueSize,
-        BYTE **value) = 0;
+                    virtual HRESULT STDMETHODCALLTYPE CopyToByteArray(
+                        IBuffer *buffer,
+                        UINT32 *__valueSize,
+                        BYTE **value) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE DecodeFromHexString(
-        HSTRING value,
-        IBuffer **buffer) = 0;
+                    virtual HRESULT STDMETHODCALLTYPE DecodeFromHexString(
+                        HSTRING value,
+                        IBuffer **buffer) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE EncodeToHexString(
-        IBuffer *buffer,
-        HSTRING *value) = 0;
+                    virtual HRESULT STDMETHODCALLTYPE EncodeToHexString(
+                        IBuffer *buffer,
+                        HSTRING *value) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE DecodeFromBase64String(
-        HSTRING value,
-        IBuffer **buffer) = 0;
+                    virtual HRESULT STDMETHODCALLTYPE DecodeFromBase64String(
+                        HSTRING value,
+                        IBuffer **buffer) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE EncodeToBase64String(
-        IBuffer *buffer,
-        HSTRING *value) = 0;
+                    virtual HRESULT STDMETHODCALLTYPE EncodeToBase64String(
+                        IBuffer *buffer,
+                        HSTRING *value) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE ConvertStringToBinary(
-        HSTRING value,
-        BinaryStringEncoding encoding,
-        IBuffer **buffer) = 0;
+                    virtual HRESULT STDMETHODCALLTYPE ConvertStringToBinary(
+                        HSTRING value,
+                        enum BinaryStringEncoding encoding,
+                        IBuffer **buffer) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE ConvertBinaryToString(
-        BinaryStringEncoding encoding,
-        IBuffer *buffer,
-        HSTRING *value) = 0;
+                    virtual HRESULT STDMETHODCALLTYPE ConvertBinaryToString(
+                        enum BinaryStringEncoding encoding,
+                        IBuffer *buffer,
+                        HSTRING *value) = 0;
 
-};
+                };
+            }
+        }
+    }
+}
+extern "C" {
 #ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(ICryptographicBufferStatics, 0x320b7e22, 0x3cb0, 0x4cdf, 0x86,0x63, 0x1d,0x28,0x91,0x00,0x65,0xeb)
+__CRT_UUID_DECL(ABI::Windows::Security::Cryptography::ICryptographicBufferStatics, 0x320b7e22, 0x3cb0, 0x4cdf, 0x86,0x63, 0x1d,0x28,0x91,0x00,0x65,0xeb)
 #endif
 #else
-typedef struct ICryptographicBufferStaticsVtbl {
+typedef struct __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStaticsVtbl {
     BEGIN_INTERFACE
 
     /*** IUnknown methods ***/
     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ICryptographicBufferStatics* This,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
         REFIID riid,
         void **ppvObject);
 
     ULONG (STDMETHODCALLTYPE *AddRef)(
-        ICryptographicBufferStatics* This);
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This);
 
     ULONG (STDMETHODCALLTYPE *Release)(
-        ICryptographicBufferStatics* This);
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This);
 
     /*** IInspectable methods ***/
     HRESULT (STDMETHODCALLTYPE *GetIids)(
-        ICryptographicBufferStatics* This,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
         ULONG *iidCount,
         IID **iids);
 
     HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
-        ICryptographicBufferStatics* This,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
         HSTRING *className);
 
     HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
-        ICryptographicBufferStatics* This,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
         TrustLevel *trustLevel);
 
     /*** ICryptographicBufferStatics methods ***/
     HRESULT (STDMETHODCALLTYPE *Compare)(
-        ICryptographicBufferStatics* This,
-        IBuffer *object1,
-        IBuffer *object2,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer *object1,
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer *object2,
         boolean *isEqual);
 
     HRESULT (STDMETHODCALLTYPE *GenerateRandom)(
-        ICryptographicBufferStatics* This,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
         UINT32 length,
-        IBuffer **buffer);
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer **buffer);
 
     HRESULT (STDMETHODCALLTYPE *GenerateRandomNumber)(
-        ICryptographicBufferStatics* This,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
         UINT32 *value);
 
     HRESULT (STDMETHODCALLTYPE *CreateFromByteArray)(
-        ICryptographicBufferStatics* This,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
         UINT32 __valueSize,
         BYTE *value,
-        IBuffer **buffer);
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer **buffer);
 
     HRESULT (STDMETHODCALLTYPE *CopyToByteArray)(
-        ICryptographicBufferStatics* This,
-        IBuffer *buffer,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,
         UINT32 *__valueSize,
         BYTE **value);
 
     HRESULT (STDMETHODCALLTYPE *DecodeFromHexString)(
-        ICryptographicBufferStatics* This,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
         HSTRING value,
-        IBuffer **buffer);
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer **buffer);
 
     HRESULT (STDMETHODCALLTYPE *EncodeToHexString)(
-        ICryptographicBufferStatics* This,
-        IBuffer *buffer,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,
         HSTRING *value);
 
     HRESULT (STDMETHODCALLTYPE *DecodeFromBase64String)(
-        ICryptographicBufferStatics* This,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
         HSTRING value,
-        IBuffer **buffer);
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer **buffer);
 
     HRESULT (STDMETHODCALLTYPE *EncodeToBase64String)(
-        ICryptographicBufferStatics* This,
-        IBuffer *buffer,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,
         HSTRING *value);
 
     HRESULT (STDMETHODCALLTYPE *ConvertStringToBinary)(
-        ICryptographicBufferStatics* This,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
         HSTRING value,
-        BinaryStringEncoding encoding,
-        IBuffer **buffer);
+        enum __x_ABI_CWindows_CSecurity_CCryptography_CBinaryStringEncoding encoding,
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer **buffer);
 
     HRESULT (STDMETHODCALLTYPE *ConvertBinaryToString)(
-        ICryptographicBufferStatics* This,
-        BinaryStringEncoding encoding,
-        IBuffer *buffer,
+        __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *This,
+        enum __x_ABI_CWindows_CSecurity_CCryptography_CBinaryStringEncoding encoding,
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,
         HSTRING *value);
 
     END_INTERFACE
-} ICryptographicBufferStaticsVtbl;
-interface ICryptographicBufferStatics {
-    CONST_VTBL ICryptographicBufferStaticsVtbl* lpVtbl;
+} __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStaticsVtbl;
+
+interface __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics {
+    CONST_VTBL __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStaticsVtbl* lpVtbl;
 };
 
 #ifdef COBJMACROS
 #ifndef WIDL_C_INLINE_WRAPPERS
 /*** IUnknown methods ***/
-#define ICryptographicBufferStatics_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ICryptographicBufferStatics_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ICryptographicBufferStatics_Release(This) (This)->lpVtbl->Release(This)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_Release(This) (This)->lpVtbl->Release(This)
 /*** IInspectable methods ***/
-#define ICryptographicBufferStatics_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
-#define ICryptographicBufferStatics_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
-#define ICryptographicBufferStatics_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
 /*** ICryptographicBufferStatics methods ***/
-#define ICryptographicBufferStatics_Compare(This,object1,object2,isEqual) (This)->lpVtbl->Compare(This,object1,object2,isEqual)
-#define ICryptographicBufferStatics_GenerateRandom(This,length,buffer) (This)->lpVtbl->GenerateRandom(This,length,buffer)
-#define ICryptographicBufferStatics_GenerateRandomNumber(This,value) (This)->lpVtbl->GenerateRandomNumber(This,value)
-#define ICryptographicBufferStatics_CreateFromByteArray(This,__valueSize,value,buffer) (This)->lpVtbl->CreateFromByteArray(This,__valueSize,value,buffer)
-#define ICryptographicBufferStatics_CopyToByteArray(This,buffer,__valueSize,value) (This)->lpVtbl->CopyToByteArray(This,buffer,__valueSize,value)
-#define ICryptographicBufferStatics_DecodeFromHexString(This,value,buffer) (This)->lpVtbl->DecodeFromHexString(This,value,buffer)
-#define ICryptographicBufferStatics_EncodeToHexString(This,buffer,value) (This)->lpVtbl->EncodeToHexString(This,buffer,value)
-#define ICryptographicBufferStatics_DecodeFromBase64String(This,value,buffer) (This)->lpVtbl->DecodeFromBase64String(This,value,buffer)
-#define ICryptographicBufferStatics_EncodeToBase64String(This,buffer,value) (This)->lpVtbl->EncodeToBase64String(This,buffer,value)
-#define ICryptographicBufferStatics_ConvertStringToBinary(This,value,encoding,buffer) (This)->lpVtbl->ConvertStringToBinary(This,value,encoding,buffer)
-#define ICryptographicBufferStatics_ConvertBinaryToString(This,encoding,buffer,value) (This)->lpVtbl->ConvertBinaryToString(This,encoding,buffer,value)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_Compare(This,object1,object2,isEqual) (This)->lpVtbl->Compare(This,object1,object2,isEqual)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GenerateRandom(This,length,buffer) (This)->lpVtbl->GenerateRandom(This,length,buffer)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GenerateRandomNumber(This,value) (This)->lpVtbl->GenerateRandomNumber(This,value)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_CreateFromByteArray(This,__valueSize,value,buffer) (This)->lpVtbl->CreateFromByteArray(This,__valueSize,value,buffer)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_CopyToByteArray(This,buffer,__valueSize,value) (This)->lpVtbl->CopyToByteArray(This,buffer,__valueSize,value)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_DecodeFromHexString(This,value,buffer) (This)->lpVtbl->DecodeFromHexString(This,value,buffer)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_EncodeToHexString(This,buffer,value) (This)->lpVtbl->EncodeToHexString(This,buffer,value)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_DecodeFromBase64String(This,value,buffer) (This)->lpVtbl->DecodeFromBase64String(This,value,buffer)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_EncodeToBase64String(This,buffer,value) (This)->lpVtbl->EncodeToBase64String(This,buffer,value)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_ConvertStringToBinary(This,value,encoding,buffer) (This)->lpVtbl->ConvertStringToBinary(This,value,encoding,buffer)
+#define __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_ConvertBinaryToString(This,encoding,buffer,value) (This)->lpVtbl->ConvertBinaryToString(This,encoding,buffer,value)
 #else
 /*** IUnknown methods ***/
-static FORCEINLINE HRESULT ICryptographicBufferStatics_QueryInterface(ICryptographicBufferStatics* This,REFIID riid,void **ppvObject) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_QueryInterface(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,REFIID riid,void **ppvObject) {
     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 }
-static FORCEINLINE ULONG ICryptographicBufferStatics_AddRef(ICryptographicBufferStatics* This) {
+static FORCEINLINE ULONG __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_AddRef(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This) {
     return This->lpVtbl->AddRef(This);
 }
-static FORCEINLINE ULONG ICryptographicBufferStatics_Release(ICryptographicBufferStatics* This) {
+static FORCEINLINE ULONG __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_Release(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This) {
     return This->lpVtbl->Release(This);
 }
 /*** IInspectable methods ***/
-static FORCEINLINE HRESULT ICryptographicBufferStatics_GetIids(ICryptographicBufferStatics* This,ULONG *iidCount,IID **iids) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GetIids(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,ULONG *iidCount,IID **iids) {
     return This->lpVtbl->GetIids(This,iidCount,iids);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_GetRuntimeClassName(ICryptographicBufferStatics* This,HSTRING *className) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GetRuntimeClassName(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,HSTRING *className) {
     return This->lpVtbl->GetRuntimeClassName(This,className);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_GetTrustLevel(ICryptographicBufferStatics* This,TrustLevel *trustLevel) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GetTrustLevel(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,TrustLevel *trustLevel) {
     return This->lpVtbl->GetTrustLevel(This,trustLevel);
 }
 /*** ICryptographicBufferStatics methods ***/
-static FORCEINLINE HRESULT ICryptographicBufferStatics_Compare(ICryptographicBufferStatics* This,IBuffer *object1,IBuffer *object2,boolean *isEqual) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_Compare(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,__x_ABI_CWindows_CStorage_CStreams_CIBuffer *object1,__x_ABI_CWindows_CStorage_CStreams_CIBuffer *object2,boolean *isEqual) {
     return This->lpVtbl->Compare(This,object1,object2,isEqual);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_GenerateRandom(ICryptographicBufferStatics* This,UINT32 length,IBuffer **buffer) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GenerateRandom(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,UINT32 length,__x_ABI_CWindows_CStorage_CStreams_CIBuffer **buffer) {
     return This->lpVtbl->GenerateRandom(This,length,buffer);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_GenerateRandomNumber(ICryptographicBufferStatics* This,UINT32 *value) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GenerateRandomNumber(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,UINT32 *value) {
     return This->lpVtbl->GenerateRandomNumber(This,value);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_CreateFromByteArray(ICryptographicBufferStatics* This,UINT32 __valueSize,BYTE *value,IBuffer **buffer) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_CreateFromByteArray(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,UINT32 __valueSize,BYTE *value,__x_ABI_CWindows_CStorage_CStreams_CIBuffer **buffer) {
     return This->lpVtbl->CreateFromByteArray(This,__valueSize,value,buffer);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_CopyToByteArray(ICryptographicBufferStatics* This,IBuffer *buffer,UINT32 *__valueSize,BYTE **value) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_CopyToByteArray(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,__x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,UINT32 *__valueSize,BYTE **value) {
     return This->lpVtbl->CopyToByteArray(This,buffer,__valueSize,value);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_DecodeFromHexString(ICryptographicBufferStatics* This,HSTRING value,IBuffer **buffer) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_DecodeFromHexString(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,HSTRING value,__x_ABI_CWindows_CStorage_CStreams_CIBuffer **buffer) {
     return This->lpVtbl->DecodeFromHexString(This,value,buffer);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_EncodeToHexString(ICryptographicBufferStatics* This,IBuffer *buffer,HSTRING *value) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_EncodeToHexString(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,__x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,HSTRING *value) {
     return This->lpVtbl->EncodeToHexString(This,buffer,value);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_DecodeFromBase64String(ICryptographicBufferStatics* This,HSTRING value,IBuffer **buffer) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_DecodeFromBase64String(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,HSTRING value,__x_ABI_CWindows_CStorage_CStreams_CIBuffer **buffer) {
     return This->lpVtbl->DecodeFromBase64String(This,value,buffer);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_EncodeToBase64String(ICryptographicBufferStatics* This,IBuffer *buffer,HSTRING *value) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_EncodeToBase64String(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,__x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,HSTRING *value) {
     return This->lpVtbl->EncodeToBase64String(This,buffer,value);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_ConvertStringToBinary(ICryptographicBufferStatics* This,HSTRING value,BinaryStringEncoding encoding,IBuffer **buffer) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_ConvertStringToBinary(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,HSTRING value,enum __x_ABI_CWindows_CSecurity_CCryptography_CBinaryStringEncoding encoding,__x_ABI_CWindows_CStorage_CStreams_CIBuffer **buffer) {
     return This->lpVtbl->ConvertStringToBinary(This,value,encoding,buffer);
 }
-static FORCEINLINE HRESULT ICryptographicBufferStatics_ConvertBinaryToString(ICryptographicBufferStatics* This,BinaryStringEncoding encoding,IBuffer *buffer,HSTRING *value) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_ConvertBinaryToString(__x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics* This,enum __x_ABI_CWindows_CSecurity_CCryptography_CBinaryStringEncoding encoding,__x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,HSTRING *value) {
     return This->lpVtbl->ConvertBinaryToString(This,encoding,buffer,value);
 }
 #endif
@@ -289,111 +352,7 @@
 
 #endif
 
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_Compare_Proxy(
-    ICryptographicBufferStatics* This,
-    IBuffer *object1,
-    IBuffer *object2,
-    boolean *isEqual);
-void __RPC_STUB ICryptographicBufferStatics_Compare_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_GenerateRandom_Proxy(
-    ICryptographicBufferStatics* This,
-    UINT32 length,
-    IBuffer **buffer);
-void __RPC_STUB ICryptographicBufferStatics_GenerateRandom_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_GenerateRandomNumber_Proxy(
-    ICryptographicBufferStatics* This,
-    UINT32 *value);
-void __RPC_STUB ICryptographicBufferStatics_GenerateRandomNumber_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_CreateFromByteArray_Proxy(
-    ICryptographicBufferStatics* This,
-    UINT32 __valueSize,
-    BYTE *value,
-    IBuffer **buffer);
-void __RPC_STUB ICryptographicBufferStatics_CreateFromByteArray_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_CopyToByteArray_Proxy(
-    ICryptographicBufferStatics* This,
-    IBuffer *buffer,
-    UINT32 *__valueSize,
-    BYTE **value);
-void __RPC_STUB ICryptographicBufferStatics_CopyToByteArray_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_DecodeFromHexString_Proxy(
-    ICryptographicBufferStatics* This,
-    HSTRING value,
-    IBuffer **buffer);
-void __RPC_STUB ICryptographicBufferStatics_DecodeFromHexString_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_EncodeToHexString_Proxy(
-    ICryptographicBufferStatics* This,
-    IBuffer *buffer,
-    HSTRING *value);
-void __RPC_STUB ICryptographicBufferStatics_EncodeToHexString_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_DecodeFromBase64String_Proxy(
-    ICryptographicBufferStatics* This,
-    HSTRING value,
-    IBuffer **buffer);
-void __RPC_STUB ICryptographicBufferStatics_DecodeFromBase64String_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_EncodeToBase64String_Proxy(
-    ICryptographicBufferStatics* This,
-    IBuffer *buffer,
-    HSTRING *value);
-void __RPC_STUB ICryptographicBufferStatics_EncodeToBase64String_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_ConvertStringToBinary_Proxy(
-    ICryptographicBufferStatics* This,
-    HSTRING value,
-    BinaryStringEncoding encoding,
-    IBuffer **buffer);
-void __RPC_STUB ICryptographicBufferStatics_ConvertStringToBinary_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ICryptographicBufferStatics_ConvertBinaryToString_Proxy(
-    ICryptographicBufferStatics* This,
-    BinaryStringEncoding encoding,
-    IBuffer *buffer,
-    HSTRING *value);
-void __RPC_STUB ICryptographicBufferStatics_ConvertBinaryToString_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ICryptographicBufferStatics_INTERFACE_DEFINED__ */
+#endif  /* ____x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_INTERFACE_DEFINED__ */
 
 /* Begin additional prototypes for all interfaces */
 
diff --git a/mingw-w64-headers/include/windows.security.cryptography.idl b/mingw-w64-headers/include/windows.security.cryptography.idl
index 3defa16..7032a81 100644
--- a/mingw-w64-headers/include/windows.security.cryptography.idl
+++ b/mingw-w64-headers/include/windows.security.cryptography.idl
@@ -23,7 +23,7 @@
   namespace Security {
     namespace Cryptography {
       interface ICryptographicBufferStatics;
-      enum BinaryStringEncoding;
+      typedef enum BinaryStringEncoding BinaryStringEncoding;
     }
   }
 }
@@ -31,15 +31,15 @@
 namespace Windows {
   namespace Security {
     namespace Cryptography {
-      typedef enum BinaryStringEncoding {
+      enum BinaryStringEncoding {
         Utf8,
         Utf16LE,
         Utf16BE
-      } BinaryStringEncoding;
+      };
 
       [uuid(320B7E22-3CB0-4CDF-8663-1D28910065EB)]
       interface ICryptographicBufferStatics : IInspectable {
-        HRESULT Compare(IBuffer* object1, IBuffer* object2, boolean* isEqual);
+        HRESULT Compare(Windows.Storage.Streams.IBuffer* object1, IBuffer* object2, boolean* isEqual);
         HRESULT GenerateRandom(UINT32 length, IBuffer** buffer);
         HRESULT GenerateRandomNumber(UINT32* value);
         HRESULT CreateFromByteArray(UINT32 __valueSize, BYTE* value,IBuffer** buffer);
diff --git a/mingw-w64-libraries/winstorecompat/src/Crypto.c b/mingw-w64-libraries/winstorecompat/src/Crypto.c
index 2c3c218..c8299a8 100644
--- a/mingw-w64-libraries/winstorecompat/src/Crypto.c
+++ b/mingw-w64-libraries/winstorecompat/src/Crypto.c
@@ -43,7 +43,7 @@
 #undef CryptAcquireContextA
 #undef CryptAcquireContextW
 
-#define HCRYPTPROV ICryptographicBufferStatics *
+#define HCRYPTPROV __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics*
 
 BOOL WINAPI CryptAcquireContextW(HCRYPTPROV *phProv, LPCTSTR pszContainer, LPCTSTR pszProvider, DWORD dwProvType, DWORD dwFlags)
 {
@@ -58,8 +58,8 @@
         return FALSE;
     }
 
-    ICryptographicBufferStatics *cryptoStatics = NULL;
-    hr = RoGetActivationFactory(hClassName, &IID_ICryptographicBufferStatics, (void**)&cryptoStatics);
+    __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics *cryptoStatics = NULL;
+    hr = RoGetActivationFactory(hClassName, &IID___x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics, (void**)&cryptoStatics);
     WindowsDeleteString(hClassName);
 
     if (FAILED(hr))
@@ -77,21 +77,21 @@
 
 BOOL WINAPI CryptReleaseContext(HCRYPTPROV phProv, DWORD dwFlags)
 {
-    HRESULT hr = ICryptographicBufferStatics_Release(phProv);
+    HRESULT hr = __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_Release(phProv);
     return SUCCEEDED(hr) && dwFlags==0;
 }
 
 BOOL WINAPI CryptGenRandom(HCRYPTPROV phProv, DWORD dwLen, BYTE *pbBuffer)
 {
-    IBuffer *buffer = NULL;
-    HRESULT hr = ICryptographicBufferStatics_GenerateRandom(phProv, dwLen, &buffer);
+    __x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer = NULL;
+    HRESULT hr = __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_GenerateRandom(phProv, dwLen, &buffer);
     if (FAILED(hr)) {
         return FALSE;
     }
 
     UINT32 olength;
     unsigned char *rnd = NULL;
-    hr = ICryptographicBufferStatics_CopyToByteArray(phProv, buffer, &olength, (BYTE**)&rnd);
+    hr = __x_ABI_CWindows_CSecurity_CCryptography_CICryptographicBufferStatics_CopyToByteArray(phProv, buffer, &olength, (BYTE**)&rnd);
     if (FAILED(hr)) {
         IBuffer_Release(buffer);
         return FALSE;