--- mingw-w64-libraries/winstorecompat/Makefile.am | 1 + mingw-w64-libraries/winstorecompat/Makefile.in | 8 ++- .../winstorecompat/src/CoCreateInstance.c | 57 ++++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 mingw-w64-libraries/winstorecompat/src/CoCreateInstance.c
diff --git a/mingw-w64-libraries/winstorecompat/Makefile.am b/mingw-w64-libraries/winstorecompat/Makefile.am index 9713f58..c4ae286 100644 --- a/mingw-w64-libraries/winstorecompat/Makefile.am +++ b/mingw-w64-libraries/winstorecompat/Makefile.am @@ -30,4 +30,5 @@ libwinstorecompat_a_SOURCES = \ src/SetFilePointer.c \ src/GetFileSize.c \ src/Tls.c \ + src/CoCreateInstance.c \ $(NULL) diff --git a/mingw-w64-libraries/winstorecompat/Makefile.in b/mingw-w64-libraries/winstorecompat/Makefile.in index 95970f7..ea4b3db 100644 --- a/mingw-w64-libraries/winstorecompat/Makefile.in +++ b/mingw-w64-libraries/winstorecompat/Makefile.in @@ -110,7 +110,8 @@ am_libwinstorecompat_a_OBJECTS = src/CreateEventW.$(OBJEXT) \ src/getpid.$(OBJEXT) src/LocalAlloc.$(OBJEXT) \ src/LocalFree.$(OBJEXT) src/Sleep.$(OBJEXT) \ src/SleepEx.$(OBJEXT) src/SetFilePointer.$(OBJEXT) \ - src/GetFileSize.$(OBJEXT) src/Tls.$(OBJEXT) + src/GetFileSize.$(OBJEXT) src/Tls.$(OBJEXT) \ + src/CoCreateInstance.$(OBJEXT) libwinstorecompat_a_OBJECTS = $(am_libwinstorecompat_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp @@ -260,6 +261,7 @@ libwinstorecompat_a_SOURCES = \ src/SetFilePointer.c \ src/GetFileSize.c \ src/Tls.c \ + src/CoCreateInstance.c \ $(NULL) all: all-am @@ -385,6 +387,8 @@ src/SetFilePointer.$(OBJEXT): src/$(am__dirstamp) \ src/GetFileSize.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/Tls.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/CoCreateInstance.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) libwinstorecompat.a: $(libwinstorecompat_a_OBJECTS) $(libwinstorecompat_a_DEPENDENCIES) $(EXTRA_libwinstorecompat_a_DEPENDENCIES) -rm -f libwinstorecompat.a $(libwinstorecompat_a_AR) libwinstorecompat.a $(libwinstorecompat_a_OBJECTS) $(libwinstorecompat_a_LIBADD) @@ -392,6 +396,7 @@ libwinstorecompat.a: $(libwinstorecompat_a_OBJECTS) $(libwinstorecompat_a_DEPEND mostlyclean-compile: -rm -f *.$(OBJEXT) + -rm -f src/CoCreateInstance.$(OBJEXT) -rm -f src/CreateEventW.$(OBJEXT) -rm -f src/CreateFileW.$(OBJEXT) -rm -f src/CreateMutexW.$(OBJEXT) @@ -421,6 +426,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/CoCreateInstance.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/CreateEventW.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/CreateFileW.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/CreateMutexW.Po@am__quote@ diff --git a/mingw-w64-libraries/winstorecompat/src/CoCreateInstance.c b/mingw-w64-libraries/winstorecompat/src/CoCreateInstance.c new file mode 100644 index 0000000..5a9df37 --- /dev/null +++ b/mingw-w64-libraries/winstorecompat/src/CoCreateInstance.c @@ -0,0 +1,57 @@ +/* + Copyright (c) 2013 mingw-w64 project + + Contributing authors: Jean-Baptiste Kempf + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + +#define _WIN32_WINNT 0x0602 /* CoCreateInstanceFromApp is 8+ */ + +#define CoCreateInstance __CoCreateInstance +#include <windef.h> +#include <windows.h> +#include <combaseapi.h> +#undef CoCreateInstance + +HRESULT WINAPI CoCreateInstance(REFCLSID rclsid, + LPUNKNOWN pUnkOuter, + DWORD dwClsContext, + REFIID riid, + LPVOID *ppv) +{ + MULTI_QI result; + HRESULT res; + + result.pIID = riid; + result.pItf = NULL; + result.hr = 0; + + res = CoCreateInstanceFromApp(rclsid, pUnkOuter, dwClsContext, NULL, 1, &result); + + if( ppv == NULL) + return E_POINTER; + else { + *ppv = result.pItf; + return res; + } +} + +HRESULT (WINAPI *__MINGW_IMP_SYMBOL(CoCreateInstance))(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID *ppv) asm("__imp__CoCreateInstance@20") = CoCreateInstance; + -- 1.7.10.4 ------------------------------------------------------------------------------ AlienVault Unified Security Management (USM) platform delivers complete security visibility with the essential security capabilities. Easily and efficiently configure, manage, and operate all of your security controls from a single console and one unified framework. Download a free trial. http://p.sf.net/sfu/alienvault_d2d _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public