Make some of the OLE interface vtables const

Dmitry Timoshkov dmitry at baikal.ru
Fri May 27 04:51:23 CDT 2005


Hello,

if this patch is accepted all other vtables can be made const as well.

Note: I had to remove a couple of 'const' keywords from DECLARE_INTERFACE
macro, gcc thinks (correctly) that 'const' is useless there and issues
a warning. I see no other way to silence the warning.

Changelog:
    Dmitry Timoshkov <dmitry at codeweavers.com>
    Make some of the OLE interface vtables const.

diff -up cvs/hq/wine/dlls/amstream/amstream.c wine/dlls/amstream/amstream.c
--- cvs/hq/wine/dlls/amstream/amstream.c	2005-01-11 21:24:53.000000000 +0800
+++ wine/dlls/amstream/amstream.c	2005-05-27 13:51:04.000000000 +0900
@@ -39,7 +39,7 @@ typedef struct {
     ULONG ref;
 } IAMMultiMediaStreamImpl;
 
-static struct IAMMultiMediaStreamVtbl AM_Vtbl;
+static const struct IAMMultiMediaStreamVtbl AM_Vtbl;
 
 HRESULT AM_create(IUnknown *pUnkOuter, LPVOID *ppObj)
 {
@@ -247,7 +247,7 @@ static HRESULT WINAPI IAMMultiMediaStrea
   return S_FALSE;
 }
 
