Skip to content

Commit bcb2613

Browse files
committed
[SDB][APPHELP] Add ShimVersionNT data tags + read them in SdbPackAppCompatData
1 parent 74bb9d5 commit bcb2613

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

dll/appcompat/apphelp/hsdb.c

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,7 @@ BOOL WINAPI SdbPackAppCompatData(HSDB hsdb, PSDBQUERYRESULT pQueryResult, PVOID*
686686
ShimData* pData;
687687
HRESULT hr;
688688
DWORD n;
689+
BOOL bCloseDatabase = FALSE;
689690

690691
if (!pQueryResult || !ppData || !pdwSize)
691692
{
@@ -719,13 +720,34 @@ BOOL WINAPI SdbPackAppCompatData(HSDB hsdb, PSDBQUERYRESULT pQueryResult, PVOID*
719720
pData->Query.dwFlags, pData->dwMagic, pData->Query.atrExes[0], pData->Query.atrLayers[0]);
720721

721722
/* Database List */
722-
/* 0x0 {GUID} NAME */
723+
/* 0x0 {GUID} NAME: Use to open HSDB */
724+
if (hsdb == NULL)
725+
{
726+
hsdb = SdbInitDatabase(HID_DOS_PATHS | SDB_DATABASE_MAIN_SHIM, NULL);
727+
bCloseDatabase = TRUE;
728+
}
723729

724730
for (n = 0; n < pQueryResult->dwLayerCount; ++n)
725731
{
732+
DWORD dwValue = 0, dwType;
733+
DWORD dwValueSize = sizeof(dwValue);
726734
SHIM_INFO("Layer 0x%x\n", pQueryResult->atrLayers[n]);
735+
736+
if (SdbQueryData(hsdb, pQueryResult->atrLayers[n], L"SHIMVERSIONNT", &dwType, &dwValue, &dwValueSize) == ERROR_SUCCESS &&
737+
dwType == REG_DWORD && dwValueSize == sizeof(dwValue))
738+
{
739+
dwValue = (dwValue % 100) | ((dwValue / 100) << 8);
740+
if (dwValue > pData->dwRosProcessCompatVersion)
741+
pData->dwRosProcessCompatVersion = dwValue;
742+
}
727743
}
728744

745+
if (pData->dwRosProcessCompatVersion)
746+
SHIM_INFO("Setting ProcessCompatVersion 0x%x\n", pData->dwRosProcessCompatVersion);
747+
748+
if (bCloseDatabase)
749+
SdbReleaseDatabase(hsdb);
750+
729751
*ppData = pData;
730752
*pdwSize = pData->dwSize;
731753

media/sdb/sysmain.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,38 +283,47 @@
283283
</LAYER>
284284
<LAYER NAME="VISTARTM">
285285
<SHIM_REF NAME="VistaRTMVersionLie" />
286+
<DATA NAME="SHIMVERSIONNT" DATA_DWORD="600" />
286287
<!-- TODO: Add more fixes! -->
287288
</LAYER>
288289
<LAYER NAME="VISTASP1">
289290
<SHIM_REF NAME="VistaSP1VersionLie" />
291+
<DATA NAME="SHIMVERSIONNT" DATA_DWORD="600" />
290292
<!-- TODO: Add more fixes! -->
291293
</LAYER>
292294
<LAYER NAME="VISTASP2">
293295
<SHIM_REF NAME="VistaSP2VersionLie" />
296+
<DATA NAME="SHIMVERSIONNT" DATA_DWORD="600" />
294297
<!-- TODO: Add more fixes! -->
295298
</LAYER>
296299
<LAYER NAME="WINSRV08">
297300
<SHIM_REF NAME="VistaRTMVersionLie" />
301+
<DATA NAME="SHIMVERSIONNT" DATA_DWORD="600" />
298302
<!-- TODO: Add more fixes! -->
299303
</LAYER>
300304
<LAYER NAME="WINSRV08SP1">
301305
<SHIM_REF NAME="VistaSP1VersionLie" />
306+
<DATA NAME="SHIMVERSIONNT" DATA_DWORD="600" />
302307
<!-- TODO: Add more fixes! -->
303308
</LAYER>
304309
<LAYER NAME="WINSRV08SP2">
305310
<SHIM_REF NAME="VistaSP2VersionLie" />
311+
<DATA NAME="SHIMVERSIONNT" DATA_DWORD="600" />
306312
<!-- TODO: Add more fixes! -->
307313
</LAYER>
308314
<LAYER NAME="WIN7RTM">
309315
<SHIM_REF NAME="Win7RTMVersionLie" />
316+
<DATA NAME="SHIMVERSIONNT" DATA_DWORD="601" />
310317
<!-- TODO: Add more fixes! -->
311318
</LAYER>
312319
<LAYER NAME="WIN8RTM">
313320
<SHIM_REF NAME="Win8RTMVersionLie" />
321+
<DATA NAME="SHIMVERSIONNT" DATA_DWORD="602" />
314322
<!-- TODO: Add more fixes! -->
315323
</LAYER>
316324
<LAYER NAME="WIN81RTM">
317325
<SHIM_REF NAME="Win81RTMVersionLie" />
326+
<DATA NAME="SHIMVERSIONNT" DATA_DWORD="603" />
318327
<!-- TODO: Add more fixes! -->
319328
</LAYER>
320329

0 commit comments

Comments
 (0)