Author: mjansen Date: Sat May 28 16:47:39 2016 New Revision: 71440 URL: http://svn.reactos.org/svn/reactos?rev=71440&view=rev Log: [APPHELP] Register AppPatch directory with cmake, import SdbGetAppPatchDir implementation from Mislav Blažević CORE-10369
Modified: trunk/reactos/boot/bootdata/packages/reactos.dff.in trunk/reactos/dll/appcompat/apphelp/apphelp.h trunk/reactos/dll/appcompat/apphelp/apphelp.spec trunk/reactos/dll/appcompat/apphelp/sdbapi.c trunk/reactos/sdk/cmake/CMakeMacros.cmake Modified: trunk/reactos/boot/bootdata/packages/reactos.dff.in URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/reactos.dff.in?rev=71440&r1=71439&r2=71440&view=diff ============================================================================== --- trunk/reactos/boot/bootdata/packages/reactos.dff.in [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/packages/reactos.dff.in [iso-8859-1] Sat May 28 16:47:39 2016 @@ -69,6 +69,7 @@ 50 = security\templates 51 = system32\CatRoot 52 = system32\CatRoot2 +53 = AppPatch .InfEnd Modified: trunk/reactos/dll/appcompat/apphelp/apphelp.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/appcompat/apphelp/apphelp.h?rev=71440&r1=71439&r2=71440&view=diff ============================================================================== --- trunk/reactos/dll/appcompat/apphelp/apphelp.h [iso-8859-1] (original) +++ trunk/reactos/dll/appcompat/apphelp/apphelp.h [iso-8859-1] Sat May 28 16:47:39 2016 @@ -49,6 +49,11 @@ #define SDB_DATABASE_MAIN_MSI 0x80020000 #define SDB_DATABASE_MAIN_SHIM 0x80030000 #define SDB_DATABASE_MAIN_DRIVERS 0x80040000 + +typedef struct _SDB { + PDB db; + BOOL auto_loaded; +} SDB, *HSDB; typedef struct tagATTRINFO { TAG type; Modified: trunk/reactos/dll/appcompat/apphelp/apphelp.spec URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/appcompat/apphelp/apphelp.spec?rev=71440&r1=71439&r2=71440&view=diff ============================================================================== --- trunk/reactos/dll/appcompat/apphelp/apphelp.spec [iso-8859-1] (original) +++ trunk/reactos/dll/appcompat/apphelp/apphelp.spec [iso-8859-1] Sat May 28 16:47:39 2016 @@ -52,7 +52,7 @@ @ stub SdbFreeFileInfo @ stub SdbFreeFlagInfo @ stub SdbGetAppCompatDataSize -@ stub SdbGetAppPatchDir +@ stdcall SdbGetAppPatchDir(ptr wstr long) @ stdcall SdbGetBinaryTagData(ptr long) @ stdcall SdbGetDatabaseID(ptr ptr) @ stub SdbGetDatabaseInformation Modified: trunk/reactos/dll/appcompat/apphelp/sdbapi.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/appcompat/apphelp/sdbapi.c?rev=71440&r1=71439&r2=71440&view=diff ============================================================================== --- trunk/reactos/dll/appcompat/apphelp/sdbapi.c [iso-8859-1] (original) +++ trunk/reactos/dll/appcompat/apphelp/sdbapi.c [iso-8859-1] Sat May 28 16:47:39 2016 @@ -431,6 +431,53 @@ NtClose(db->file); SdbFree(db->data); SdbFree(db); +} + +/** + * Retrieves AppPatch directory. + * + * @param [in] db Handle to the shim database. + * @param [out] path Pointer to memory in which path shall be written. + * @param [in] size Size of the buffer in characters. + */ +BOOL WINAPI SdbGetAppPatchDir(HSDB db, LPWSTR path, DWORD size) +{ + static WCHAR* default_dir = NULL; + + if(!default_dir) + { + WCHAR* tmp = NULL; + UINT len = GetSystemWindowsDirectoryW(NULL, 0) + lstrlenW((CONST WCHAR[]){'\\','A','p','p','P','a','t','c','h',0}); + tmp = SdbAlloc((len + 1)* sizeof(WCHAR)); + if(tmp) + { + UINT r = GetSystemWindowsDirectoryW(tmp, len+1); + if (r && r < len) + { + if (SUCCEEDED(StringCchCatW(tmp, len+1, (CONST WCHAR[]){'\\','A','p','p','P','a','t','c','h',0}))) + { + if(InterlockedCompareExchangePointer((void**)&default_dir, tmp, NULL) == NULL) + tmp = NULL; + } + } + if (tmp) + SdbFree(tmp); + } + } + + /* In case function fails, path holds empty string */ + if (size > 0) + *path = 0; + + if (!db) + { + return SUCCEEDED(StringCchCopyW(path, size, default_dir)); + } + else + { + /* fixme */ + return FALSE; + } } /** Modified: trunk/reactos/sdk/cmake/CMakeMacros.cmake URL: http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/cmake/CMakeMacros.cmake?rev=71440&r1=71439&r2=71440&view=diff ============================================================================== --- trunk/reactos/sdk/cmake/CMakeMacros.cmake [iso-8859-1] (original) +++ trunk/reactos/sdk/cmake/CMakeMacros.cmake [iso-8859-1] Sat May 28 16:47:39 2016 @@ -261,6 +261,8 @@ set(${var} 51) elseif(${dir} STREQUAL reactos/system32/CatRoot2) set(${var} 52) + elseif(${dir} STREQUAL reactos/AppPatch) + set(${var} 53) else() message(FATAL_ERROR "Wrong destination: ${dir}") endif()