-static IAMMultiMediaStreamVtbl AM_Vtbl =
+static const IAMMultiMediaStreamVtbl AM_Vtbl =
 {
     IAMMultiMediaStreamImpl_QueryInterface,
     IAMMultiMediaStreamImpl_AddRef,
diff -up cvs/hq/wine/dlls/amstream/main.c wine/dlls/amstream/main.c
--- cvs/hq/wine/dlls/amstream/main.c	2004-10-08 12:47:43.000000000 +0900
+++ wine/dlls/amstream/main.c	2005-05-27 13:51:54.000000000 +0900
@@ -141,7 +141,7 @@ static HRESULT WINAPI AMCF_LockServer(LP
     return S_OK;
 }
 
-static IClassFactoryVtbl DSCF_Vtbl =
+static const IClassFactoryVtbl DSCF_Vtbl =
 {
     AMCF_QueryInterface,
     AMCF_AddRef,
diff -up cvs/hq/wine/dlls/atl/registrar.c wine/dlls/atl/registrar.c
--- cvs/hq/wine/dlls/atl/registrar.c	2005-03-23 09:27:38.000000000 +0800
+++ wine/dlls/atl/registrar.c	2005-05-27 13:54:29.000000000 +0900
@@ -78,7 +78,7 @@ typedef struct rep_list_str {
 } rep_list;
 
 typedef struct {
-    IRegistrarVtbl *lpVtbl;
+    const IRegistrarVtbl *lpVtbl;
     ULONG ref;
     rep_list *rep;
 } Registrar;
@@ -644,7 +644,7 @@ static HRESULT WINAPI Registrar_Resource
     return resource_register(This, resFileName, (LPOLESTR)nID, szType, FALSE);
 }
 
-static IRegistrarVtbl RegistrarVtbl = {
+static const IRegistrarVtbl RegistrarVtbl = {
     Registrar_QueryInterface,
     Registrar_AddRef,
     Registrar_Release,
diff -up cvs/hq/wine/dlls/avifil32/acmstream.c wine/dlls/avifil32/acmstream.c
--- cvs/hq/wine/dlls/avifil32/acmstream.c	2005-01-19 14:21:06.000000000 +0800
+++ wine/dlls/avifil32/acmstream.c	2005-05-27 14:20:53.000000000 +0900
@@ -54,7 +54,7 @@ static HRESULT WINAPI ACMStream_fnReadDa
 static HRESULT WINAPI ACMStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size);
 static HRESULT WINAPI ACMStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen);
 
-struct IAVIStreamVtbl iacmst = {
+static const struct IAVIStreamVtbl iacmst = {
   ACMStream_fnQueryInterface,
   ACMStream_fnAddRef,
   ACMStream_fnRelease,
@@ -73,7 +73,7 @@ struct IAVIStreamVtbl iacmst = {
 
 typedef struct _IAVIStreamImpl {
   /* IUnknown stuff */
-  IAVIStreamVtbl *lpVtbl;
+  const IAVIStreamVtbl *lpVtbl;
   DWORD		  ref;
 
   /* IAVIStream stuff */
diff -up cvs/hq/wine/dlls/avifil32/avifile.c wine/dlls/avifil32/avifile.c
--- cvs/hq/wine/dlls/avifil32/avifile.c	2005-01-19 14:21:06.000000000 +0800
+++ wine/dlls/avifil32/avifile.c	2005-05-27 14:35:32.000000000 +0900
@@ -69,7 +69,7 @@ static HRESULT WINAPI IAVIFile_fnReadDat
 static HRESULT WINAPI IAVIFile_fnEndRecord(IAVIFile*iface);
 static HRESULT WINAPI IAVIFile_fnDeleteStream(IAVIFile*iface,DWORD fccType,LONG lParam);
 
-struct IAVIFileVtbl iavift = {
+static const struct IAVIFileVtbl iavift = {
   IAVIFile_fnQueryInterface,
   IAVIFile_fnAddRef,
   IAVIFile_fnRelease,
@@ -92,7 +92,7 @@ static HRESULT WINAPI IPersistFile_fnSav
 static HRESULT WINAPI IPersistFile_fnSaveCompleted(IPersistFile*iface,LPCOLESTR pszFileName);
 static HRESULT WINAPI IPersistFile_fnGetCurFile(IPersistFile*iface,LPOLESTR*ppszFileName);
 
-struct IPersistFileVtbl ipersistft = {
+static const struct IPersistFileVtbl ipersistft = {
   IPersistFile_fnQueryInterface,
   IPersistFile_fnAddRef,
   IPersistFile_fnRelease,
@@ -119,7 +119,7 @@ static HRESULT WINAPI IAVIStream_fnReadD
 static HRESULT WINAPI IAVIStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size);
 static HRESULT WINAPI IAVIStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen);
 
-struct IAVIStreamVtbl iavist = {
+static const struct IAVIStreamVtbl iavist = {
   IAVIStream_fnQueryInterface,
   IAVIStream_fnAddRef,
   IAVIStream_fnRelease,
@@ -140,7 +140,7 @@ typedef struct _IAVIFileImpl IAVIFileImp
 
 typedef struct _IPersistFileImpl {
   /* IUnknown stuff */
-  IPersistFileVtbl *lpVtbl;
+  const IPersistFileVtbl *lpVtbl;
 
   /* IPersistFile stuff */
   IAVIFileImpl     *paf;
@@ -148,7 +148,7 @@ typedef struct _IPersistFileImpl {
 
 typedef struct _IAVIStreamImpl {
   /* IUnknown stuff */
-  IAVIStreamVtbl   *lpVtbl;
+  const IAVIStreamVtbl *lpVtbl;
   DWORD		    ref;
 
   /* IAVIStream stuff */
@@ -177,7 +177,7 @@ typedef struct _IAVIStreamImpl {
 
 struct _IAVIFileImpl {
   /* IUnknown stuff */
-  IAVIFileVtbl     *lpVtbl;
+  const IAVIFileVtbl     *lpVtbl;
   DWORD		    ref;
 
   /* IAVIFile stuff... */
diff -up cvs/hq/wine/dlls/avifil32/editstream.c wine/dlls/avifil32/editstream.c
--- cvs/hq/wine/dlls/avifil32/editstream.c	2005-01-19 14:21:06.000000000 +0800
+++ wine/dlls/avifil32/editstream.c	2005-05-27 14:33:06.000000000 +0900
@@ -80,7 +80,7 @@ static HRESULT WINAPI IAVIEditStream_fnC
 static HRESULT WINAPI IAVIEditStream_fnSetInfo(IAVIEditStream*iface,
                                                LPAVISTREAMINFOW asi,LONG size);
 
-struct IAVIEditStreamVtbl ieditstream = {
+static const struct IAVIEditStreamVtbl ieditstream = {
   IAVIEditStream_fnQueryInterface,
   IAVIEditStream_fnAddRef,
   IAVIEditStream_fnRelease,
@@ -115,7 +115,7 @@ static HRESULT WINAPI IEditAVIStream_fnW
                                                  LPVOID lp,LONG size);
 static HRESULT WINAPI IEditAVIStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen);
 
-struct IAVIStreamVtbl ieditstast = {
+static const struct IAVIStreamVtbl ieditstast = {
   IEditAVIStream_fnQueryInterface,
   IEditAVIStream_fnAddRef,
   IEditAVIStream_fnRelease,
@@ -137,7 +137,7 @@ static ULONG   WINAPI IEditStreamInterna
 static ULONG   WINAPI IEditStreamInternal_fnRelease(IEditStreamInternal*iface);
 static HRESULT WINAPI IEditStreamInternal_fnGetEditStreamImpl(IEditStreamInternal*iface,LPVOID*ppimpl);
 
-struct IEditStreamInternalVtbl ieditstreaminternal = {
+static const struct IEditStreamInternalVtbl ieditstreaminternal = {
   IEditStreamInternal_fnQueryInterface,
   IEditStreamInternal_fnAddRef,
   IEditStreamInternal_fnRelease,
@@ -148,7 +148,7 @@ typedef struct _IAVIEditStreamImpl IAVIE
 
 typedef struct _IEditAVIStreamImpl {
   /* IUnknown stuff */
-  IAVIStreamVtbl *lpVtbl;
+  const IAVIStreamVtbl *lpVtbl;
 
   /* IAVIStream stuff */
   IAVIEditStreamImpl *pae;
@@ -156,7 +156,7 @@ typedef struct _IEditAVIStreamImpl {
 
 typedef struct _IEditStreamInternalImpl {
   /* IUnknown stuff */
-  IEditStreamInternalVtbl *lpVtbl;
+  const IEditStreamInternalVtbl *lpVtbl;
 
   /* IEditStreamInternal stuff */
   IAVIEditStreamImpl *pae;
@@ -164,7 +164,7 @@ typedef struct _IEditStreamInternalImpl 
 
 struct _IAVIEditStreamImpl {
   /* IUnknown stuff */
-  IAVIEditStreamVtbl *lpVtbl;
+  const IAVIEditStreamVtbl *lpVtbl;
   DWORD  ref;
 
   /* IAVIEditStream stuff */
diff -up cvs/hq/wine/dlls/avifil32/factory.c wine/dlls/avifil32/factory.c
--- cvs/hq/wine/dlls/avifil32/factory.c	2004-10-08 12:47:43.000000000 +0900
+++ wine/dlls/avifil32/factory.c	2005-05-27 15:43:54.000000000 +0900
@@ -50,7 +50,7 @@ static ULONG   WINAPI IClassFactory_fnRe
 static HRESULT WINAPI IClassFactory_fnCreateInstance(LPCLASSFACTORY iface,LPUNKNOWN pOuter,REFIID riid,LPVOID *ppobj);
 static HRESULT WINAPI IClassFactory_fnLockServer(LPCLASSFACTORY iface,BOOL dolock);
 
-static IClassFactoryVtbl iclassfact = {
+static const IClassFactoryVtbl iclassfact = {
   IClassFactory_fnQueryInterface,
   IClassFactory_fnAddRef,
   IClassFactory_fnRelease,
@@ -61,7 +61,7 @@ static IClassFactoryVtbl iclassfact = {
 typedef struct
 {
   /* IUnknown fields */
-  IClassFactoryVtbl *lpVtbl;
+  const IClassFactoryVtbl *lpVtbl;
   DWORD	 dwRef;
 
   CLSID  clsid;
diff -up cvs/hq/wine/dlls/avifil32/getframe.c wine/dlls/avifil32/getframe.c
--- cvs/hq/wine/dlls/avifil32/getframe.c	2005-01-19 14:21:06.000000000 +0800
+++ wine/dlls/avifil32/getframe.c	2005-05-27 15:44:31.000000000 +0900
@@ -54,7 +54,7 @@ static HRESULT WINAPI IGetFrame_fnSetFor
 					    LPVOID lpBits, INT x, INT y,
 					    INT dx, INT dy);
 
-struct IGetFrameVtbl igetframeVtbl = {
+static const struct IGetFrameVtbl igetframeVtbl = {
   IGetFrame_fnQueryInterface,
   IGetFrame_fnAddRef,
   IGetFrame_fnRelease,
@@ -66,7 +66,7 @@ struct IGetFrameVtbl igetframeVtbl = {
 
 typedef struct _IGetFrameImpl {
   /* IUnknown stuff */
-  IGetFrameVtbl     *lpVtbl;
+  const IGetFrameVtbl *lpVtbl;
   DWORD              ref;
 
   /* IGetFrame stuff */
diff -up cvs/hq/wine/dlls/avifil32/icmstream.c wine/dlls/avifil32/icmstream.c
--- cvs/hq/wine/dlls/avifil32/icmstream.c	2005-01-19 14:21:06.000000000 +0800
+++ wine/dlls/avifil32/icmstream.c	2005-05-27 15:44:58.000000000 +0900
@@ -57,7 +57,7 @@ static HRESULT WINAPI ICMStream_fnReadDa
 static HRESULT WINAPI ICMStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size);
 static HRESULT WINAPI ICMStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen);
 
-struct IAVIStreamVtbl iicmst = {
+static const struct IAVIStreamVtbl iicmst = {
   ICMStream_fnQueryInterface,
   ICMStream_fnAddRef,
   ICMStream_fnRelease,
@@ -76,7 +76,7 @@ struct IAVIStreamVtbl iicmst = {
 
 typedef struct _IAVIStreamImpl {
   /* IUnknown stuff */
-  IAVIStreamVtbl    *lpVtbl;
+  const IAVIStreamVtbl *lpVtbl;
   DWORD		     ref;
 
   /* IAVIStream stuff */
diff -up cvs/hq/wine/dlls/avifil32/tmpfile.c wine/dlls/avifil32/tmpfile.c
--- cvs/hq/wine/dlls/avifil32/tmpfile.c	2005-01-19 14:21:06.000000000 +0800
+++ wine/dlls/avifil32/tmpfile.c	2005-05-27 15:45:19.000000000 +0900
@@ -50,7 +50,7 @@ static HRESULT WINAPI ITmpFile_fnReadDat
 static HRESULT WINAPI ITmpFile_fnEndRecord(IAVIFile*iface);
 static HRESULT WINAPI ITmpFile_fnDeleteStream(IAVIFile*iface,DWORD fccType,LONG lParam);
 
-struct IAVIFileVtbl itmpft = {
+static const struct IAVIFileVtbl itmpft = {
   ITmpFile_fnQueryInterface,
   ITmpFile_fnAddRef,
   ITmpFile_fnRelease,
@@ -65,7 +65,7 @@ struct IAVIFileVtbl itmpft = {
 
 typedef struct _ITmpFileImpl {
   /* IUnknown stuff */
-  IAVIFileVtbl *lpVtbl;
+  const IAVIFileVtbl *lpVtbl;
   DWORD         ref;
 
   /* IAVIFile stuff */
diff -up cvs/hq/wine/dlls/avifil32/wavfile.c wine/dlls/avifil32/wavfile.c
--- cvs/hq/wine/dlls/avifil32/wavfile.c	2005-01-19 14:21:06.000000000 +0800
+++ wine/dlls/avifil32/wavfile.c	2005-05-27 15:46:18.000000000 +0900
@@ -99,7 +99,7 @@ static HRESULT WINAPI IAVIFile_fnReadDat
 static HRESULT WINAPI IAVIFile_fnEndRecord(IAVIFile*iface);
 static HRESULT WINAPI IAVIFile_fnDeleteStream(IAVIFile*iface,DWORD fccType,LONG lParam);
 
-struct IAVIFileVtbl iwavft = {
+static const struct IAVIFileVtbl iwavft = {
   IAVIFile_fnQueryInterface,
   IAVIFile_fnAddRef,
   IAVIFile_fnRelease,
@@ -122,7 +122,7 @@ static HRESULT WINAPI IPersistFile_fnSav
 static HRESULT WINAPI IPersistFile_fnSaveCompleted(IPersistFile*iface,LPCOLESTR pszFileName);
 static HRESULT WINAPI IPersistFile_fnGetCurFile(IPersistFile*iface,LPOLESTR*ppszFileName);
 
-struct IPersistFileVtbl iwavpft = {
+static const struct IPersistFileVtbl iwavpft = {
   IPersistFile_fnQueryInterface,
   IPersistFile_fnAddRef,
   IPersistFile_fnRelease,
@@ -149,7 +149,7 @@ static HRESULT WINAPI IAVIStream_fnReadD
 static HRESULT WINAPI IAVIStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size);
 static HRESULT WINAPI IAVIStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen);
 
-struct IAVIStreamVtbl iwavst = {
+static const struct IAVIStreamVtbl iwavst = {
   IAVIStream_fnQueryInterface,
   IAVIStream_fnAddRef,
   IAVIStream_fnRelease,
@@ -170,7 +170,7 @@ typedef struct _IAVIFileImpl IAVIFileImp
 
 typedef struct _IPersistFileImpl {
   /* IUnknown stuff */
-  IPersistFileVtbl *lpVtbl;
+  const IPersistFileVtbl *lpVtbl;
 
   /* IPersistFile stuff */
   IAVIFileImpl     *paf;
@@ -178,7 +178,7 @@ typedef struct _IPersistFileImpl {
 
 typedef struct _IAVIStreamImpl {
   /* IUnknown stuff */
-  IAVIStreamVtbl   *lpVtbl;
+  const IAVIStreamVtbl *lpVtbl;
 
   /* IAVIStream stuff */
   IAVIFileImpl     *paf;
@@ -186,7 +186,7 @@ typedef struct _IAVIStreamImpl {
 
 struct _IAVIFileImpl {
   /* IUnknown stuff */
-  IAVIFileVtbl     *lpVtbl;
+  const IAVIFileVtbl *lpVtbl;
   DWORD		    ref;
 
   /* IAVIFile, IAVIStream stuff... */
diff -up cvs/hq/wine/dlls/comcat/comcat_private.h wine/dlls/comcat/comcat_private.h
--- cvs/hq/wine/dlls/comcat/comcat_private.h	2004-10-08 12:47:43.000000000 +0900
+++ wine/dlls/comcat/comcat_private.h	2005-05-27 15:48:12.000000000 +0900
@@ -46,7 +46,7 @@ extern DWORD dll_ref;
 typedef struct
 {
     /* IUnknown fields */
-    IClassFactoryVtbl *lpVtbl;
+    const IClassFactoryVtbl *lpVtbl;
     DWORD ref;
 } ClassFactoryImpl;
 
@@ -58,15 +58,15 @@ extern ClassFactoryImpl COMCAT_ClassFact
 typedef struct
 {
     /* IUnknown fields */
-    IUnknownVtbl *unkVtbl;
-    ICatRegisterVtbl *regVtbl;
-    ICatInformationVtbl *infVtbl;
+    const IUnknownVtbl *unkVtbl;
+    const ICatRegisterVtbl *regVtbl;
+    const ICatInformationVtbl *infVtbl;
     DWORD ref;
 } ComCatMgrImpl;
 
-extern ComCatMgrImpl COMCAT_ComCatMgr;
-extern ICatRegisterVtbl COMCAT_ICatRegister_Vtbl;
-extern ICatInformationVtbl COMCAT_ICatInformation_Vtbl;
+extern const ComCatMgrImpl COMCAT_ComCatMgr;
+extern const ICatRegisterVtbl COMCAT_ICatRegister_Vtbl;
+extern const ICatInformationVtbl COMCAT_ICatInformation_Vtbl;
 
 /**********************************************************************
  * Global string constant declarations
diff -up cvs/hq/wine/dlls/comcat/factory.c wine/dlls/comcat/factory.c
--- cvs/hq/wine/dlls/comcat/factory.c	2005-01-11 21:24:53.000000000 +0800
+++ wine/dlls/comcat/factory.c	2005-05-27 15:48:36.000000000 +0900
@@ -134,7 +134,7 @@ static HRESULT WINAPI COMCAT_IClassFacto
 /**********************************************************************
  * IClassFactory_Vtbl
  */
-static IClassFactoryVtbl IClassFactory_Vtbl =
+static const IClassFactoryVtbl IClassFactory_Vtbl =
 {
     COMCAT_IClassFactory_QueryInterface,
     COMCAT_IClassFactory_AddRef,
diff -up cvs/hq/wine/dlls/comcat/information.c wine/dlls/comcat/information.c
--- cvs/hq/wine/dlls/comcat/information.c	2005-03-23 09:27:38.000000000 +0800
+++ wine/dlls/comcat/information.c	2005-05-27 15:57:19.000000000 +0900
@@ -236,7 +236,7 @@ static HRESULT WINAPI COMCAT_ICatInforma
     LPENUMCATID *ppenumCATID)
 {
 /*     ICOM_THIS_MULTI(ComCatMgrImpl, infVtbl, iface); */
-    WCHAR postfix[24] = { '\\', 'I', 'm', 'p', 'l', 'e', 'm', 'e',
+    static const WCHAR postfix[24] = { '\\', 'I', 'm', 'p', 'l', 'e', 'm', 'e',
 			  'n', 't', 'e', 'd', ' ', 'C', 'a', 't',
 			  'e', 'g', 'o', 'r', 'i', 'e', 's', 0 };
 
@@ -259,7 +259,7 @@ static HRESULT WINAPI COMCAT_ICatInforma
     LPENUMCATID *ppenumCATID)
 {
 /*     ICOM_THIS_MULTI(ComCatMgrImpl, infVtbl, iface); */
-    WCHAR postfix[21] = { '\\', 'R', 'e', 'q', 'u', 'i', 'r', 'e',
+    static const WCHAR postfix[21] = { '\\', 'R', 'e', 'q', 'u', 'i', 'r', 'e',
 			  'd', ' ', 'C', 'a', 't', 'e', 'g', 'o',
 			  'r', 'i', 'e', 's', 0 };
 
@@ -276,7 +276,7 @@ static HRESULT WINAPI COMCAT_ICatInforma
 /**********************************************************************
  * COMCAT_ICatInformation_Vtbl
  */
-ICatInformationVtbl COMCAT_ICatInformation_Vtbl =
+const ICatInformationVtbl COMCAT_ICatInformation_Vtbl =
 {
     COMCAT_ICatInformation_QueryInterface,
     COMCAT_ICatInformation_AddRef,
@@ -297,7 +297,7 @@ ICatInformationVtbl COMCAT_ICatInformati
  */
 typedef struct
 {
-    IEnumCATEGORYINFOVtbl *lpVtbl;
+    const IEnumCATEGORYINFOVtbl *lpVtbl;
     DWORD ref;
     LCID  lcid;
     HKEY  key;
@@ -451,7 +451,7 @@ static HRESULT WINAPI COMCAT_IEnumCATEGO
     return S_OK;
 }
 
-IEnumCATEGORYINFOVtbl COMCAT_IEnumCATEGORYINFO_Vtbl =
+static const IEnumCATEGORYINFOVtbl COMCAT_IEnumCATEGORYINFO_Vtbl =
 {
     COMCAT_IEnumCATEGORYINFO_QueryInterface,
     COMCAT_IEnumCATEGORYINFO_AddRef,
@@ -601,9 +601,9 @@ static HRESULT COMCAT_IsClassOfCategorie
  */
 typedef struct
 {
-    IEnumGUIDVtbl *lpVtbl;
+    const IEnumGUIDVtbl *lpVtbl;
     DWORD ref;
-    struct class_categories const *categories;
+    const struct class_categories *categories;
     HKEY  key;
     DWORD next_index;
 } CLSID_IEnumGUIDImpl;
@@ -759,7 +759,7 @@ static HRESULT WINAPI COMCAT_CLSID_IEnum
     return S_OK;
 }
 
-IEnumGUIDVtbl COMCAT_CLSID_IEnumGUID_Vtbl =
+static const IEnumGUIDVtbl COMCAT_CLSID_IEnumGUID_Vtbl =
 {
     COMCAT_CLSID_IEnumGUID_QueryInterface,
     COMCAT_CLSID_IEnumGUID_AddRef,
@@ -777,7 +777,7 @@ static LPENUMGUID COMCAT_CLSID_IEnumGUID
 
     This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CLSID_IEnumGUIDImpl));
     if (This) {
-	WCHAR keyname[6] = { 'C', 'L', 'S', 'I', 'D', 0 };
+	static const WCHAR keyname[] = { 'C', 'L', 'S', 'I', 'D', 0 };
 
 	This->lpVtbl = &COMCAT_CLSID_IEnumGUID_Vtbl;
 	This->categories = categories;
@@ -794,7 +794,7 @@ static LPENUMGUID COMCAT_CLSID_IEnumGUID
  */
 typedef struct
 {
-    IEnumGUIDVtbl *lpVtbl;
+    const IEnumGUIDVtbl *lpVtbl;
     DWORD ref;
     WCHAR keyname[68];
     HKEY  key;
@@ -934,7 +934,7 @@ static HRESULT WINAPI COMCAT_CATID_IEnum
     return S_OK;
 }
 
-IEnumGUIDVtbl COMCAT_CATID_IEnumGUID_Vtbl =
+static const IEnumGUIDVtbl COMCAT_CATID_IEnumGUID_Vtbl =
 {
     COMCAT_CATID_IEnumGUID_QueryInterface,
     COMCAT_CATID_IEnumGUID_AddRef,
diff -up cvs/hq/wine/dlls/comcat/manager.c wine/dlls/comcat/manager.c
--- cvs/hq/wine/dlls/comcat/manager.c	2005-01-11 21:24:53.000000000 +0800
+++ wine/dlls/comcat/manager.c	2005-05-27 15:56:52.000000000 +0900
@@ -40,19 +40,19 @@ static HRESULT WINAPI COMCAT_IUnknown_Qu
     if (This == NULL || ppvObj == NULL) return E_POINTER;
 
     if (IsEqualGUID(riid, &IID_IUnknown)) {
-	*ppvObj = (LPVOID)&This->unkVtbl;
+	*ppvObj = &This->unkVtbl;
 	COMCAT_IUnknown_AddRef(iface);
 	return S_OK;
     }
 
     if (IsEqualGUID(riid, &IID_ICatRegister)) {
-	*ppvObj = (LPVOID)&This->regVtbl;
+	*ppvObj = &This->regVtbl;
 	COMCAT_IUnknown_AddRef(iface);
 	return S_OK;
     }
 
     if (IsEqualGUID(riid, &IID_ICatInformation)) {
-	*ppvObj = (LPVOID)&This->infVtbl;
+	*ppvObj = &This->infVtbl;
 	COMCAT_IUnknown_AddRef(iface);
 	return S_OK;
     }
@@ -101,7 +101,7 @@ static ULONG WINAPI COMCAT_IUnknown_Rele
 /**********************************************************************
  * COMCAT_IUnknown_Vtbl
  */
-static IUnknownVtbl COMCAT_IUnknown_Vtbl =
+static const IUnknownVtbl COMCAT_IUnknown_Vtbl =
 {
     COMCAT_IUnknown_QueryInterface,
     COMCAT_IUnknown_AddRef,
@@ -111,7 +111,7 @@ static IUnknownVtbl COMCAT_IUnknown_Vtbl
 /**********************************************************************
  * static ComCatMgr instance
  */
-ComCatMgrImpl COMCAT_ComCatMgr =
+const ComCatMgrImpl COMCAT_ComCatMgr =
 {
     &COMCAT_IUnknown_Vtbl,
     &COMCAT_ICatRegister_Vtbl,
diff -up cvs/hq/wine/dlls/comcat/register.c wine/dlls/comcat/register.c
--- cvs/hq/wine/dlls/comcat/register.c	2004-08-24 17:55:41.000000000 +0900
+++ wine/dlls/comcat/register.c	2005-05-27 15:58:16.000000000 +0900
@@ -236,7 +236,7 @@ static HRESULT WINAPI COMCAT_ICatRegiste
 /**********************************************************************
  * COMCAT_ICatRegister_Vtbl
  */
-ICatRegisterVtbl COMCAT_ICatRegister_Vtbl =
+const ICatRegisterVtbl COMCAT_ICatRegister_Vtbl =
 {
     COMCAT_ICatRegister_QueryInterface,
     COMCAT_ICatRegister_AddRef,
diff -up cvs/hq/wine/dlls/commdlg/filedlgbrowser.c wine/dlls/commdlg/filedlgbrowser.c
--- cvs/hq/wine/dlls/commdlg/filedlgbrowser.c	2005-05-27 13:44:23.000000000 +0900
+++ wine/dlls/commdlg/filedlgbrowser.c	2005-05-27 16:02:32.000000000 +0900
@@ -47,9 +47,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
 typedef struct
 {
 
-    IShellBrowserVtbl   * lpVtbl;
-    ICommDlgBrowserVtbl * lpVtblCommDlgBrowser;
-    IServiceProviderVtbl* lpVtblServiceProvider;
+    const IShellBrowserVtbl *lpVtbl;
+    const ICommDlgBrowserVtbl *lpVtblCommDlgBrowser;
+    const IServiceProviderVtbl *lpVtblServiceProvider;
     DWORD ref;                                  /* Reference counter */
     HWND hwndOwner;                             /* Owner dialog of the interface */
 
@@ -58,9 +58,9 @@ typedef struct
 /**************************************************************************
 *   vtable
 */
-static IShellBrowserVtbl IShellBrowserImpl_Vtbl;
-static ICommDlgBrowserVtbl IShellBrowserImpl_ICommDlgBrowser_Vtbl;
-static IServiceProviderVtbl IShellBrowserImpl_IServiceProvider_Vtbl;
+static const IShellBrowserVtbl IShellBrowserImpl_Vtbl;
+static const ICommDlgBrowserVtbl IShellBrowserImpl_ICommDlgBrowser_Vtbl;
+static const IServiceProviderVtbl IShellBrowserImpl_IServiceProvider_Vtbl;
 
 /**************************************************************************
 *   Local Prototypes
@@ -689,7 +689,7 @@ HRESULT WINAPI IShellBrowserImpl_Transla
     return E_NOTIMPL;
 }
 
-static IShellBrowserVtbl IShellBrowserImpl_Vtbl =
+static const IShellBrowserVtbl IShellBrowserImpl_Vtbl =
 {
         /* IUnknown */
         IShellBrowserImpl_QueryInterface,
@@ -914,7 +914,7 @@ HRESULT IShellBrowserImpl_ICommDlgBrowse
     return S_OK;
 }
 
-static ICommDlgBrowserVtbl IShellBrowserImpl_ICommDlgBrowser_Vtbl =
+static const ICommDlgBrowserVtbl IShellBrowserImpl_ICommDlgBrowser_Vtbl =
 {
         /* IUnknown */
         IShellBrowserImpl_ICommDlgBrowser_QueryInterface,
@@ -1003,7 +1003,7 @@ HRESULT WINAPI IShellBrowserImpl_IServic
 
 }
 
-static IServiceProviderVtbl IShellBrowserImpl_IServiceProvider_Vtbl =
+static const IServiceProviderVtbl IShellBrowserImpl_IServiceProvider_Vtbl =
 {
         /* IUnknown */
         IShellBrowserImpl_IServiceProvider_QueryInterface,
diff -up cvs/hq/wine/dlls/d3d8/basetexture.c wine/dlls/d3d8/basetexture.c
--- cvs/hq/wine/dlls/d3d8/basetexture.c	2005-01-26 17:55:34.000000000 +0800
+++ wine/dlls/d3d8/basetexture.c	2005-05-27 16:18:39.000000000 +0900
@@ -130,7 +130,7 @@ DWORD    WINAPI        IDirect3DBaseText
     return This->levels;
 }
 
-IDirect3DBaseTexture8Vtbl Direct3DBaseTexture8_Vtbl =
+static const IDirect3DBaseTexture8Vtbl Direct3DBaseTexture8_Vtbl =
 {
     IDirect3DBaseTexture8Impl_QueryInterface,
     IDirect3DBaseTexture8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/cubetexture.c wine/dlls/d3d8/cubetexture.c
--- cvs/hq/wine/dlls/d3d8/cubetexture.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d8/cubetexture.c	2005-05-27 16:15:03.000000000 +0900
@@ -279,7 +279,7 @@ HRESULT  WINAPI        IDirect3DCubeText
 }
 
 
-IDirect3DCubeTexture8Vtbl Direct3DCubeTexture8_Vtbl =
+const IDirect3DCubeTexture8Vtbl Direct3DCubeTexture8_Vtbl =
 {
     IDirect3DCubeTexture8Impl_QueryInterface,
     IDirect3DCubeTexture8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/d3d8_private.h wine/dlls/d3d8/d3d8_private.h
--- cvs/hq/wine/dlls/d3d8/d3d8_private.h	2005-03-27 14:36:38.000000000 +0900
+++ wine/dlls/d3d8/d3d8_private.h	2005-05-27 16:19:19.000000000 +0900
@@ -274,7 +274,7 @@ struct PLIGHTINFOEL {
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3D8Vtbl Direct3D8_Vtbl;
+extern const IDirect3D8Vtbl Direct3D8_Vtbl;
 
 /*****************************************************************************
  * IDirect3D implementation structure
@@ -282,7 +282,7 @@ extern IDirect3D8Vtbl Direct3D8_Vtbl;
 struct IDirect3D8Impl
 {
     /* IUnknown fields */
-    IDirect3D8Vtbl         *lpVtbl;
+    const IDirect3D8Vtbl   *lpVtbl;
     DWORD                   ref;
 
     /* The WineD3D device */
@@ -327,7 +327,7 @@ extern HRESULT  WINAPI  IDirect3D8Impl_C
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DDevice8Vtbl Direct3DDevice8_Vtbl;
+extern const IDirect3DDevice8Vtbl Direct3DDevice8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DDevice8 implementation structure
@@ -335,7 +335,7 @@ extern IDirect3DDevice8Vtbl Direct3DDevi
 struct IDirect3DDevice8Impl
 {
     /* IUnknown fields */
-    IDirect3DDevice8Vtbl         *lpVtbl;
+    const IDirect3DDevice8Vtbl   *lpVtbl;
     DWORD                         ref;
 
     /* IDirect3DDevice8 fields */
@@ -522,7 +522,7 @@ extern HRESULT WINAPI   IDirect3DDevice8
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DVolume8Vtbl Direct3DVolume8_Vtbl;
+extern const IDirect3DVolume8Vtbl Direct3DVolume8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DVolume8 implementation structure
@@ -530,7 +530,7 @@ extern IDirect3DVolume8Vtbl Direct3DVolu
 struct IDirect3DVolume8Impl
 {
     /* IUnknown fields */
-    IDirect3DVolume8Vtbl   *lpVtbl;
+    const IDirect3DVolume8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DVolume8 fields */
@@ -576,7 +576,7 @@ extern HRESULT WINAPI IDirect3DVolume8Im
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DSwapChain8Vtbl Direct3DSwapChain8_Vtbl;
+extern const IDirect3DSwapChain8Vtbl Direct3DSwapChain8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DSwapChain8 implementation structure
@@ -584,7 +584,7 @@ extern IDirect3DSwapChain8Vtbl Direct3DS
 struct IDirect3DSwapChain8Impl
 {
     /* IUnknown fields */
-    IDirect3DSwapChain8Vtbl *lpVtbl;
+    const IDirect3DSwapChain8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DSwapChain8 fields */
@@ -615,7 +615,7 @@ extern HRESULT WINAPI IDirect3DSwapChain
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DSurface8Vtbl Direct3DSurface8_Vtbl;
+extern const IDirect3DSurface8Vtbl Direct3DSurface8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DSurface8 implementation structure
@@ -623,7 +623,7 @@ extern IDirect3DSurface8Vtbl Direct3DSur
 struct IDirect3DSurface8Impl
 {
     /* IUnknown fields */
-    IDirect3DSurface8Vtbl  *lpVtbl;
+    const IDirect3DSurface8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DSurface8 fields */
@@ -675,7 +675,7 @@ extern HRESULT WINAPI IDirect3DSurface8I
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DResource8Vtbl Direct3DResource8_Vtbl;
+extern const IDirect3DResource8Vtbl Direct3DResource8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DResource8 implementation structure
@@ -683,7 +683,7 @@ extern IDirect3DResource8Vtbl Direct3DRe
 struct IDirect3DResource8Impl
 {
     /* IUnknown fields */
-    IDirect3DResource8Vtbl *lpVtbl;
+    const IDirect3DResource8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -717,7 +717,7 @@ extern D3DPOOL WINAPI         IDirect3DR
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DVertexBuffer8Vtbl Direct3DVertexBuffer8_Vtbl;
+extern const IDirect3DVertexBuffer8Vtbl Direct3DVertexBuffer8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DVertexBuffer8 implementation structure
@@ -725,7 +725,7 @@ extern IDirect3DVertexBuffer8Vtbl Direct
 struct IDirect3DVertexBuffer8Impl
 {
     /* IUnknown fields */
-    IDirect3DVertexBuffer8Vtbl *lpVtbl;
+    const IDirect3DVertexBuffer8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -765,7 +765,7 @@ extern HRESULT  WINAPI        IDirect3DV
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DIndexBuffer8Vtbl Direct3DIndexBuffer8_Vtbl;
+extern const IDirect3DIndexBuffer8Vtbl Direct3DIndexBuffer8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DIndexBuffer8 implementation structure
@@ -773,7 +773,7 @@ extern IDirect3DIndexBuffer8Vtbl Direct3
 struct IDirect3DIndexBuffer8Impl
 {
     /* IUnknown fields */
-    IDirect3DIndexBuffer8Vtbl *lpVtbl;
+    const IDirect3DIndexBuffer8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -813,7 +813,7 @@ extern HRESULT  WINAPI        IDirect3DI
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DBaseTexture8Vtbl Direct3DBaseTexture8_Vtbl;
+extern const IDirect3DBaseTexture8Vtbl Direct3DBaseTexture8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DBaseTexture8 implementation structure
@@ -821,7 +821,7 @@ extern IDirect3DBaseTexture8Vtbl Direct3
 struct IDirect3DBaseTexture8Impl
 {
     /* IUnknown fields */
-    IDirect3DBaseTexture8Vtbl *lpVtbl;
+    const IDirect3DBaseTexture8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -870,7 +870,7 @@ extern BOOL     WINAPI        IDirect3DB
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DCubeTexture8Vtbl Direct3DCubeTexture8_Vtbl;
+extern const IDirect3DCubeTexture8Vtbl Direct3DCubeTexture8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DCubeTexture8 implementation structure
@@ -878,7 +878,7 @@ extern IDirect3DCubeTexture8Vtbl Direct3
 struct IDirect3DCubeTexture8Impl
 {
     /* IUnknown fields */
-    IDirect3DCubeTexture8Vtbl *lpVtbl;
+    const IDirect3DCubeTexture8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -932,7 +932,7 @@ extern HRESULT  WINAPI        IDirect3DC
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DTexture8Vtbl Direct3DTexture8_Vtbl;
+extern const IDirect3DTexture8Vtbl Direct3DTexture8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DTexture8 implementation structure
@@ -940,7 +940,7 @@ extern IDirect3DTexture8Vtbl Direct3DTex
 struct IDirect3DTexture8Impl
 {
     /* IUnknown fields */
-    IDirect3DTexture8Vtbl  *lpVtbl;
+    const IDirect3DTexture8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResourc8 fields */
@@ -995,7 +995,7 @@ extern HRESULT  WINAPI        IDirect3DT
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DVolumeTexture8Vtbl Direct3DVolumeTexture8_Vtbl;
+extern const IDirect3DVolumeTexture8Vtbl Direct3DVolumeTexture8_Vtbl;
 
 /*****************************************************************************
  * IDirect3DVolumeTexture8 implementation structure
@@ -1003,7 +1003,7 @@ extern IDirect3DVolumeTexture8Vtbl Direc
 struct IDirect3DVolumeTexture8Impl
 {
     /* IUnknown fields */
-    IDirect3DVolumeTexture8Vtbl *lpVtbl;
+    const IDirect3DVolumeTexture8Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource8 fields */
@@ -1084,14 +1084,14 @@ typedef struct SAVEDSTATES {
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-/*extern IDirect3DStateBlock9Vtbl Direct3DStateBlock9_Vtbl;*/
+/*extern const IDirect3DStateBlock9Vtbl Direct3DStateBlock9_Vtbl;*/
 
 /*****************************************************************************
  * IDirect3DStateBlock implementation structure
  */
 struct  IDirect3DStateBlockImpl {
   /* IUnknown fields */
-  /*IDirect3DStateBlock9Vtbl *lpVtbl;*/
+  /*const IDirect3DStateBlock9Vtbl *lpVtbl;*/
   DWORD  ref;
 
   /* The device, to be replaced by an IDirect3DDeviceImpl */
@@ -1173,14 +1173,14 @@ extern HRESULT WINAPI IDirect3DDeviceImp
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-/*extern IDirect3DVertexShaderDeclaration9Vtbl Direct3DVertexShaderDeclaration9_Vtbl;*/
+/*extern const IDirect3DVertexShaderDeclaration9Vtbl Direct3DVertexShaderDeclaration9_Vtbl;*/
 
 /*****************************************************************************
  * IDirect3DVertexShaderDeclaration implementation structure
  */
 struct IDirect3DVertexShaderDeclarationImpl {
   /* IUnknown fields */
-  /*IDirect3DVertexShaderDeclaration9Vtbl *lpVtbl;*/
+  /*const IDirect3DVertexShaderDeclaration9Vtbl *lpVtbl;*/
   DWORD  ref;
 
   /* The device, to be replaced by an IDirect3DDeviceImpl */
@@ -1210,13 +1210,13 @@ extern HRESULT WINAPI IDirect3DDeviceImp
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-/*extern IDirect3DVertexShader9Vtbl Direct3DVertexShader9_Vtbl;*/
+/*extern const IDirect3DVertexShader9Vtbl Direct3DVertexShader9_Vtbl;*/
 
 /*****************************************************************************
  * IDirect3DVertexShader implementation structure
  */
 struct IDirect3DVertexShaderImpl {
-  /*IDirect3DVertexShader9Vtbl *lpVtbl;*/
+  /*const IDirect3DVertexShader9Vtbl *lpVtbl;*/
   DWORD ref;
 
   /* The device, to be replaced by an IDirect3DDeviceImpl */
@@ -1259,13 +1259,13 @@ extern HRESULT WINAPI IDirect3DDeviceImp
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-/*extern IDirect3DPixelShader9Vtbl Direct3DPixelShader9_Vtbl;*/
+/*extern const IDirect3DPixelShader9Vtbl Direct3DPixelShader9_Vtbl;*/
 
 /*****************************************************************************
  * IDirect3DPixelShader implementation structure
  */
 struct IDirect3DPixelShaderImpl { 
-  /*IDirect3DPixelShader9Vtbl *lpVtbl;*/
+  /*const IDirect3DPixelShader9Vtbl *lpVtbl;*/
   DWORD ref;
 
   /* The device, to be replaced by an IDirect3DDeviceImpl */
diff -up cvs/hq/wine/dlls/d3d8/device.c wine/dlls/d3d8/device.c
--- cvs/hq/wine/dlls/d3d8/device.c	2005-03-27 14:36:38.000000000 +0900
+++ wine/dlls/d3d8/device.c	2005-05-27 16:20:28.000000000 +0900
@@ -4349,7 +4349,7 @@ HRESULT  WINAPI  IDirect3DDevice8Impl_Ge
 }
 
 
-IDirect3DDevice8Vtbl Direct3DDevice8_Vtbl =
+const IDirect3DDevice8Vtbl Direct3DDevice8_Vtbl =
 {
     IDirect3DDevice8Impl_QueryInterface,
     IDirect3DDevice8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/directx.c wine/dlls/d3d8/directx.c
--- cvs/hq/wine/dlls/d3d8/directx.c	2005-04-01 20:23:55.000000000 +0900
+++ wine/dlls/d3d8/directx.c	2005-05-27 16:20:52.000000000 +0900
@@ -828,7 +828,7 @@ HRESULT  WINAPI  IDirect3D8Impl_CreateDe
     return D3D_OK;
 }
 
-IDirect3D8Vtbl Direct3D8_Vtbl =
+const IDirect3D8Vtbl Direct3D8_Vtbl =
 {
     IDirect3D8Impl_QueryInterface,
     IDirect3D8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/indexbuffer.c wine/dlls/d3d8/indexbuffer.c
--- cvs/hq/wine/dlls/d3d8/indexbuffer.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d8/indexbuffer.c	2005-05-27 16:21:08.000000000 +0900
@@ -130,7 +130,7 @@ HRESULT  WINAPI        IDirect3DIndexBuf
     return D3D_OK;
 }
 
-IDirect3DIndexBuffer8Vtbl Direct3DIndexBuffer8_Vtbl =
+const IDirect3DIndexBuffer8Vtbl Direct3DIndexBuffer8_Vtbl =
 {
     IDirect3DIndexBuffer8Impl_QueryInterface,
     IDirect3DIndexBuffer8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/resource.c wine/dlls/d3d8/resource.c
--- cvs/hq/wine/dlls/d3d8/resource.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d8/resource.c	2005-05-27 16:21:15.000000000 +0900
@@ -132,7 +132,7 @@ D3DPOOL WINAPI IDirect3DResource8Impl_Ge
     }
 }
 
-IDirect3DResource8Vtbl Direct3DResource8_Vtbl =
+const IDirect3DResource8Vtbl Direct3DResource8_Vtbl =
 {
     IDirect3DResource8Impl_QueryInterface,
     IDirect3DResource8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/surface.c wine/dlls/d3d8/surface.c
--- cvs/hq/wine/dlls/d3d8/surface.c	2005-03-27 14:36:38.000000000 +0900
+++ wine/dlls/d3d8/surface.c	2005-05-27 16:21:56.000000000 +0900
@@ -468,7 +468,7 @@ unlock_end:
 }
 
 
-IDirect3DSurface8Vtbl Direct3DSurface8_Vtbl =
+const IDirect3DSurface8Vtbl Direct3DSurface8_Vtbl =
 {
     IDirect3DSurface8Impl_QueryInterface,
     IDirect3DSurface8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/swapchain.c wine/dlls/d3d8/swapchain.c
--- cvs/hq/wine/dlls/d3d8/swapchain.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d8/swapchain.c	2005-05-27 16:22:03.000000000 +0900
@@ -91,7 +91,7 @@ HRESULT WINAPI IDirect3DSwapChain8Impl_G
     return D3D_OK;
 }
 
-IDirect3DSwapChain8Vtbl Direct3DSwapChain8_Vtbl =
+const IDirect3DSwapChain8Vtbl Direct3DSwapChain8_Vtbl =
 {
     IDirect3DSwapChain8Impl_QueryInterface,
     IDirect3DSwapChain8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/texture.c wine/dlls/d3d8/texture.c
--- cvs/hq/wine/dlls/d3d8/texture.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d8/texture.c	2005-05-27 16:22:15.000000000 +0900
@@ -235,7 +235,7 @@ HRESULT  WINAPI        IDirect3DTexture8
 }
 
 
-IDirect3DTexture8Vtbl Direct3DTexture8_Vtbl =
+const IDirect3DTexture8Vtbl Direct3DTexture8_Vtbl =
 {
     IDirect3DTexture8Impl_QueryInterface,
     IDirect3DTexture8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/vertexbuffer.c wine/dlls/d3d8/vertexbuffer.c
--- cvs/hq/wine/dlls/d3d8/vertexbuffer.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d8/vertexbuffer.c	2005-05-27 16:22:22.000000000 +0900
@@ -135,7 +135,7 @@ HRESULT  WINAPI        IDirect3DVertexBu
     return D3D_OK;
 }
 
-IDirect3DVertexBuffer8Vtbl Direct3DVertexBuffer8_Vtbl =
+const IDirect3DVertexBuffer8Vtbl Direct3DVertexBuffer8_Vtbl =
 {
     IDirect3DVertexBuffer8Impl_QueryInterface,
     IDirect3DVertexBuffer8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/volume.c wine/dlls/d3d8/volume.c
--- cvs/hq/wine/dlls/d3d8/volume.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d8/volume.c	2005-05-27 16:22:32.000000000 +0900
@@ -192,7 +192,7 @@ HRESULT WINAPI IDirect3DVolume8Impl_Unlo
 }
 
 
-IDirect3DVolume8Vtbl Direct3DVolume8_Vtbl =
+const IDirect3DVolume8Vtbl Direct3DVolume8_Vtbl =
 {
     IDirect3DVolume8Impl_QueryInterface,
     IDirect3DVolume8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d8/volumetexture.c wine/dlls/d3d8/volumetexture.c
--- cvs/hq/wine/dlls/d3d8/volumetexture.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d8/volumetexture.c	2005-05-27 16:22:39.000000000 +0900
@@ -261,7 +261,7 @@ HRESULT  WINAPI        IDirect3DVolumeTe
 }
 
 
-IDirect3DVolumeTexture8Vtbl Direct3DVolumeTexture8_Vtbl =
+const IDirect3DVolumeTexture8Vtbl Direct3DVolumeTexture8_Vtbl =
 {
     IDirect3DVolumeTexture8Impl_QueryInterface,
     IDirect3DVolumeTexture8Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/basetexture.c wine/dlls/d3d9/basetexture.c
--- cvs/hq/wine/dlls/d3d9/basetexture.c	2005-03-11 20:08:00.000000000 +0800
+++ wine/dlls/d3d9/basetexture.c	2005-05-27 16:24:24.000000000 +0900
@@ -149,7 +149,7 @@ void WINAPI IDirect3DBaseTexture9Impl_Ge
     return IWineD3DBaseTexture_GenerateMipSubLevels(This->wineD3DBaseTexture);
 }
 
-IDirect3DBaseTexture9Vtbl Direct3DBaseTexture9_Vtbl =
+const IDirect3DBaseTexture9Vtbl Direct3DBaseTexture9_Vtbl =
 {
     IDirect3DBaseTexture9Impl_QueryInterface,
     IDirect3DBaseTexture9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/cubetexture.c wine/dlls/d3d9/cubetexture.c
--- cvs/hq/wine/dlls/d3d9/cubetexture.c	2005-04-01 20:23:55.000000000 +0900
+++ wine/dlls/d3d9/cubetexture.c	2005-05-27 16:24:33.000000000 +0900
@@ -207,7 +207,7 @@ HRESULT  WINAPI IDirect3DCubeTexture9Imp
 }
 
 
-IDirect3DCubeTexture9Vtbl Direct3DCubeTexture9_Vtbl =
+const IDirect3DCubeTexture9Vtbl Direct3DCubeTexture9_Vtbl =
 {
     IDirect3DCubeTexture9Impl_QueryInterface,
     IDirect3DCubeTexture9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/d3d9_private.h wine/dlls/d3d9/d3d9_private.h
--- cvs/hq/wine/dlls/d3d9/d3d9_private.h	2005-04-01 20:23:55.000000000 +0900
+++ wine/dlls/d3d9/d3d9_private.h	2005-05-27 16:28:05.000000000 +0900
@@ -183,7 +183,7 @@ typedef struct D3DSHADERVECTORI {
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3D9Vtbl Direct3D9_Vtbl;
+extern const IDirect3D9Vtbl Direct3D9_Vtbl;
 
 /*****************************************************************************
  * IDirect3D implementation structure
@@ -191,7 +191,7 @@ extern IDirect3D9Vtbl Direct3D9_Vtbl;
 struct IDirect3D9Impl
 {
     /* IUnknown fields */
-    IDirect3D9Vtbl         *lpVtbl;
+    const IDirect3D9Vtbl   *lpVtbl;
     DWORD                   ref;
 
     /* The WineD3D device */
@@ -228,7 +228,7 @@ extern HRESULT  WINAPI  IDirect3D9Impl_C
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DDevice9Vtbl Direct3DDevice9_Vtbl;
+extern const IDirect3DDevice9Vtbl Direct3DDevice9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DDevice9 implementation structure
@@ -236,7 +236,7 @@ extern IDirect3DDevice9Vtbl Direct3DDevi
 struct IDirect3DDevice9Impl
 {
     /* IUnknown fields */
-    IDirect3DDevice9Vtbl         *lpVtbl;
+    const IDirect3DDevice9Vtbl   *lpVtbl;
     DWORD                         ref;
 
     /* IDirect3DDevice9 fields */
@@ -435,7 +435,7 @@ extern HRESULT  WINAPI  IDirect3DDevice9
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DVolume9Vtbl Direct3DVolume9_Vtbl;
+extern const IDirect3DVolume9Vtbl Direct3DVolume9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DVolume9 implementation structure
@@ -443,7 +443,7 @@ extern IDirect3DVolume9Vtbl Direct3DVolu
 struct IDirect3DVolume9Impl
 {
     /* IUnknown fields */
-    IDirect3DVolume9Vtbl   *lpVtbl;
+    const IDirect3DVolume9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DVolume9 fields */
@@ -473,7 +473,7 @@ extern HRESULT WINAPI IDirect3DVolume9Im
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DSwapChain9Vtbl Direct3DSwapChain9_Vtbl;
+extern const IDirect3DSwapChain9Vtbl Direct3DSwapChain9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DSwapChain9 implementation structure
@@ -481,7 +481,7 @@ extern IDirect3DSwapChain9Vtbl Direct3DS
 struct IDirect3DSwapChain9Impl
 {
     /* IUnknown fields */
-    IDirect3DSwapChain9Vtbl *lpVtbl;
+    const IDirect3DSwapChain9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DSwapChain9 fields */
@@ -514,7 +514,7 @@ extern HRESULT WINAPI IDirect3DSwapChain
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DResource9Vtbl Direct3DResource9_Vtbl;
+extern const IDirect3DResource9Vtbl Direct3DResource9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DResource9 implementation structure
@@ -522,7 +522,7 @@ extern IDirect3DResource9Vtbl Direct3DRe
 struct IDirect3DResource9Impl
 {
     /* IUnknown fields */
-    IDirect3DResource9Vtbl *lpVtbl;
+    const IDirect3DResource9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -552,7 +552,7 @@ extern D3DRESOURCETYPE WINAPI IDirect3DR
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DSurface9Vtbl Direct3DSurface9_Vtbl;
+extern const IDirect3DSurface9Vtbl Direct3DSurface9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DSurface9 implementation structure
@@ -560,7 +560,7 @@ extern IDirect3DSurface9Vtbl Direct3DSur
 struct IDirect3DSurface9Impl
 {
     /* IUnknown fields */
-    IDirect3DSurface9Vtbl  *lpVtbl;
+    const IDirect3DSurface9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -599,7 +599,7 @@ extern HRESULT WINAPI IDirect3DSurface9I
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DVertexBuffer9Vtbl Direct3DVertexBuffer9_Vtbl;
+extern const IDirect3DVertexBuffer9Vtbl Direct3DVertexBuffer9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DVertexBuffer9 implementation structure
@@ -607,7 +607,7 @@ extern IDirect3DVertexBuffer9Vtbl Direct
 struct IDirect3DVertexBuffer9Impl
 {
     /* IUnknown fields */
-    IDirect3DVertexBuffer9Vtbl *lpVtbl;
+    const IDirect3DVertexBuffer9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -642,7 +642,7 @@ extern HRESULT  WINAPI        IDirect3DV
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DIndexBuffer9Vtbl Direct3DIndexBuffer9_Vtbl;
+extern const IDirect3DIndexBuffer9Vtbl Direct3DIndexBuffer9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DIndexBuffer9 implementation structure
@@ -650,7 +650,7 @@ extern IDirect3DIndexBuffer9Vtbl Direct3
 struct IDirect3DIndexBuffer9Impl
 {
     /* IUnknown fields */
-    IDirect3DIndexBuffer9Vtbl *lpVtbl;
+    const IDirect3DIndexBuffer9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -685,7 +685,7 @@ extern HRESULT  WINAPI        IDirect3DI
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DBaseTexture9Vtbl Direct3DBaseTexture9_Vtbl;
+extern const IDirect3DBaseTexture9Vtbl Direct3DBaseTexture9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DBaseTexture9 implementation structure
@@ -693,7 +693,7 @@ extern IDirect3DBaseTexture9Vtbl Direct3
 struct IDirect3DBaseTexture9Impl
 {
     /* IUnknown fields */
-    IDirect3DBaseTexture9Vtbl *lpVtbl;
+    const IDirect3DBaseTexture9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -731,7 +731,7 @@ extern void     WINAPI        IDirect3DB
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DCubeTexture9Vtbl Direct3DCubeTexture9_Vtbl;
+extern const IDirect3DCubeTexture9Vtbl Direct3DCubeTexture9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DCubeTexture9 implementation structure
@@ -739,7 +739,7 @@ extern IDirect3DCubeTexture9Vtbl Direct3
 struct IDirect3DCubeTexture9Impl
 {
     /* IUnknown fields */
-    IDirect3DCubeTexture9Vtbl *lpVtbl;
+    const IDirect3DCubeTexture9Vtbl *lpVtbl;
     DWORD                     ref;
 
     /* IDirect3DResource9 fields */
@@ -784,7 +784,7 @@ extern HRESULT  WINAPI        IDirect3DC
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DTexture9Vtbl Direct3DTexture9_Vtbl;
+extern const IDirect3DTexture9Vtbl Direct3DTexture9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DTexture9 implementation structure
@@ -792,7 +792,7 @@ extern IDirect3DTexture9Vtbl Direct3DTex
 struct IDirect3DTexture9Impl
 {
     /* IUnknown fields */
-    IDirect3DTexture9Vtbl  *lpVtbl;
+    const IDirect3DTexture9Vtbl *lpVtbl;
     DWORD                   ref;
 
     /* IDirect3DResource9 fields */
@@ -838,7 +838,7 @@ extern HRESULT  WINAPI        IDirect3DT
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DVolumeTexture9Vtbl Direct3DVolumeTexture9_Vtbl;
+extern const IDirect3DVolumeTexture9Vtbl Direct3DVolumeTexture9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DVolumeTexture9 implementation structure
@@ -846,7 +846,7 @@ extern IDirect3DVolumeTexture9Vtbl Direc
 struct IDirect3DVolumeTexture9Impl
 {
     /* IUnknown fields */
-    IDirect3DVolumeTexture9Vtbl *lpVtbl;
+    const IDirect3DVolumeTexture9Vtbl *lpVtbl;
     DWORD                       ref;
 
     /* IDirect3DResource9 fields */
@@ -891,14 +891,14 @@ extern HRESULT  WINAPI        IDirect3DV
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DStateBlock9Vtbl Direct3DStateBlock9_Vtbl;
+extern const IDirect3DStateBlock9Vtbl Direct3DStateBlock9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DStateBlock9 implementation structure
  */
 struct  IDirect3DStateBlock9Impl {
   /* IUnknown fields */
-  IDirect3DStateBlock9Vtbl *lpVtbl;
+  const IDirect3DStateBlock9Vtbl *lpVtbl;
   DWORD                     ref;
 
   /* IDirect3DStateBlock9 fields */
@@ -989,14 +989,14 @@ extern HRESULT WINAPI         IDirect3DS
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DVertexDeclaration9Vtbl Direct3DVertexDeclaration9_Vtbl;
+extern const IDirect3DVertexDeclaration9Vtbl Direct3DVertexDeclaration9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DVertexShaderDeclaration implementation structure
  */
 struct IDirect3DVertexDeclaration9Impl {
   /* IUnknown fields */
-  IDirect3DVertexDeclaration9Vtbl *lpVtbl;
+  const IDirect3DVertexDeclaration9Vtbl *lpVtbl;
   DWORD   ref;
 
   /* IDirect3DVertexDeclaration9 fields */
@@ -1020,14 +1020,14 @@ extern HRESULT  WINAPI      IDirect3DVer
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DVertexShader9Vtbl Direct3DVertexShader9_Vtbl;
+extern const IDirect3DVertexShader9Vtbl Direct3DVertexShader9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DVertexShader implementation structure
  */
 struct IDirect3DVertexShader9Impl {
   /* IUnknown fields */
-  IDirect3DVertexShader9Vtbl *lpVtbl;
+  const IDirect3DVertexShader9Vtbl *lpVtbl;
   DWORD ref;
 
   /* IDirect3DVertexDeclaration9 fields */
@@ -1062,14 +1062,14 @@ extern HRESULT WINAPI         IDirect3DV
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DPixelShader9Vtbl Direct3DPixelShader9_Vtbl;
+extern const IDirect3DPixelShader9Vtbl Direct3DPixelShader9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DPixelShader implementation structure
  */
 struct IDirect3DPixelShader9Impl { 
   /* IUnknown fields */
-  IDirect3DPixelShader9Vtbl *lpVtbl;
+  const IDirect3DPixelShader9Vtbl *lpVtbl;
   DWORD ref;
 
   /* IDirect3DPixelShader9 fields */
@@ -1103,14 +1103,14 @@ extern HRESULT WINAPI         IDirect3DP
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern IDirect3DQuery9Vtbl Direct3DQuery9_Vtbl;
+extern const IDirect3DQuery9Vtbl Direct3DQuery9_Vtbl;
 
 /*****************************************************************************
  * IDirect3DPixelShader implementation structure
  */
 typedef struct IDirect3DQuery9Impl {
     /* IUnknown fields */
-    IDirect3DQuery9Vtbl *lpVtbl;
+    const IDirect3DQuery9Vtbl *lpVtbl;
     DWORD                ref;
 
     /* IDirect3DQuery9 fields */
diff -up cvs/hq/wine/dlls/d3d9/device.c wine/dlls/d3d9/device.c
--- cvs/hq/wine/dlls/d3d9/device.c	2005-04-01 20:23:55.000000000 +0900
+++ wine/dlls/d3d9/device.c	2005-05-27 16:28:19.000000000 +0900
@@ -775,7 +775,7 @@ HRESULT  WINAPI  IDirect3DDevice9Impl_De
     return IWineD3DDevice_DeletePatch(This->WineD3DDevice, Handle);
 }
 
-IDirect3DDevice9Vtbl Direct3DDevice9_Vtbl =
+const IDirect3DDevice9Vtbl Direct3DDevice9_Vtbl =
 {
     IDirect3DDevice9Impl_QueryInterface,
     IDirect3DDevice9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/directx.c wine/dlls/d3d9/directx.c
--- cvs/hq/wine/dlls/d3d9/directx.c	2005-04-01 20:23:55.000000000 +0900
+++ wine/dlls/d3d9/directx.c	2005-05-27 16:28:38.000000000 +0900
@@ -229,7 +229,7 @@ HRESULT  WINAPI  IDirect3D9Impl_CreateDe
     return IWineD3D_CreateDevice(This->WineD3D, Adapter, DeviceType, hFocusWindow, BehaviourFlags, &localParameters, &object->WineD3DDevice, (IUnknown *)object, D3D9CB_CreateRenderTarget);
 }
 
-IDirect3D9Vtbl Direct3D9_Vtbl =
+const IDirect3D9Vtbl Direct3D9_Vtbl =
 {
     IDirect3D9Impl_QueryInterface,
     IDirect3D9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/indexbuffer.c wine/dlls/d3d9/indexbuffer.c
--- cvs/hq/wine/dlls/d3d9/indexbuffer.c	2005-03-11 20:08:00.000000000 +0800
+++ wine/dlls/d3d9/indexbuffer.c	2005-05-27 16:28:47.000000000 +0900
@@ -131,7 +131,7 @@ HRESULT  WINAPI        IDirect3DIndexBuf
 }
 
 
-IDirect3DIndexBuffer9Vtbl Direct3DIndexBuffer9_Vtbl =
+const IDirect3DIndexBuffer9Vtbl Direct3DIndexBuffer9_Vtbl =
 {
     IDirect3DIndexBuffer9Impl_QueryInterface,
     IDirect3DIndexBuffer9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/pixelshader.c wine/dlls/d3d9/pixelshader.c
--- cvs/hq/wine/dlls/d3d9/pixelshader.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d9/pixelshader.c	2005-05-27 16:28:58.000000000 +0900
@@ -76,7 +76,7 @@ HRESULT WINAPI IDirect3DPixelShader9Impl
 }
 
 
-IDirect3DPixelShader9Vtbl Direct3DPixelShader9_Vtbl =
+const IDirect3DPixelShader9Vtbl Direct3DPixelShader9_Vtbl =
 {
     IDirect3DPixelShader9Impl_QueryInterface,
     IDirect3DPixelShader9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/query.c wine/dlls/d3d9/query.c
--- cvs/hq/wine/dlls/d3d9/query.c	2005-03-05 23:25:57.000000000 +0800
+++ wine/dlls/d3d9/query.c	2005-05-27 16:29:07.000000000 +0900
@@ -104,7 +104,7 @@ HRESULT WINAPI IDirect3DQuery9Impl_GetDa
 }
 
 
-IDirect3DQuery9Vtbl Direct3DQuery9_Vtbl =
+const IDirect3DQuery9Vtbl Direct3DQuery9_Vtbl =
 {
     IDirect3DQuery9Impl_QueryInterface,
     IDirect3DQuery9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/resource.c wine/dlls/d3d9/resource.c
--- cvs/hq/wine/dlls/d3d9/resource.c	2005-03-11 20:08:00.000000000 +0800
+++ wine/dlls/d3d9/resource.c	2005-05-27 16:29:18.000000000 +0900
@@ -118,7 +118,7 @@ D3DRESOURCETYPE WINAPI IDirect3DResource
 }
 
 
-IDirect3DResource9Vtbl Direct3DResource9_Vtbl =
+const IDirect3DResource9Vtbl Direct3DResource9_Vtbl =
 {
     IDirect3DResource9Impl_QueryInterface,
     IDirect3DResource9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/stateblock.c wine/dlls/d3d9/stateblock.c
--- cvs/hq/wine/dlls/d3d9/stateblock.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d9/stateblock.c	2005-05-27 16:29:23.000000000 +0900
@@ -82,7 +82,7 @@ HRESULT WINAPI IDirect3DStateBlock9Impl_
 }
 
 
-IDirect3DStateBlock9Vtbl Direct3DStateBlock9_Vtbl =
+const IDirect3DStateBlock9Vtbl Direct3DStateBlock9_Vtbl =
 {
     IDirect3DStateBlock9Impl_QueryInterface,
     IDirect3DStateBlock9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/surface.c wine/dlls/d3d9/surface.c
--- cvs/hq/wine/dlls/d3d9/surface.c	2005-03-27 14:36:38.000000000 +0900
+++ wine/dlls/d3d9/surface.c	2005-05-27 16:29:32.000000000 +0900
@@ -204,7 +204,7 @@ HRESULT WINAPI IDirect3DSurface9Impl_Rel
 }
 
 
-IDirect3DSurface9Vtbl Direct3DSurface9_Vtbl =
+const IDirect3DSurface9Vtbl Direct3DSurface9_Vtbl =
 {
     IDirect3DSurface9Impl_QueryInterface,
     IDirect3DSurface9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/swapchain.c wine/dlls/d3d9/swapchain.c
--- cvs/hq/wine/dlls/d3d9/swapchain.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d9/swapchain.c	2005-05-27 16:29:48.000000000 +0900
@@ -111,7 +111,7 @@ HRESULT WINAPI IDirect3DSwapChain9Impl_G
 }
 
 
-IDirect3DSwapChain9Vtbl Direct3DSwapChain9_Vtbl =
+const IDirect3DSwapChain9Vtbl Direct3DSwapChain9_Vtbl =
 {
     IDirect3DSwapChain9Impl_QueryInterface,
     IDirect3DSwapChain9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/texture.c wine/dlls/d3d9/texture.c
--- cvs/hq/wine/dlls/d3d9/texture.c	2005-04-01 20:23:55.000000000 +0900
+++ wine/dlls/d3d9/texture.c	2005-05-27 16:29:54.000000000 +0900
@@ -185,7 +185,7 @@ HRESULT WINAPI IDirect3DTexture9Impl_Add
     return IWineD3DTexture_AddDirtyRect(This->wineD3DTexture, pDirtyRect);
 }
 
-IDirect3DTexture9Vtbl Direct3DTexture9_Vtbl =
+const IDirect3DTexture9Vtbl Direct3DTexture9_Vtbl =
 {
     IDirect3DTexture9Impl_QueryInterface,
     IDirect3DTexture9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/vertexbuffer.c wine/dlls/d3d9/vertexbuffer.c
--- cvs/hq/wine/dlls/d3d9/vertexbuffer.c	2005-03-11 20:08:00.000000000 +0800
+++ wine/dlls/d3d9/vertexbuffer.c	2005-05-27 16:30:07.000000000 +0900
@@ -132,7 +132,7 @@ HRESULT WINAPI IDirect3DVertexBuffer9Imp
     return IWineD3DVertexBuffer_GetDesc(This->wineD3DVertexBuffer, pDesc);
 }
 
-IDirect3DVertexBuffer9Vtbl Direct3DVertexBuffer9_Vtbl =
+const IDirect3DVertexBuffer9Vtbl Direct3DVertexBuffer9_Vtbl =
 {
     IDirect3DVertexBuffer9Impl_QueryInterface,
     IDirect3DVertexBuffer9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/vertexdeclaration.c wine/dlls/d3d9/vertexdeclaration.c
--- cvs/hq/wine/dlls/d3d9/vertexdeclaration.c	2005-03-05 23:25:57.000000000 +0800
+++ wine/dlls/d3d9/vertexdeclaration.c	2005-05-27 16:30:20.000000000 +0900
@@ -77,7 +77,7 @@ HRESULT WINAPI IDirect3DVertexDeclaratio
 }
 
 
-IDirect3DVertexDeclaration9Vtbl Direct3DVertexDeclaration9_Vtbl =
+const IDirect3DVertexDeclaration9Vtbl Direct3DVertexDeclaration9_Vtbl =
 {
     IDirect3DVertexDeclaration9Impl_QueryInterface,
     IDirect3DVertexDeclaration9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/vertexshader.c wine/dlls/d3d9/vertexshader.c
--- cvs/hq/wine/dlls/d3d9/vertexshader.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3d9/vertexshader.c	2005-05-27 16:30:31.000000000 +0900
@@ -76,7 +76,7 @@ HRESULT WINAPI IDirect3DVertexShader9Imp
 }
 
 
-IDirect3DVertexShader9Vtbl Direct3DVertexShader9_Vtbl =
+const IDirect3DVertexShader9Vtbl Direct3DVertexShader9_Vtbl =
 {
     IDirect3DVertexShader9Impl_QueryInterface,
     IDirect3DVertexShader9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/volume.c wine/dlls/d3d9/volume.c
--- cvs/hq/wine/dlls/d3d9/volume.c	2005-04-01 20:23:55.000000000 +0900
+++ wine/dlls/d3d9/volume.c	2005-05-27 16:30:44.000000000 +0900
@@ -139,7 +139,7 @@ HRESULT WINAPI IDirect3DVolume9Impl_Unlo
     return IWineD3DVolume_UnlockBox(This->wineD3DVolume);
 }
 
-IDirect3DVolume9Vtbl Direct3DVolume9_Vtbl =
+const IDirect3DVolume9Vtbl Direct3DVolume9_Vtbl =
 {
     IDirect3DVolume9Impl_QueryInterface,
     IDirect3DVolume9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3d9/volumetexture.c wine/dlls/d3d9/volumetexture.c
--- cvs/hq/wine/dlls/d3d9/volumetexture.c	2005-04-01 20:23:55.000000000 +0900
+++ wine/dlls/d3d9/volumetexture.c	2005-05-27 16:30:52.000000000 +0900
@@ -204,7 +204,7 @@ HRESULT WINAPI IDirect3DVolumeTexture9Im
 }
 
 
-IDirect3DVolumeTexture9Vtbl Direct3DVolumeTexture9_Vtbl =
+const IDirect3DVolumeTexture9Vtbl Direct3DVolumeTexture9_Vtbl =
 {
     IDirect3DVolumeTexture9Impl_QueryInterface,
     IDirect3DVolumeTexture9Impl_AddRef,
diff -up cvs/hq/wine/dlls/d3dx8/d3dx8core_private.h wine/dlls/d3dx8/d3dx8core_private.h
--- cvs/hq/wine/dlls/d3dx8/d3dx8core_private.h	2004-08-15 17:11:05.000000000 +0900
+++ wine/dlls/d3dx8/d3dx8core_private.h	2005-05-27 16:33:13.000000000 +0900
@@ -38,7 +38,7 @@ typedef struct ID3DXFontImpl   ID3DXFont
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern ID3DXBufferVtbl D3DXBuffer_Vtbl;
+extern const ID3DXBufferVtbl D3DXBuffer_Vtbl;
 
 /*****************************************************************************
  * ID3DXBufferImpl implementation structure
@@ -46,7 +46,7 @@ extern ID3DXBufferVtbl D3DXBuffer_Vtbl;
 struct ID3DXBufferImpl
 {
   /* IUnknown fields */
-  ID3DXBufferVtbl *lpVtbl;
+  const ID3DXBufferVtbl *lpVtbl;
   DWORD          ref;
 
   /* ID3DXBuffer fields */
@@ -70,7 +70,7 @@ extern DWORD WINAPI  ID3DXBufferImpl_Get
 /*****************************************************************************
  * Predeclare the interface implementation structures
  */
-extern ID3DXFontVtbl D3DXFont_Vtbl;
+extern const ID3DXFontVtbl D3DXFont_Vtbl;
 
 /*****************************************************************************
  * ID3DXFontImpl implementation structure
@@ -78,7 +78,7 @@ extern ID3DXFontVtbl D3DXFont_Vtbl;
 struct ID3DXFontImpl
 {
   /* IUnknown fields */
-  ID3DXFontVtbl *lpVtbl;
+  const ID3DXFontVtbl *lpVtbl;
   DWORD          ref;
 
   /* ID3DXFont fields */
diff -up cvs/hq/wine/dlls/d3dx8/d3dxbuffer.c wine/dlls/d3dx8/d3dxbuffer.c
--- cvs/hq/wine/dlls/d3dx8/d3dxbuffer.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3dx8/d3dxbuffer.c	2005-05-27 16:33:30.000000000 +0900
@@ -82,7 +82,7 @@ DWORD WINAPI ID3DXBufferImpl_GetBufferSi
   return This->bufferSize;
 }
 
-ID3DXBufferVtbl D3DXBuffer_Vtbl =
+const ID3DXBufferVtbl D3DXBuffer_Vtbl =
 {
     ID3DXBufferImpl_QueryInterface,
     ID3DXBufferImpl_AddRef,
diff -up cvs/hq/wine/dlls/d3dxof/d3dxof.c wine/dlls/d3dxof/d3dxof.c
--- cvs/hq/wine/dlls/d3dxof/d3dxof.c	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3dxof/d3dxof.c	2005-05-27 18:05:44.000000000 +0900
@@ -34,13 +34,13 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(d3dxof);
 
-static struct IDirectXFileVtbl IDirectXFile_Vtbl;
-static struct IDirectXFileBinaryVtbl IDirectXFileBinary_Vtbl;
-static struct IDirectXFileDataVtbl IDirectXFileData_Vtbl;
-static struct IDirectXFileDataReferenceVtbl IDirectXFileDataReference_Vtbl;
-static struct IDirectXFileEnumObjectVtbl IDirectXFileEnumObject_Vtbl;
-static struct IDirectXFileObjectVtbl IDirectXFileObject_Vtbl;
-static struct IDirectXFileSaveObjectVtbl IDirectXFileSaveObject_Vtbl;
+static const struct IDirectXFileVtbl IDirectXFile_Vtbl;
+static const struct IDirectXFileBinaryVtbl IDirectXFileBinary_Vtbl;
+static const struct IDirectXFileDataVtbl IDirectXFileData_Vtbl;
+static const struct IDirectXFileDataReferenceVtbl IDirectXFileDataReference_Vtbl;
+static const struct IDirectXFileEnumObjectVtbl IDirectXFileEnumObject_Vtbl;
+static const struct IDirectXFileObjectVtbl IDirectXFileObject_Vtbl;
+static const struct IDirectXFileSaveObjectVtbl IDirectXFileSaveObject_Vtbl;
 
 HRESULT IDirectXFileImpl_Create(IUnknown* pUnkOuter, LPVOID* ppObj)
 {
@@ -142,7 +142,7 @@ static HRESULT WINAPI IDirectXFileImpl_R
   return S_FALSE;
 }
 
-static IDirectXFileVtbl IDirectXFile_Vtbl =
+static const IDirectXFileVtbl IDirectXFile_Vtbl =
 {
   IDirectXFileImpl_QueryInterface,
   IDirectXFileImpl_AddRef,
@@ -259,7 +259,7 @@ static HRESULT WINAPI IDirectXFileBinary
   return S_FALSE;
 }
 
-static IDirectXFileBinaryVtbl IDirectXFileBinary_Vtbl =
+static const IDirectXFileBinaryVtbl IDirectXFileBinary_Vtbl =
 {
     IDirectXFileBinaryImpl_QueryInterface,
     IDirectXFileBinaryImpl_AddRef,
@@ -405,7 +405,7 @@ static HRESULT WINAPI IDirectXFileDataIm
   return S_FALSE;
 }
 
-static IDirectXFileDataVtbl IDirectXFileData_Vtbl =
+static const IDirectXFileDataVtbl IDirectXFileData_Vtbl =
 {
     IDirectXFileDataImpl_QueryInterface,
     IDirectXFileDataImpl_AddRef,
@@ -508,7 +508,7 @@ static HRESULT WINAPI IDirectXFileDataRe
   return S_FALSE;
 }
 
-static IDirectXFileDataReferenceVtbl IDirectXFileDataReference_Vtbl =
+static const IDirectXFileDataReferenceVtbl IDirectXFileDataReference_Vtbl =
 {
     IDirectXFileDataReferenceImpl_QueryInterface,
     IDirectXFileDataReferenceImpl_AddRef,
@@ -612,7 +612,7 @@ static HRESULT WINAPI IDirectXFileEnumOb
   return S_FALSE;
 }
 
-static IDirectXFileEnumObjectVtbl IDirectXFileEnumObject_Vtbl =
+static const IDirectXFileEnumObjectVtbl IDirectXFileEnumObject_Vtbl =
 {
     IDirectXFileEnumObjectImpl_QueryInterface,
     IDirectXFileEnumObjectImpl_AddRef,
@@ -699,7 +699,7 @@ static HRESULT WINAPI IDirectXFileObject
   return S_FALSE;
 }
 
-static IDirectXFileObjectVtbl IDirectXFileObject_Vtbl =
+static const IDirectXFileObjectVtbl IDirectXFileObject_Vtbl =
 {
     IDirectXFileObjectImpl_QueryInterface,
     IDirectXFileObjectImpl_AddRef,
@@ -793,7 +793,7 @@ static HRESULT WINAPI IDirectXFileSaveOb
   return S_FALSE;
 }
 
-static IDirectXFileSaveObjectVtbl IDirectXFileSaveObject_Vtbl =
+static const IDirectXFileSaveObjectVtbl IDirectXFileSaveObject_Vtbl =
 {
     IDirectXFileSaveObjectImpl_QueryInterface,
     IDirectXFileSaveObjectImpl_AddRef,
diff -up cvs/hq/wine/dlls/d3dxof/d3dxof_private.h wine/dlls/d3dxof/d3dxof_private.h
--- cvs/hq/wine/dlls/d3dxof/d3dxof_private.h	2005-01-26 17:55:35.000000000 +0800
+++ wine/dlls/d3dxof/d3dxof_private.h	2005-05-27 18:04:49.000000000 +0900
@@ -24,6 +24,8 @@
 #ifndef __D3DXOF_PRIVATE_INCLUDED__
 #define __D3DXOF_PRIVATE_INCLUDED__
 
+#define CONST_VTABLE
+
 #include <stdarg.h>
 
 #include "windef.h"
diff -up cvs/hq/wine/dlls/d3dxof/main.c wine/dlls/d3dxof/main.c
--- cvs/hq/wine/dlls/d3dxof/main.c	2004-12-02 14:04:31.000000000 +0800
+++ wine/dlls/d3dxof/main.c	2005-05-27 16:37:22.000000000 +0900
@@ -137,7 +137,7 @@ static HRESULT WINAPI XFCF_LockServer(LP
     return S_OK;
 }
 
-static IClassFactoryVtbl XFCF_Vtbl =
+static const IClassFactoryVtbl XFCF_Vtbl =
 {
     XFCF_QueryInterface,
     XFCF_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/d3ddevice/mesa.c wine/dlls/ddraw/d3ddevice/mesa.c
--- cvs/hq/wine/dlls/ddraw/d3ddevice/mesa.c	2005-04-15 20:45:00.000000000 +0900
+++ wine/dlls/ddraw/d3ddevice/mesa.c	2005-05-27 17:08:12.000000000 +0900
@@ -29,6 +29,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
@@ -2573,7 +2576,7 @@ GL_IDirect3DDeviceImpl_7_SetViewport(LPD
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DDevice7Vtbl VTABLE_IDirect3DDevice7 =
+static const IDirect3DDevice7Vtbl VTABLE_IDirect3DDevice7 =
 {
     XCAST(QueryInterface) Main_IDirect3DDeviceImpl_7_3T_2T_1T_QueryInterface,
     XCAST(AddRef) Main_IDirect3DDeviceImpl_7_3T_2T_1T_AddRef,
@@ -2637,7 +2640,7 @@ IDirect3DDevice7Vtbl VTABLE_IDirect3DDev
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DDevice3Vtbl VTABLE_IDirect3DDevice3 =
+static const IDirect3DDevice3Vtbl VTABLE_IDirect3DDevice3 =
 {
     XCAST(QueryInterface) Thunk_IDirect3DDeviceImpl_3_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DDeviceImpl_3_AddRef,
@@ -2694,7 +2697,7 @@ IDirect3DDevice3Vtbl VTABLE_IDirect3DDev
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DDevice2Vtbl VTABLE_IDirect3DDevice2 =
+static const IDirect3DDevice2Vtbl VTABLE_IDirect3DDevice2 =
 {
     XCAST(QueryInterface) Thunk_IDirect3DDeviceImpl_2_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DDeviceImpl_2_AddRef,
@@ -2742,7 +2745,7 @@ IDirect3DDevice2Vtbl VTABLE_IDirect3DDev
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DDeviceVtbl VTABLE_IDirect3DDevice =
+static const IDirect3DDeviceVtbl VTABLE_IDirect3DDevice =
 {
     XCAST(QueryInterface) Thunk_IDirect3DDeviceImpl_1_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DDeviceImpl_1_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/d3dexecutebuffer.c wine/dlls/ddraw/d3dexecutebuffer.c
--- cvs/hq/wine/dlls/ddraw/d3dexecutebuffer.c	2005-01-10 13:55:49.000000000 +0800
+++ wine/dlls/ddraw/d3dexecutebuffer.c	2005-05-27 17:10:11.000000000 +0900
@@ -26,6 +26,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
@@ -654,7 +657,7 @@ Main_IDirect3DExecuteBufferImpl_1_Optimi
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DExecuteBufferVtbl VTABLE_IDirect3DExecuteBuffer =
+static const IDirect3DExecuteBufferVtbl VTABLE_IDirect3DExecuteBuffer =
 {
     XCAST(QueryInterface) Main_IDirect3DExecuteBufferImpl_1_QueryInterface,
     XCAST(AddRef) Main_IDirect3DExecuteBufferImpl_1_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/d3dlight.c wine/dlls/ddraw/d3dlight.c
--- cvs/hq/wine/dlls/ddraw/d3dlight.c	2005-01-10 13:55:49.000000000 +0800
+++ wine/dlls/ddraw/d3dlight.c	2005-05-27 17:10:38.000000000 +0900
@@ -24,6 +24,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
@@ -215,7 +218,7 @@ GL_IDirect3DLightImpl_1_Release(LPDIRECT
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DLightVtbl VTABLE_IDirect3DLight =
+static const IDirect3DLightVtbl VTABLE_IDirect3DLight =
 {
     XCAST(QueryInterface) Main_IDirect3DLightImpl_1_QueryInterface,
     XCAST(AddRef) Main_IDirect3DLightImpl_1_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/d3dmaterial.c wine/dlls/ddraw/d3dmaterial.c
--- cvs/hq/wine/dlls/ddraw/d3dmaterial.c	2005-01-10 13:55:49.000000000 +0800
+++ wine/dlls/ddraw/d3dmaterial.c	2005-05-27 17:11:00.000000000 +0900
@@ -24,6 +24,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
@@ -332,7 +335,7 @@ static void activate(IDirect3DMaterialIm
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DMaterial3Vtbl VTABLE_IDirect3DMaterial3 =
+static const IDirect3DMaterial3Vtbl VTABLE_IDirect3DMaterial3 =
 {
     XCAST(QueryInterface) Main_IDirect3DMaterialImpl_3_2T_1T_QueryInterface,
     XCAST(AddRef) Main_IDirect3DMaterialImpl_3_2T_1T_AddRef,
@@ -353,7 +356,7 @@ IDirect3DMaterial3Vtbl VTABLE_IDirect3DM
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DMaterial2Vtbl VTABLE_IDirect3DMaterial2 =
+static const IDirect3DMaterial2Vtbl VTABLE_IDirect3DMaterial2 =
 {
     XCAST(QueryInterface) Thunk_IDirect3DMaterialImpl_2_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DMaterialImpl_2_AddRef,
@@ -374,7 +377,7 @@ IDirect3DMaterial2Vtbl VTABLE_IDirect3DM
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DMaterialVtbl VTABLE_IDirect3DMaterial =
+static const IDirect3DMaterialVtbl VTABLE_IDirect3DMaterial =
 {
     XCAST(QueryInterface) Thunk_IDirect3DMaterialImpl_1_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DMaterialImpl_1_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/d3dtexture.c wine/dlls/ddraw/d3dtexture.c
--- cvs/hq/wine/dlls/ddraw/d3dtexture.c	2005-04-15 20:45:00.000000000 +0900
+++ wine/dlls/ddraw/d3dtexture.c	2005-05-27 17:11:17.000000000 +0900
@@ -25,6 +25,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
@@ -823,7 +826,7 @@ Thunk_IDirect3DTextureImpl_1_Load(LPDIRE
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DTexture2Vtbl VTABLE_IDirect3DTexture2 =
+static const IDirect3DTexture2Vtbl VTABLE_IDirect3DTexture2 =
 {
     XCAST(QueryInterface) Thunk_IDirect3DTextureImpl_2_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DTextureImpl_2_AddRef,
@@ -844,7 +847,7 @@ IDirect3DTexture2Vtbl VTABLE_IDirect3DTe
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DTextureVtbl VTABLE_IDirect3DTexture =
+static const IDirect3DTextureVtbl VTABLE_IDirect3DTexture =
 {
     XCAST(QueryInterface) Thunk_IDirect3DTextureImpl_1_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DTextureImpl_1_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/d3dvertexbuffer.c wine/dlls/ddraw/d3dvertexbuffer.c
--- cvs/hq/wine/dlls/ddraw/d3dvertexbuffer.c	2005-01-10 13:55:49.000000000 +0800
+++ wine/dlls/ddraw/d3dvertexbuffer.c	2005-05-27 17:12:29.000000000 +0900
@@ -21,6 +21,8 @@
 #include "config.h"
 #include <stdarg.h>
 
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
@@ -475,7 +477,7 @@ GL_IDirect3DVertexBufferImpl_7_ProcessVe
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DVertexBuffer7Vtbl VTABLE_IDirect3DVertexBuffer7 =
+static const IDirect3DVertexBuffer7Vtbl VTABLE_IDirect3DVertexBuffer7 =
 {
     XCAST(QueryInterface) Main_IDirect3DVertexBufferImpl_7_1T_QueryInterface,
     XCAST(AddRef) Main_IDirect3DVertexBufferImpl_7_1T_AddRef,
@@ -499,7 +501,7 @@ IDirect3DVertexBuffer7Vtbl VTABLE_IDirec
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DVertexBufferVtbl VTABLE_IDirect3DVertexBuffer =
+static const IDirect3DVertexBufferVtbl VTABLE_IDirect3DVertexBuffer =
 {
     XCAST(QueryInterface) Thunk_IDirect3DVertexBufferImpl_1_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DVertexBufferImpl_1_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/d3dviewport.c wine/dlls/ddraw/d3dviewport.c
--- cvs/hq/wine/dlls/ddraw/d3dviewport.c	2005-01-11 21:24:54.000000000 +0800
+++ wine/dlls/ddraw/d3dviewport.c	2005-05-27 17:13:05.000000000 +0900
@@ -24,6 +24,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
@@ -483,7 +486,7 @@ Main_IDirect3DViewportImpl_3_Clear2(LPDI
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DViewport3Vtbl VTABLE_IDirect3DViewport3 =
+static const IDirect3DViewport3Vtbl VTABLE_IDirect3DViewport3 =
 {
     XCAST(QueryInterface) Main_IDirect3DViewportImpl_3_2_1_QueryInterface,
     XCAST(AddRef) Main_IDirect3DViewportImpl_3_2_1_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/dclipper/main.c wine/dlls/ddraw/dclipper/main.c
--- cvs/hq/wine/dlls/ddraw/dclipper/main.c	2005-03-23 09:27:39.000000000 +0800
+++ wine/dlls/ddraw/dclipper/main.c	2005-05-27 17:14:18.000000000 +0900
@@ -24,6 +24,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "wingdi.h"
@@ -42,7 +44,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
  *			DirectDrawCreateClipper (DDRAW.@)
  */
 
-static IDirectDrawClipperVtbl DDRAW_Clipper_VTable;
+static const IDirectDrawClipperVtbl DDRAW_Clipper_VTable;
 
 HRESULT WINAPI DirectDrawCreateClipper(
     DWORD dwFlags, LPDIRECTDRAWCLIPPER *lplpDDClipper, LPUNKNOWN pUnkOuter
@@ -271,7 +273,7 @@ HRESULT WINAPI Main_DirectDrawClipper_Is
     return DD_OK;
 }
 
-static IDirectDrawClipperVtbl DDRAW_Clipper_VTable =
+static const IDirectDrawClipperVtbl DDRAW_Clipper_VTable =
 {
     Main_DirectDrawClipper_QueryInterface,
     Main_DirectDrawClipper_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/ddraw/hal.c wine/dlls/ddraw/ddraw/hal.c
--- cvs/hq/wine/dlls/ddraw/ddraw/hal.c	2005-05-08 14:59:14.000000000 +0900
+++ wine/dlls/ddraw/ddraw/hal.c	2005-05-27 17:17:09.000000000 +0900
@@ -23,6 +23,8 @@
 #include <stdarg.h>
 #include <stdlib.h>
 
+#define CONST_VTABLE
+
 #include "wine/debug.h"
 #include "windef.h"
 #include "winbase.h"
@@ -45,7 +47,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 
-static IDirectDraw7Vtbl HAL_DirectDraw_VTable;
+static const IDirectDraw7Vtbl HAL_DirectDraw_VTable;
 
 static DDVERSIONDATA hal_version;
 static DD32BITDRIVERDATA hal_driverdata;
@@ -553,7 +555,7 @@ HAL_DirectDraw_GetFourCCCodes(LPDIRECTDR
 }
 
 
-static IDirectDraw7Vtbl HAL_DirectDraw_VTable =
+static const IDirectDraw7Vtbl HAL_DirectDraw_VTable =
 {
     Main_DirectDraw_QueryInterface,
     Main_DirectDraw_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/ddraw/main.c wine/dlls/ddraw/ddraw/main.c
--- cvs/hq/wine/dlls/ddraw/ddraw/main.c	2005-01-31 08:53:56.000000000 +0800
+++ wine/dlls/ddraw/ddraw/main.c	2005-05-27 17:17:42.000000000 +0900
@@ -55,6 +55,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "winerror.h"
 #include "windef.h"
 #include "winbase.h"
@@ -74,9 +77,9 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 
-extern IDirectDrawVtbl DDRAW_IDirectDraw_VTable;
-extern IDirectDraw2Vtbl DDRAW_IDirectDraw2_VTable;
-extern IDirectDraw4Vtbl DDRAW_IDirectDraw4_VTable;
+extern const IDirectDrawVtbl DDRAW_IDirectDraw_VTable;
+extern const IDirectDraw2Vtbl DDRAW_IDirectDraw2_VTable;
+extern const IDirectDraw4Vtbl DDRAW_IDirectDraw4_VTable;
 
 static void DDRAW_UnsubclassWindow(IDirectDrawImpl* This);
 
@@ -1437,7 +1440,7 @@ void Uninit_DirectDraw_final_release(IDi
     Main_DirectDraw_final_release(This);
 }
 
-static IDirectDraw7Vtbl Uninit_DirectDraw_VTable;
+static const IDirectDraw7Vtbl Uninit_DirectDraw_VTable;
 
 /* Not called from the vtable. */
 HRESULT Uninit_DirectDraw_Construct(IDirectDrawImpl *This, BOOL ex)
@@ -1677,7 +1680,7 @@ Uninit_DirectDraw_EvaluateMode(LPDIRECTD
     return DDERR_NOTINITIALIZED;
 }
 
-static IDirectDraw7Vtbl Uninit_DirectDraw_VTable =
+static const IDirectDraw7Vtbl Uninit_DirectDraw_VTable =
 {
     Main_DirectDraw_QueryInterface,
     Main_DirectDraw_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/ddraw/thunks.c wine/dlls/ddraw/ddraw/thunks.c
--- cvs/hq/wine/dlls/ddraw/ddraw/thunks.c	2004-08-24 17:55:42.000000000 +0900
+++ wine/dlls/ddraw/ddraw/thunks.c	2005-05-27 17:16:01.000000000 +0900
@@ -17,6 +17,8 @@
  */
 #include <stdarg.h>
 
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "wingdi.h"
@@ -942,7 +944,7 @@ IDirectDraw4Impl_GetDeviceIdentifier(LPD
     return hr;
 }
 
-IDirectDrawVtbl DDRAW_IDirectDraw_VTable =
+const IDirectDrawVtbl DDRAW_IDirectDraw_VTable =
 {
     IDirectDrawImpl_QueryInterface,
     IDirectDrawImpl_AddRef,
@@ -969,7 +971,7 @@ IDirectDrawVtbl DDRAW_IDirectDraw_VTable
     IDirectDrawImpl_WaitForVerticalBlank,
 };
 
-IDirectDraw2Vtbl DDRAW_IDirectDraw2_VTable =
+const IDirectDraw2Vtbl DDRAW_IDirectDraw2_VTable =
 {
     IDirectDraw2Impl_QueryInterface,
     IDirectDraw2Impl_AddRef,
@@ -997,7 +999,7 @@ IDirectDraw2Vtbl DDRAW_IDirectDraw2_VTab
     IDirectDraw2Impl_GetAvailableVidMem
 };
 
-IDirectDraw4Vtbl DDRAW_IDirectDraw4_VTable =
+const IDirectDraw4Vtbl DDRAW_IDirectDraw4_VTable =
 {
     IDirectDraw4Impl_QueryInterface,
     IDirectDraw4Impl_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/ddraw/user.c wine/dlls/ddraw/ddraw/user.c
--- cvs/hq/wine/dlls/ddraw/ddraw/user.c	2005-05-08 14:59:14.000000000 +0900
+++ wine/dlls/ddraw/ddraw/user.c	2005-05-27 17:18:20.000000000 +0900
@@ -25,6 +25,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "wingdi.h"
@@ -42,7 +45,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 
-static IDirectDraw7Vtbl User_DirectDraw_VTable;
+static const IDirectDraw7Vtbl User_DirectDraw_VTable;
 
 static const DDDEVICEIDENTIFIER2 user_device =
 {
@@ -531,7 +534,7 @@ User_DirectDraw_SetDisplayMode(LPDIRECTD
 /* TestCooperativeLevel: generic? */
 /* WaitForVerticalBlank: ??? */
 
-static IDirectDraw7Vtbl User_DirectDraw_VTable =
+static const IDirectDraw7Vtbl User_DirectDraw_VTable =
 {
     Main_DirectDraw_QueryInterface,
     Main_DirectDraw_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/direct3d/mesa.c wine/dlls/ddraw/direct3d/mesa.c
--- cvs/hq/wine/dlls/ddraw/direct3d/mesa.c	2005-02-15 19:10:19.000000000 +0800
+++ wine/dlls/ddraw/direct3d/mesa.c	2005-05-27 17:19:10.000000000 +0900
@@ -30,6 +30,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "wingdi.h"
@@ -318,7 +321,7 @@ static void light_released(IDirectDrawIm
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3D7Vtbl VTABLE_IDirect3D7 =
+static const IDirect3D7Vtbl VTABLE_IDirect3D7 =
 {
     XCAST(QueryInterface) Thunk_IDirect3DImpl_7_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DImpl_7_AddRef,
@@ -341,7 +344,7 @@ IDirect3D7Vtbl VTABLE_IDirect3D7 =
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3D3Vtbl VTABLE_IDirect3D3 =
+static const IDirect3D3Vtbl VTABLE_IDirect3D3 =
 {
     XCAST(QueryInterface) Thunk_IDirect3DImpl_3_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DImpl_3_AddRef,
@@ -368,7 +371,7 @@ IDirect3D3Vtbl VTABLE_IDirect3D3 =
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3D2Vtbl VTABLE_IDirect3D2 =
+static const IDirect3D2Vtbl VTABLE_IDirect3D2 =
 {
     XCAST(QueryInterface) Thunk_IDirect3DImpl_2_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DImpl_2_AddRef,
@@ -392,7 +395,7 @@ IDirect3D2Vtbl VTABLE_IDirect3D2 =
 # define XCAST(fun)     (void*)
 #endif
 
-IDirect3DVtbl VTABLE_IDirect3D =
+static const IDirect3DVtbl VTABLE_IDirect3D =
 {
     XCAST(QueryInterface) Thunk_IDirect3DImpl_1_QueryInterface,
     XCAST(AddRef) Thunk_IDirect3DImpl_1_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/dpalette/hal.c wine/dlls/ddraw/dpalette/hal.c
--- cvs/hq/wine/dlls/ddraw/dpalette/hal.c	2004-09-08 17:35:52.000000000 +0900
+++ wine/dlls/ddraw/dpalette/hal.c	2005-05-27 17:20:31.000000000 +0900
@@ -24,6 +24,8 @@
 #include <assert.h>
 #include <string.h>
 
+#define CONST_VTABLE
+
 #include "ddraw_private.h"
 #include "dpalette/main.h"
 #include "dpalette/hal.h"
@@ -31,7 +33,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 
-static IDirectDrawPaletteVtbl DDRAW_HAL_Palette_VTable;
+static const IDirectDrawPaletteVtbl DDRAW_HAL_Palette_VTable;
 
 /******************************************************************************
  *			IDirectDrawPalette
@@ -125,7 +127,7 @@ void HAL_DirectDrawPalette_final_release
     Main_DirectDrawPalette_final_release(This);
 }
 
-static IDirectDrawPaletteVtbl DDRAW_HAL_Palette_VTable =
+static const IDirectDrawPaletteVtbl DDRAW_HAL_Palette_VTable =
 {
     Main_DirectDrawPalette_QueryInterface,
     Main_DirectDrawPalette_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/dpalette/main.c wine/dlls/ddraw/dpalette/main.c
--- cvs/hq/wine/dlls/ddraw/dpalette/main.c	2005-01-10 13:55:49.000000000 +0800
+++ wine/dlls/ddraw/dpalette/main.c	2005-05-27 17:20:01.000000000 +0900
@@ -25,6 +25,8 @@
 #include <assert.h>
 #include <string.h>
 
+#define CONST_VTABLE
+
 #include "ddraw_private.h"
 #include "dpalette/main.h"
 #include "ddraw/main.h"
@@ -36,7 +38,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 /* For unsigned x. 0 is not a power of 2. */
 #define IS_POW_2(x) (((x) & ((x) - 1)) == 0)
 
-static IDirectDrawPaletteVtbl DDRAW_Main_Palette_VTable;
+static const IDirectDrawPaletteVtbl DDRAW_Main_Palette_VTable;
 
 /******************************************************************************
  *			IDirectDrawPalette
@@ -271,7 +273,7 @@ Main_DirectDrawPalette_QueryInterface(LP
     }
 }
 
-static IDirectDrawPaletteVtbl DDRAW_Main_Palette_VTable =
+static const IDirectDrawPaletteVtbl DDRAW_Main_Palette_VTable =
 {
     Main_DirectDrawPalette_QueryInterface,
     Main_DirectDrawPalette_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/dsurface/dib.c wine/dlls/ddraw/dsurface/dib.c
--- cvs/hq/wine/dlls/ddraw/dsurface/dib.c	2005-04-15 20:45:00.000000000 +0900
+++ wine/dlls/ddraw/dsurface/dib.c	2005-05-27 17:21:03.000000000 +0900
@@ -27,6 +27,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "winerror.h"
 #include "wine/debug.h"
 #include "ddraw_private.h"
@@ -40,7 +43,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 extern HBITMAP DIB_CreateDIBSection( HDC hdc, const BITMAPINFO *bmi, UINT usage, VOID **bits,
                                      HANDLE section, DWORD offset, DWORD ovr_pitch );
 
-static IDirectDrawSurface7Vtbl DIB_IDirectDrawSurface7_VTable;
+static const IDirectDrawSurface7Vtbl DIB_IDirectDrawSurface7_VTable;
 
 /* Return the width of a DIB bitmap in bytes. DIB bitmap data is 32-bit aligned. */
 inline static int get_dib_width_bytes( int width, int depth )
@@ -1408,7 +1411,7 @@ DIB_DirectDrawSurface_SetSurfaceDesc(LPD
 /* UpdateOverlayDisplay: generic */
 /* UpdateOverlayZOrder: generic */
 
-static IDirectDrawSurface7Vtbl DIB_IDirectDrawSurface7_VTable =
+static const IDirectDrawSurface7Vtbl DIB_IDirectDrawSurface7_VTable =
 {
     Main_DirectDrawSurface_QueryInterface,
     Main_DirectDrawSurface_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/dsurface/fakezbuffer.c wine/dlls/ddraw/dsurface/fakezbuffer.c
--- cvs/hq/wine/dlls/ddraw/dsurface/fakezbuffer.c	2004-12-15 20:43:23.000000000 +0800
+++ wine/dlls/ddraw/dsurface/fakezbuffer.c	2005-05-27 17:21:58.000000000 +0900
@@ -30,6 +30,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "wingdi.h"
@@ -46,7 +49,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 
-static IDirectDrawSurface7Vtbl FakeZBuffer_IDirectDrawSurface7_VTable;
+static const IDirectDrawSurface7Vtbl FakeZBuffer_IDirectDrawSurface7_VTable;
 
 #ifdef HAVE_OPENGL
 static void zbuffer_lock_update(IDirectDrawSurfaceImpl* This, LPCRECT pRect, DWORD dwFlags)
@@ -259,7 +262,7 @@ FakeZBuffer_DirectDrawSurface_SetSurface
 }
 
 
-static IDirectDrawSurface7Vtbl FakeZBuffer_IDirectDrawSurface7_VTable=
+static const IDirectDrawSurface7Vtbl FakeZBuffer_IDirectDrawSurface7_VTable=
 {
     Main_DirectDrawSurface_QueryInterface,
     Main_DirectDrawSurface_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/dsurface/gamma.c wine/dlls/ddraw/dsurface/gamma.c
--- cvs/hq/wine/dlls/ddraw/dsurface/gamma.c	2004-08-24 17:55:42.000000000 +0900
+++ wine/dlls/ddraw/dsurface/gamma.c	2005-05-27 17:24:21.000000000 +0900
@@ -23,6 +23,8 @@
 #include <assert.h>
 #include <stdlib.h>
 
+#define CONST_VTABLE
+
 #include "wine/debug.h"
 #include "ddraw_private.h"
 #include "dsurface/main.h"
@@ -70,7 +72,7 @@ DirectDrawGammaControl_SetGammaRamp(LPDI
     return This->set_gamma_ramp(This, dwFlags, lpGammaRamp);
 }
 
-IDirectDrawGammaControlVtbl DDRAW_IDDGC_VTable =
+const IDirectDrawGammaControlVtbl DDRAW_IDDGC_VTable =
 {
     DirectDrawGammaControl_QueryInterface,
     DirectDrawGammaControl_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/dsurface/hal.c wine/dlls/ddraw/dsurface/hal.c
--- cvs/hq/wine/dlls/ddraw/dsurface/hal.c	2004-08-24 17:55:42.000000000 +0900
+++ wine/dlls/ddraw/dsurface/hal.c	2005-05-27 17:21:24.000000000 +0900
@@ -24,6 +24,9 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
+#define CONST_VTABLE
+
 #include "wine/debug.h"
 #include "ddraw_private.h"
 #include "ddraw/user.h"
@@ -35,7 +38,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 
-static IDirectDrawSurface7Vtbl HAL_IDirectDrawSurface7_VTable;
+static const IDirectDrawSurface7Vtbl HAL_IDirectDrawSurface7_VTable;
 
 static HRESULT HAL_DirectDrawSurface_create_surface(IDirectDrawSurfaceImpl* This,
 						    IDirectDrawImpl* pDD)
@@ -362,7 +365,7 @@ HWND HAL_DirectDrawSurface_get_display_w
     return 0;
 }
 
-static IDirectDrawSurface7Vtbl HAL_IDirectDrawSurface7_VTable =
+static const IDirectDrawSurface7Vtbl HAL_IDirectDrawSurface7_VTable =
 {
     Main_DirectDrawSurface_QueryInterface,
     Main_DirectDrawSurface_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/dsurface/main.c wine/dlls/ddraw/dsurface/main.c
--- cvs/hq/wine/dlls/ddraw/dsurface/main.c	2005-05-24 19:08:13.000000000 +0900
+++ wine/dlls/ddraw/dsurface/main.c	2005-05-27 17:24:56.000000000 +0900
@@ -24,6 +24,8 @@
 #include <string.h>
 
 #define COBJMACROS
+#define CONST_VTABLE
+
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
 
diff -up cvs/hq/wine/dlls/ddraw/dsurface/main.h wine/dlls/ddraw/dsurface/main.h
--- cvs/hq/wine/dlls/ddraw/dsurface/main.h	2004-08-15 17:11:05.000000000 +0900
+++ wine/dlls/ddraw/dsurface/main.h	2005-05-27 17:22:16.000000000 +0900
@@ -45,7 +45,7 @@ typedef struct PrivateData
     DWORD size;
 } PrivateData;
 
-extern IDirectDrawGammaControlVtbl DDRAW_IDDGC_VTable;
+extern const IDirectDrawGammaControlVtbl DDRAW_IDDGC_VTable;
 
 /* Non-interface functions */
 HRESULT
diff -up cvs/hq/wine/dlls/ddraw/dsurface/thunks.c wine/dlls/ddraw/dsurface/thunks.c
--- cvs/hq/wine/dlls/ddraw/dsurface/thunks.c	2004-08-24 17:55:42.000000000 +0900
+++ wine/dlls/ddraw/dsurface/thunks.c	2005-05-27 17:23:15.000000000 +0900
@@ -19,6 +19,8 @@
 #include "config.h"
 #include <stdarg.h>
 
+#define CONST_VTABLE
+
 #include "windef.h"
 #include "winbase.h"
 #include "wingdi.h"
@@ -390,7 +392,7 @@ IDirectDrawSurface3Impl_SetSurfaceDesc(L
 					      dwFlags);
 }
 
-IDirectDrawSurface3Vtbl DDRAW_IDDS3_Thunk_VTable =
+const IDirectDrawSurface3Vtbl DDRAW_IDDS3_Thunk_VTable =
 {
     IDirectDrawSurface3Impl_QueryInterface,
     IDirectDrawSurface3Impl_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/dsurface/thunks.h wine/dlls/ddraw/dsurface/thunks.h
--- cvs/hq/wine/dlls/ddraw/dsurface/thunks.h	2004-08-15 17:11:05.000000000 +0900
+++ wine/dlls/ddraw/dsurface/thunks.h	2005-05-27 17:23:35.000000000 +0900
@@ -19,6 +19,6 @@
 #ifndef DDRAW_DSURFACE_THUNKS_H_INCLUDED
 #define DDRAW_DSURFACE_THUNKS_H_INCLUDED
 
-extern IDirectDrawSurface3Vtbl DDRAW_IDDS3_Thunk_VTable;
+extern const IDirectDrawSurface3Vtbl DDRAW_IDDS3_Thunk_VTable;
 
 #endif
diff -up cvs/hq/wine/dlls/ddraw/dsurface/user.c wine/dlls/ddraw/dsurface/user.c
--- cvs/hq/wine/dlls/ddraw/dsurface/user.c	2005-01-10 13:55:49.000000000 +0800
+++ wine/dlls/ddraw/dsurface/user.c	2005-05-27 17:23:59.000000000 +0900
@@ -23,6 +23,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+#define CONST_VTABLE
+
 #include "winerror.h"
 #include "wine/debug.h"
 #include "ddraw_private.h"
@@ -52,7 +54,7 @@ static void User_copy_to_screen(IDirectD
 
 static HWND get_display_window(IDirectDrawSurfaceImpl* This, LPPOINT pt);
 
-static IDirectDrawSurface7Vtbl User_IDirectDrawSurface7_VTable;
+static const IDirectDrawSurface7Vtbl User_IDirectDrawSurface7_VTable;
 
 HRESULT
 User_DirectDrawSurface_Construct(IDirectDrawSurfaceImpl* This,
@@ -625,7 +627,7 @@ static void User_copy_from_screen(IDirec
 }
 #endif
 
-static IDirectDrawSurface7Vtbl User_IDirectDrawSurface7_VTable =
+static const IDirectDrawSurface7Vtbl User_IDirectDrawSurface7_VTable =
 {
     Main_DirectDrawSurface_QueryInterface,
     Main_DirectDrawSurface_AddRef,
diff -up cvs/hq/wine/dlls/ddraw/main.c wine/dlls/ddraw/main.c
--- cvs/hq/wine/dlls/ddraw/main.c	2005-05-08 14:59:14.000000000 +0900
+++ wine/dlls/ddraw/main.c	2005-05-27 17:25:23.000000000 +0900
@@ -534,7 +534,7 @@ static HRESULT WINAPI DDCF_LockServer(LP
     return S_OK;
 }
 
-static IClassFactoryVtbl DDCF_Vtbl =
+static const IClassFactoryVtbl DDCF_Vtbl =
 {
     DDCF_QueryInterface,
     DDCF_AddRef,
diff -up cvs/hq/wine/include/objbase.h wine/include/objbase.h
--- cvs/hq/wine/include/objbase.h	2005-05-19 15:23:14.000000000 +0900
+++ wine/include/objbase.h	2005-05-27 16:54:02.000000000 +0900
@@ -251,8 +251,8 @@
 #define CONST_VTBL const
 #define DECLARE_INTERFACE(iface) \
          /*typedef*/ interface iface { const struct iface##Vtbl *lpVtbl; } /*iface*/; \
-         typedef const struct iface##Vtbl iface##Vtbl; \
-         const struct iface##Vtbl
+         typedef struct iface##Vtbl iface##Vtbl; \
+         struct iface##Vtbl
 #else
 #undef CONST_VTBL
 #define CONST_VTBL






More information about the wine-patches mailing list