diff --git a/.gitignore b/.gitignore index fdfe55be91d..d1090c1bc77 100644 --- a/.gitignore +++ b/.gitignore @@ -240,6 +240,7 @@ include/wine/itss.h include/wine/svcctl.h include/wine/wined3d.h include/wine/winedxgi.h +include/winsxs.h include/wtypes.h include/wuapi.h include/xmldom.h diff --git a/include/Makefile.in b/include/Makefile.in index d112efaa784..733e4cc4440 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -96,6 +96,7 @@ PUBLIC_IDL_H_SRCS = \ wincodec.idl \ wine/itss.idl \ wine/svcctl.idl \ + winsxs.idl \ wtypes.idl \ wuapi.idl \ xmldom.idl \ diff --git a/include/winsxs.idl b/include/winsxs.idl new file mode 100644 index 00000000000..c2c38f2a6bf --- /dev/null +++ b/include/winsxs.idl @@ -0,0 +1,101 @@ +/* + * Copyright 2010 Hans Leidekker for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; + +interface IAssemblyCache; +interface IAssemblyCacheItem; + +typedef struct _FUSION_INSTALL_REFERENCE_ +{ + DWORD cbSize; + DWORD dwFlags; + GUID guidScheme; + LPCWSTR szIdentifier; + LPCWSTR szNonCannonicalData; +} FUSION_INSTALL_REFERENCE, *LPFUSION_INSTALL_REFERENCE; + +typedef struct _ASSEMBLY_INFO +{ + ULONG cbAssemblyInfo; + DWORD dwAssemblyFlags; + ULARGE_INTEGER uliAssemblySizeInKB; + LPWSTR pszCurrentAssemblyPathBuf; + ULONG cchBuf; +} ASSEMBLY_INFO; + +typedef const struct _FUSION_INSTALL_REFERENCE_ *LPCFUSION_INSTALL_REFERENCE; + +[ + object, + uuid(e707dcde-d1cd-11d2-bab9-00c04f8eceae), + pointer_default(unique), + local +] +interface IAssemblyCache : IUnknown +{ + HRESULT UninstallAssembly( + [in] DWORD flags, + [in] LPCWSTR name, + [in] LPCFUSION_INSTALL_REFERENCE ref, + [out, optional] ULONG *disp); + + HRESULT QueryAssemblyInfo( + [in] DWORD flags, + [in] LPCWSTR name, + [in, out] ASSEMBLY_INFO *info); + + HRESULT CreateAssemblyCacheItem( + [in] DWORD flags, + [in] PVOID reserved, + [out] IAssemblyCacheItem **item, + [in, optional] LPCWSTR name); + + HRESULT Reserved( + [out] IUnknown **reserved); + + HRESULT InstallAssembly( + [in] DWORD flags, + [in] LPCWSTR path, + [in] LPCFUSION_INSTALL_REFERENCE ref); +} + +[ + object, + uuid(9e3aaeb4-d1cd-11d2-bab9-00c04f8eceae), + pointer_default(unique), + local +] +interface IAssemblyCacheItem : IUnknown +{ + HRESULT CreateStream( + [in] DWORD flags, + [in] LPCWSTR name, + [in] DWORD format, + [in] DWORD format_flags, + [out] IStream **stream, + [in, optional] ULARGE_INTEGER *max_size); + + HRESULT Commit( + [in] DWORD flags, + [out, optional] ULONG *disp); + + HRESULT AbortItem(); +} + +cpp_quote("HRESULT WINAPI CreateAssemblyCache(IAssemblyCache**,DWORD);")