/*++ Copyright (c) 1989-2000 Microsoft Corporation Module Name: debug.c Abstract: This module implements debug only routines. Author: vadimb created sometime in 2000 Revision History: clupu cleanup 12/27/2000 --*/ #include "apphelp.h" #if defined(APPHELP_TOOLS) // // this functionality will not be available (temporary) // DWORD ApphelpShowUI( TAGREF trExe, // tagref for the exe (should be a "LOCAL" tagref) LPCWSTR pwszDatabase, // database path (we will make a local db out of it LPCWSTR pwszDetailsDatabase, LPCWSTR pwszApphelpPath, BOOL bLocalChum, BOOL bUseHtmlHelp ) /*++ Return: The same as what ShowApphelp returns. Desc: Given the database and the (local) tagref it procures the dialog with all the information in it for a given htmlhelpid. This api is for internal use only and it is available on checked builds only --*/ { /* HSDB hSDB = NULL; APPHELP_DATA ApphelpData; DWORD dwRet = (DWORD)-1; PAPPHELPCONTEXT pContext; pContext = InitializeApphelpContext(); if (pContext == NULL) { DBGPRINT((sdlError, "iShowApphelpDebug", "Failed to initialize Apphelp context for thread id 0x%x\n", GetCurrentThreadId())); goto ExitShowApphelpDebug; } hSDB = SdbInitDatabase(HID_NO_DATABASE, NULL); if (hSDB == NULL) { DBGPRINT((sdlError, "iShowApphelpDebug", "Failed to initialize database\n")); goto Done; } // // Open local database // if (!SdbOpenLocalDatabase(hSDB, pwszDatabase)) { DBGPRINT((sdlError, "iShowApphelpDebug", "Failed to open database \"%ls\"\n", pwszDatabase)); goto Done; } if (SdbIsTagrefFromMainDB(trExe)) { DBGPRINT((sdlError, "iShowApphelpDebug", "Can only operate on local tagrefs\n")); goto Done; } // // Now we venture out and read apphelp data // if (!SdbReadApphelpData(hSDB, trExe, &ApphelpData)) { DBGPRINT((sdlError, "iShowApphelpDebug", "Error while trying to read Apphelp data for 0x%x in \"%S\"\n", trExe, pwszDatabase)); goto Done; } // // We have the data and everything else we need to throw a dialog, // set debug chum ... // pContext->bShowOfflineContent = bLocalChum; // // Should we use html help instead ? // pContext->bUseHtmlHelp = bUseHtmlHelp; // // Pointer to the local chum. // pContext->pwszApphelpPath = pwszApphelpPath; // // And now throw a dialog... // dwRet = ShowApphelp(&ApphelpData, pwszDetailsDatabase, NULL); Done: if (hSDB != NULL) { SdbReleaseDatabase(hSDB); } // // Release the context for this thread/instance // ReleaseApphelpContext(); ExitShowApphelpDebug: return dwRet; */ return TRUE; } BOOL ApphelpShowDialog( IN PAPPHELP_INFO pAHInfo, // the info necessary to find the apphelp data IN PHANDLE phProcess // [optional] returns the process handle of // the process displaying the apphelp. // When the process completes, the return value // (from GetExitCodeProcess()) will be zero // if the app should not run, or non-zero // if it should run. ) { BOOL bRunApp = TRUE; SdbShowApphelpDialog(pAHInfo, phProcess, &bRunApp); return bRunApp; } // // Get all the file's attributes // // BOOL ApphelpGetFileAttributes( IN LPCWSTR lpwszFileName, OUT PATTRINFO* ppAttrInfo, OUT LPDWORD lpdwAttrCount ) /*++ Return: The same as what SdbGetFileAttributes returns. Desc: Stub to call SdbGetFileAttributes. --*/ { return SdbGetFileAttributes(lpwszFileName, ppAttrInfo, lpdwAttrCount); } BOOL ApphelpFreeFileAttributes( IN PATTRINFO pAttrInfo ) /*++ Return: The same as what SdbFreeFileAttributes returns. Desc: Stub to call SdbFreeFileAttributes. --*/ { return SdbFreeFileAttributes(pAttrInfo); } #endif // APPHELP_TOOLS void CALLBACK ShimFlushCache( HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow ) /*++ Return: void. Desc: Entry point for rundll32.exe. This is used to flush cache after installing a brand new shim database. Use: "rundll32 apphelp.dll,ShimFlushCache" --*/ { #ifndef WIN2K_NOCACHE BaseFlushAppcompatCache(); #endif } void CALLBACK ShimDumpCache( HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow ) { #ifndef WIN2K_NOCACHE BaseDumpAppcompatCache(); #endif }