diff --git a/mingw-w64-headers/include/msoav.h b/mingw-w64-headers/include/msoav.h
new file mode 100755
index 0000000..d50f35f
--- /dev/null
+++ b/mingw-w64-headers/include/msoav.h
@@ -0,0 +1,68 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+#ifndef _MSOAV_H
+#define _MSOAV_H
+
+typedef struct _msoavinfo {
+  int cbsize;
+  struct {
+    ULONG fPath:1;
+    ULONG fReadOnlyRequest:1;
+    ULONG fInstalled:1;
+    ULONG fHttpDownload:1;
+  };
+  HWND hwnd;
+  union {
+    WCHAR *pwzFullPath;
+    LPSTORAGE lpstg;
+  } u;
+  WCHAR *pwzHostName;
+  WCHAR *pwzOrigURL;
+} MSOAVINFO;
+
+DEFINE_GUID(IID_IOfficeAntiVirus,0x56ffcc30,0xd398,0x11d0,0xb2,0xae,0x0,0xa0,0xc9,0x8,0xfa,0x49);
+DEFINE_GUID(CATID_MSOfficeAntiVirus,0x56ffcc30,0xd398,0x11d0,0xb2,0xae,0x0,0xa0,0xc9,0x8,0xfa,0x49);
+
+#undef INTERFACE
+#define INTERFACE IOfficeAntiVirus
+DECLARE_INTERFACE_(IOfficeAntiVirus,IUnknown) {
+  BEGIN_INTERFACE
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD_(HRESULT,Scan)(THIS_ MSOAVINFO *pmsoavinfo) PURE;
+};
+
+#ifndef AVVENDOR
+MSOAPI_(WINBOOL) MsoFAnyAntiVirus(HMSOINST hmsoinst);
+MSOAPI_(WINBOOL) MsoFDoAntiVirusScan(HMSOINST hmsoinst,MSOAVINFO *msoavinfo);
+MSOAPI_(void) MsoFreeMsoavStuff(HMSOINST hmsoinst);
+MSOAPI_(WINBOOL) MsoFDoSecurityLevelDlg(HMSOINST hmsoinst,DWORD msorid,int *pSecurityLevel,WINBOOL *pfTrustInstalled,HWND hwndParent,WINBOOL fShowVirusCheckers,WCHAR *wzHelpFile,DWORD dwHelpId);
+
+#define msoedmEnable 1
+#define msoedmDisable 2
+#define msoedmDontOpen 3
+
+MSOAPI_(int) MsoMsoedmDialog(HMSOINST hmsoinst,WINBOOL fAppIsActive,WINBOOL fHasVBMacros,WINBOOL fHasXLMMacros,void *pvDigSigStore,void *pvMacro,int nAppID,HWND hwnd,const WCHAR *pwtzPath,int iClient,int iSecurityLevel,int *pmsodsv,WCHAR *wzHelpFile,DWORD dwHelpId,HANDLE hFileDLL,WINBOOL fUserControl);
+
+#define msoslUndefined 0
+#define msoslNone 1
+#define msoslMedium 2
+#define msoslHigh 3
+
+MSOAPI_(int) MsoMsoslGetSL(HMSOINST hmsoinst);
+MSOAPI_(int) MsoMsoslSetSL(DWORD msorid,HMSOINST hmsoinst);
+
+#define msodsvNoMacros 0
+#define msodsvUnsigned 1
+
+#define msodsvPassedTrusted 2
+#define msodsvFailed 3
+#define msodsvLowSecurityLevel 4
+#define msodsvPassedTrustedCert 5
+#endif
+
+#endif
