Hans Leidekker : vssapi: Add stub implementations for a couple of functions.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Nov 27 16:07:42 CST 2014


Module: wine
Branch: master
Commit: a4a48d3fc87fb62c7e9266978a197f36e9407cac
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a4a48d3fc87fb62c7e9266978a197f36e9407cac

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Thu Nov 27 12:16:54 2014 +0100

vssapi: Add stub implementations for a couple of functions.

---

 dlls/vssapi/Makefile.in |   3 ++
 dlls/vssapi/main.c      | 108 ++++++++++++++++++++++++++++++++++++++++++++++++
 dlls/vssapi/vssapi.spec |  10 ++---
 include/Makefile.in     |   2 +
 include/vss.idl         |  31 ++++++++++++++
 include/vswriter.h      |  47 +++++++++++++++++++++
 6 files changed, 196 insertions(+), 5 deletions(-)

diff --git a/dlls/vssapi/Makefile.in b/dlls/vssapi/Makefile.in
index 583ec1c..867a562 100644
--- a/dlls/vssapi/Makefile.in
+++ b/dlls/vssapi/Makefile.in
@@ -1 +1,4 @@
 MODULE    = vssapi.dll
+
+C_SRCS = \
+	main.c
diff --git a/dlls/vssapi/main.c b/dlls/vssapi/main.c
new file mode 100644
index 0000000..133f4c5
--- /dev/null
+++ b/dlls/vssapi/main.c
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2014 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
+ */
+
+#include "config.h"
+#include <stdarg.h>
+#include "windef.h"
+#include "winbase.h"
+#include "vss.h"
+#include "vswriter.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL( vssapi );
+
+#ifdef __i386__  /* thiscall functions are i386-specific */
+
+#define THISCALL(func) __thiscall_ ## func
+#define THISCALL_NAME(func) __ASM_NAME("__thiscall_" #func)
+#define __thiscall __stdcall
+#define DEFINE_THISCALL_WRAPPER(func,args) \
+    extern void THISCALL(func)(void); \
+    __ASM_GLOBAL_FUNC(__thiscall_ ## func, \
+                      "popl %eax\n\t" \
+                      "pushl %ecx\n\t" \
+                      "pushl %eax\n\t" \
+                      "jmp " __ASM_NAME(#func) __ASM_STDCALL(args) )
+#else /* __i386__ */
+
+#define THISCALL(func) func
+#define THISCALL_NAME(func) __ASM_NAME(#func)
+#define __thiscall __cdecl
+#define DEFINE_THISCALL_WRAPPER(func,args) /* nothing */
+
+#endif /* __i386__ */
+
+struct CVssWriter
+{
+    void **vtable;
+};
+
+/******************************************************************
+ *  ??0CVssWriter@@QAE at XZ (VSSAPI.@)
+ */
+DEFINE_THISCALL_WRAPPER( VSSAPI_CVssWriter_default_ctor, 4 )
+struct CVssWriter * __thiscall VSSAPI_CVssWriter_default_ctor( struct CVssWriter *writer )
+{
+    FIXME( "%p\n", writer );
+    writer->vtable = NULL;
+    return writer;
+}
+
+/******************************************************************
+ *  ??1CVssWriter@@UAE at XZ (VSSAPI.@)
+ */
+DEFINE_THISCALL_WRAPPER( VSSAPI_CVssWriter_dtor, 4 )
+void __thiscall VSSAPI_CVssWriter_dtor( struct CVssWriter *writer )
+{
+    FIXME( "%p\n", writer );
+}
+
+/******************************************************************
+ *  ?Initialize at CVssWriter@@QAGJU_GUID@@PBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N at Z
+ */
+DEFINE_THISCALL_WRAPPER( VSSAPI_CVssWriter_Initialize, 52 )
+HRESULT __thiscall VSSAPI_CVssWriter_Initialize( struct CVssWriter *writer, VSS_ID id,
+    LPCWSTR name, VSS_USAGE_TYPE usage_type, VSS_SOURCE_TYPE source_type,
+    VSS_APPLICATION_LEVEL level, DWORD timeout, VSS_ALTERNATE_WRITER_STATE alt_writer_state,
+    BOOL throttle, LPCWSTR instance )
+{
+    FIXME( "%p, %s, %s, %u, %u, %u, %u, %u, %d, %s\n", writer, debugstr_guid(&id),
+           debugstr_w(name), usage_type, source_type, level, timeout, alt_writer_state,
+           throttle, debugstr_w(instance) );
+    return S_OK;
+}
+
+/******************************************************************
+ *  ?Subscribe at CVssWriter@@QAGJK at Z
+ */
+DEFINE_THISCALL_WRAPPER( VSSAPI_CVssWriter_Subscribe, 8 )
+HRESULT __thiscall VSSAPI_CVssWriter_Subscribe( struct CVssWriter *writer, DWORD flags )
+{
+    FIXME( "%p, %x\n", writer, flags );
+    return S_OK;
+}
+
+/******************************************************************
+ *  ?Unsubscribe at CVssWriter@@QAGJXZ
+ */
+DEFINE_THISCALL_WRAPPER( VSSAPI_CVssWriter_Unsubscribe, 4 )
+HRESULT __thiscall VSSAPI_CVssWriter_Unsubscribe( struct CVssWriter *writer )
+{
+    FIXME( "%p\n", writer );
+    return S_OK;
+}
diff --git a/dlls/vssapi/vssapi.spec b/dlls/vssapi/vssapi.spec
index 4ad38a3..77599ab 100644
--- a/dlls/vssapi/vssapi.spec
+++ b/dlls/vssapi/vssapi.spec
@@ -2,9 +2,9 @@
 @ stub VssFreeSnapshotProperties
 @ stub ShouldBlockRevert
 @ stub ??0CVssJetWriter@@QAE at XZ
-@ stub ??0CVssWriter@@QAE at XZ
+@ thiscall -arch=i386 ??0CVssWriter@@QAE at XZ(ptr) VSSAPI_CVssWriter_default_ctor
 @ stub ??1CVssJetWriter@@UAE at XZ
-@ stub ??1CVssWriter@@UAE at XZ
+@ thiscall -arch=i386 ??1CVssWriter@@UAE at XZ(ptr) VSSAPI_CVssWriter_dtor
 @ stub ?AreComponentsSelected at CVssJetWriter@@IBG_NXZ
 @ stub ?AreComponentsSelected at CVssWriter@@IBG_NXZ
 @ stub ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z
@@ -27,7 +27,7 @@
 @ stub ?GetSnapshotDeviceName at CVssJetWriter@@IBGJPBGPAPBG at Z
 @ stub ?GetSnapshotDeviceName at CVssWriter@@IBGJPBGPAPBG at Z
 @ stub ?Initialize at CVssJetWriter@@QAGJU_GUID@@PBG_N211K at Z
-@ stub ?Initialize at CVssWriter@@QAGJU_GUID@@PBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N at Z
+@ thiscall -arch=i386 ?Initialize at CVssWriter@@QAGJU_GUID@@PBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N at Z(ptr ptr wstr long long long long long long wstr) VSSAPI_CVssWriter_Initialize
 @ stub ?InstallAlternateWriter at CVssWriter@@QAGJU_GUID@@0 at Z
 @ stub ?IsBootableSystemStateBackedUp at CVssJetWriter@@IBG_NXZ
 @ stub ?IsBootableSystemStateBackedUp at CVssWriter@@IBG_NXZ
@@ -67,9 +67,9 @@
 @ stub ?OnVSSShutdown at CVssWriter@@UAG_NXZ
 @ stub ?SetWriterFailure at CVssJetWriter@@IAGJJ at Z
 @ stub ?SetWriterFailure at CVssWriter@@IAGJJ at Z
-@ stub ?Subscribe at CVssWriter@@QAGJK at Z
+@ thiscall -arch=i386 ?Subscribe at CVssWriter@@QAGJK at Z(ptr long) VSSAPI_CVssWriter_Subscribe
 @ stub ?Uninitialize at CVssJetWriter@@QAGXXZ
-@ stub ?Unsubscribe at CVssWriter@@QAGJXZ
+@ thiscall -arch=i386 ?Unsubscribe at CVssWriter@@QAGJXZ(ptr) VSSAPI_CVssWriter_Unsubscribe
 @ stub CreateVssBackupComponentsInternal
 @ stub CreateVssExamineWriterMetadataInternal
 @ stub CreateVssExpressWriterInternal
diff --git a/include/Makefile.in b/include/Makefile.in
index e8d2379..a952964 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -118,6 +118,7 @@ PUBLIC_IDL_H_SRCS = \
 	urlhist.idl \
 	urlmon.idl \
 	vmr9.idl \
+	vss.idl \
 	wbemcli.idl \
 	wbemdisp.idl \
 	wbemprov.idl \
@@ -577,6 +578,7 @@ SRCDIR_INCLUDES = \
 	vmrender.idl \
 	vsstyle.h \
 	vssym32.h \
+	vswriter.h \
 	werapi.h \
 	wfext.h \
 	wia.h \
diff --git a/include/vss.idl b/include/vss.idl
new file mode 100644
index 0000000..62335ea
--- /dev/null
+++ b/include/vss.idl
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2014 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 "oaidl.idl";
+
+typedef GUID VSS_ID;
+
+typedef enum _VSS_APPLICATION_LEVEL
+{
+    VSS_APP_AUTO        = -1,
+    VSS_APP_UNKNOWN     = 0,
+    VSS_APP_SYSTEM      = 1,
+    VSS_APP_BACK_END    = 2,
+    VSS_APP_FRONT_END   = 3,
+    VSS_APP_SYSTEM_RM   = 4
+} VSS_APPLICATION_LEVEL;
diff --git a/include/vswriter.h b/include/vswriter.h
new file mode 100644
index 0000000..043b871
--- /dev/null
+++ b/include/vswriter.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2014 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
+ */
+
+#ifndef __WINE_VSWRITER_H
+#define __WINE_VSWRITER_H
+
+typedef enum
+{
+    VSS_UT_UNDEFINED,
+    VSS_UT_BOOTABLESYSTEMSTATE,
+    VSS_UT_SYSTEMSERVICE,
+    VSS_UT_USERDATA,
+    VSS_UT_OTHER
+} VSS_USAGE_TYPE;
+
+typedef enum
+{
+    VSS_ST_UNDEFINED,
+    VSS_ST_TRANSACTEDDB,
+    VSS_ST_NONTRANSACTEDDB,
+    VSS_ST_OTHER
+} VSS_SOURCE_TYPE;
+
+typedef enum
+{
+    VSS_AWS_UNDEFINED,
+    VSS_AWS_NO_ALTERNATE_WRITER,
+    VSS_AWS_ALTERNATE_WRITER_EXISTS,
+    VSS_AWS_THIS_IS_ALTERNATE_WRITER
+} VSS_ALTERNATE_WRITER_STATE;
+
+#endif /* ___WINE_VSWRITER_H */




More information about the wine-cvs mailing list