|
From: <ha...@us...> - 2002-09-24 20:47:43
|
Update of /cvsroot/decaldev/source/Decal
In directory usw-pr-cvs1:/tmp/cvs-serv14077
Modified Files:
Decal.dsp ACHooks.h ACHooks.cpp
Log Message:
ACHooks returns NULL on client/version mismatch (also S_FALSE)
Index: Decal.dsp
===================================================================
RCS file: /cvsroot/decaldev/source/Decal/Decal.dsp,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** Decal.dsp 13 Jul 2002 17:01:42 -0000 1.7
--- Decal.dsp 24 Sep 2002 20:47:38 -0000 1.8
***************
*** 55,59 ****
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
# Begin Custom Build - Performing registration
OutDir=.\..\Debug
--- 55,59 ----
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib version.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
# Begin Custom Build - Performing registration
OutDir=.\..\Debug
***************
*** 90,94 ****
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
# Begin Custom Build - Performing registration
OutDir=.\DebugU
--- 90,94 ----
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib version.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
# Begin Custom Build - Performing registration
OutDir=.\DebugU
***************
*** 132,136 ****
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libcmt.lib" /pdbtype:sept /libpath:"..\Release"
# Begin Custom Build - Performing registration
OutDir=.\..\Release
--- 132,136 ----
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib version.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libcmt.lib" /pdbtype:sept /libpath:"..\Release"
# Begin Custom Build - Performing registration
OutDir=.\..\Release
***************
*** 168,172 ****
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libctiny.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\Release"
# Begin Custom Build - Performing registration
OutDir=.\ReleaseUMinSize
--- 168,172 ----
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib version.lib uuid.lib odbc32.lib odbccp32.lib libctiny.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\Release"
# Begin Custom Build - Performing registration
OutDir=.\ReleaseUMinSize
Index: ACHooks.h
===================================================================
RCS file: /cvsroot/decaldev/source/Decal/ACHooks.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** ACHooks.h 21 Sep 2002 05:49:54 -0000 1.20
--- ACHooks.h 24 Sep 2002 20:47:39 -0000 1.21
***************
*** 56,59 ****
--- 56,61 ----
LocMap m_mLocationList;
+ bool m_bMismatch;
+
bool m_bPrevSelect;
long m_lPrevSelect[2];
Index: ACHooks.cpp
===================================================================
RCS file: /cvsroot/decaldev/source/Decal/ACHooks.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -d -r1.21 -r1.22
*** ACHooks.cpp 21 Sep 2002 05:49:54 -0000 1.21
--- ACHooks.cpp 24 Sep 2002 20:47:39 -0000 1.22
***************
*** 26,29 ****
--- 26,30 ----
USES_CONVERSION;
+ m_bMismatch = true;
m_bPrevSelect = false;
m_bCurrentSelect = false;
***************
*** 66,69 ****
--- 67,115 ----
{
MSXML::IXMLDOMElementPtr pNode = pMemLocDoc->selectSingleNode( _bstr_t( "locations" ) );
+
+ long lVerMajor = 0, lVerMinor = 0, lVerRelease = 0;
+ _variant_t vVersion = pNode->getAttribute( _bstr_t( "version" ) );
+
+ char *szTemp, *szVersion = OLE2A( vVersion.bstrVal );
+
+ // I'm tired and sscanf is crashing - this works even if it's lame
+ lVerMajor = atol( szVersion );
+ szTemp = strstr( szVersion, "." ) + 1;
+ lVerMinor = atol( szTemp );
+ szTemp = strstr( szTemp, "." ) + 1;
+ lVerRelease = atol( szTemp );
+
+ CRegKey rk;
+ if( rk.Open( HKEY_LOCAL_MACHINE, _T( "Software\\Microsoft\\Microsoft Games\\Asheron's Call\\1.00" ) ) == ERROR_SUCCESS )
+ {
+ TCHAR szClientPath[ MAX_PATH ];
+ DWORD dwPathLength = MAX_PATH;
+ if( rk.QueryValue ( szClientPath, _T( "path" ), &dwPathLength ) == ERROR_SUCCESS )
+ {
+ ::_tcscpy( szClientPath + ( dwPathLength - 1 ), _T( "\\client.exe" ) );
+
+ DWORD dwDummy,
+ dwVerSize = ::GetFileVersionInfoSize( const_cast< LPTSTR > ( szClientPath ), &dwDummy );
+ if( dwVerSize != 0 )
+ {
+ BYTE *pbVersionInfo = reinterpret_cast< BYTE * >( ::_alloca( dwVerSize ) );
+
+ ::GetFileVersionInfo( const_cast< LPTSTR > ( szClientPath ), 0, dwVerSize, pbVersionInfo );
+
+ VS_FIXEDFILEINFO *vffi;
+ UINT nLength = sizeof( VS_FIXEDFILEINFO );
+ if( ::VerQueryValue( pbVersionInfo, _T( "\\" ), reinterpret_cast< LPVOID * >( &vffi ), &nLength ) )
+ {
+ if( (static_cast< long >( HIWORD( vffi->dwFileVersionMS ) ) == lVerMajor) &&
+ (static_cast< long >( LOWORD( vffi->dwFileVersionMS ) ) == lVerMinor) &&
+ (static_cast< long >( HIWORD( vffi->dwFileVersionLS ) ) == lVerRelease) )
+ {
+ m_bMismatch = false;
+ }
+ }
+ }
+ }
+ }
+
MSXML::IXMLDOMNodeListPtr pNodes = pMemLocDoc->selectNodes( _bstr_t( "/locations/memloc" ) );
***************
*** 381,384 ****
--- 427,436 ----
{
USES_CONVERSION;
+
+ if( m_bMismatch )
+ {
+ *pVal = NULL;
+ return S_FALSE;
+ }
std::string queryName = OLE2A( bstrName );
|