list(APPEND SOURCE
shimgvw.c
+ comsup.c
shimgvw.rc
${CMAKE_CURRENT_BINARY_DIR}/shimgvw_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/shimgvw.def)
--- /dev/null
+#define INITGUID
+
+#include <windef.h>
+#include <comsup.h>
+
+LONG LockCount;
+LONG ObjectCount;
+
+
+VOID
+DllInitServer(VOID)
+{
+ ObjectCount = 0;
+ LockCount = 0;
+}
+
+
+STDAPI
+DllRegisterServer(VOID)
+{
+ /* Always return S_OK, since there is currently nothing that can go wrong */
+ return S_OK;
+}
+
+
+STDAPI
+DllUnregisterServer(VOID)
+{
+ /* Always return S_OK, since there is currently nothing that can go wrong */
+ return S_OK;
+}
+
+
+STDAPI
+DllCanUnloadNow(VOID)
+{
+ if ((ObjectCount != 0) || (LockCount != 0))
+ {
+ return S_FALSE;
+ }
+ else
+ {
+ return S_OK;
+ }
+}
+
+
+STDAPI
+DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
+{
+ HRESULT hr;
+
+ /* There are no classes to export, so always return CLASS_E_CLASSNOTAVAILABLE*/
+ *ppv = NULL;
+ hr = CLASS_E_CLASSNOTAVAILABLE;
+
+ return hr;
+}
--- /dev/null
+extern LONG LockCount;
+extern LONG ObjectCount;
+
+VOID DllInitServer(VOID);
\ No newline at end of file
@ stdcall ImageView_PrintToW(ptr ptr wstr long)
@ stdcall imageview_fullscreenW(ptr ptr wstr long) ImageView_FullscreenW
@ stub ConvertDIBSECTIONToThumbnail
-@ stub -private DllCanUnloadNow
-@ stub -private DllGetClassObject
+@ stdcall -private DllCanUnloadNow()
+@ stdcall -private DllGetClassObject(ptr ptr ptr)
@ stub -private DllInstall
-@ stub -private DllRegisterServer
-@ stub -private DllUnregisterServer
+@ stdcall -private DllRegisterServer()
+@ stdcall -private DllUnregisterServer()