From: Hans Leidekker Subject: [2/2] vssapi: Add stub implementations for a couple of functions. (try 2) Message-Id: <1417087014.24185.7.camel@codeweavers.com> Date: Thu, 27 Nov 2014 12:16:54 +0100 This version builds on Mingw. --- dlls/vssapi/main.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++++ dlls/vssapi/vssapi.spec | 10 +++--- include/Makefile.in | 1 + include/vss.idl | 31 ++++++++++++++++++ include/vswriter.h | 47 ++++++++++++++++++++++++++++ 5 files changed, 167 insertions(+), 5 deletions(-) create mode 100644 include/vss.idl create mode 100644 include/vswriter.h diff --git a/dlls/vssapi/main.c b/dlls/vssapi/main.c index 80014b1..9fea777 100644 --- a/dlls/vssapi/main.c +++ b/dlls/vssapi/main.c @@ -20,6 +20,8 @@ #include #include "windef.h" #include "winbase.h" +#include "vss.h" +#include "vswriter.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL( vssapi ); @@ -36,3 +38,84 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved ) } return TRUE; } + +#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@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@XZ (VSSAPI.@) + */ +DEFINE_THISCALL_WRAPPER( VSSAPI_CVssWriter_dtor, 4 ) +void __thiscall VSSAPI_CVssWriter_dtor( struct CVssWriter *writer ) +{ + FIXME( "%p\n", writer ); +} + +/****************************************************************** + * ?Initialize@CVssWriter@@QAGJU_GUID@@PBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N@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@CVssWriter@@QAGJK@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@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@XZ -@ stub ??0CVssWriter@@QAE@XZ +@ thiscall -arch=i386 ??0CVssWriter@@QAE@XZ(ptr) VSSAPI_CVssWriter_default_ctor @ stub ??1CVssJetWriter@@UAE@XZ -@ stub ??1CVssWriter@@UAE@XZ +@ thiscall -arch=i386 ??1CVssWriter@@UAE@XZ(ptr) VSSAPI_CVssWriter_dtor @ stub ?AreComponentsSelected@CVssJetWriter@@IBG_NXZ @ stub ?AreComponentsSelected@CVssWriter@@IBG_NXZ @ stub ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z @@ -27,7 +27,7 @@ @ stub ?GetSnapshotDeviceName@CVssJetWriter@@IBGJPBGPAPBG@Z @ stub ?GetSnapshotDeviceName@CVssWriter@@IBGJPBGPAPBG@Z @ stub ?Initialize@CVssJetWriter@@QAGJU_GUID@@PBG_N211K@Z -@ stub ?Initialize@CVssWriter@@QAGJU_GUID@@PBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N@Z +@ thiscall -arch=i386 ?Initialize@CVssWriter@@QAGJU_GUID@@PBGW4VSS_USAGE_TYPE@@W4VSS_SOURCE_TYPE@@W4_VSS_APPLICATION_LEVEL@@KW4VSS_ALTERNATE_WRITER_STATE@@_N@Z(ptr ptr wstr long long long long long long wstr) VSSAPI_CVssWriter_Initialize @ stub ?InstallAlternateWriter@CVssWriter@@QAGJU_GUID@@0@Z @ stub ?IsBootableSystemStateBackedUp@CVssJetWriter@@IBG_NXZ @ stub ?IsBootableSystemStateBackedUp@CVssWriter@@IBG_NXZ @@ -67,9 +67,9 @@ @ stub ?OnVSSShutdown@CVssWriter@@UAG_NXZ @ stub ?SetWriterFailure@CVssJetWriter@@IAGJJ@Z @ stub ?SetWriterFailure@CVssWriter@@IAGJJ@Z -@ stub ?Subscribe@CVssWriter@@QAGJK@Z +@ thiscall -arch=i386 ?Subscribe@CVssWriter@@QAGJK@Z(ptr long) VSSAPI_CVssWriter_Subscribe @ stub ?Uninitialize@CVssJetWriter@@QAGXXZ -@ stub ?Unsubscribe@CVssWriter@@QAGJXZ +@ thiscall -arch=i386 ?Unsubscribe@CVssWriter@@QAGJXZ(ptr) VSSAPI_CVssWriter_Unsubscribe @ stub CreateVssBackupComponentsInternal @ stub CreateVssExamineWriterMetadataInternal @ stub CreateVssExpressWriterInternal diff --git a/include/Makefile.in b/include/Makefile.in index e8d2379..83dc4a7 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 \ 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 */