Banco de Dados de Compatibilidade de Aplicativos
A infraestrutura de compatibilidade usa um banco de dados para identificar problemas de compatibilidade de aplicativos e suas soluções. Esse banco de dados é um arquivo binário indexado com uma extensão .sdb. A infraestrutura de compatibilidade fornece uma interface de programação para acessar o banco de dados.
Os problemas de compatibilidade podem ser resolvidos aplicativo por aplicativo em tempo de execução. Cada aplicativo especificado no banco de dados contém um ou mais componentes que precisam de uma solução. Componentes são arquivos executáveis que geralmente são descritos usando seus atributos de arquivo (por exemplo, soma de verificação).
O processo de pesquisa de banco de dados e determinação das soluções para cada aplicativo é chamado de correspondência. Os atributos de arquivo e a presença de arquivos associados na pasta ou subpasta que contém o arquivo .exe podem ser usados para criar uma correspondência exclusiva. Os arquivos associados são chamados de arquivos correspondentes.
Uma TAG é um identificador exclusivo para as entradas e atributos no banco de dados. O tipo de TAG indica o formato dos dados associados à TAG. Por exemplo, TAG_NAME é do tipo TAG_TYPE_STRINGREF; os dados para TAG_NAME é uma cadeia de caracteres de nome. Um TAGID é um ponteiro para uma entrada em um banco de dados específico. Um TAGREF é um ponteiro para uma entrada que pode ser usada em vários bancos de dados.
Atributos de arquivo são metadados associados a um arquivo no disco. Esses atributos incluem o nome do arquivo, o tamanho do arquivo, a soma de verificação, a versão e a data. Esses atributos são usados para determinar se um arquivo que está sendo carregado pelo sistema corresponde a uma entrada de banco de dados. Portanto, esses atributos de arquivo também são chamados de atributos correspondentes.
Soluções
As soluções mais comuns aplicadas aos componentes de um aplicativo são Apphelp e Appfix.
Com o Apphelp, uma notificação de mensagem localizada personalizada é exibida, normalmente quando o aplicativo é instalado ou iniciado. Ele contém um breve texto que explica o problema de compatibilidade e fornece a opção de continuar executando o aplicativo. No entanto, alguns aplicativos falharão drasticamente é permitido executar; O Apphelp não dará ao usuário a opção de continuar executando esses aplicativos.
Com o Appfix, ganchos são instalados para APIs chamadas pelos componentes do aplicativo. Esses ganchos apontam para funções de stub que podem ser chamadas em vez das funções do sistema (também conhecidas como shimming). As funções de stub executam as operações necessárias para permitir que o aplicativo seja executado na versão instalada do Windows. Cada função de stub pode, opcionalmente, chamar a função do sistema após a conclusão de seu trabalho. Uma camada ou modo de compatibilidade contém um ou mais calços e sinalizadores.
Nesta seção
- APPHELP_DATA
- ATTRINFO
- BaseFlushAppcompatCache
- FIND_INFO
- INDEXID
- PATH_TYPE
- SdbBeginWriteListTag
- SdbCloseDatabase
- SdbCloseDatabaseWrite
- SdbCommitIndexes
- SdbCreateDatabase
- SdbDeclareIndex
- SdbEndWriteListTag
- SdbFindFirstDWORDIndexedTag
- SdbFindFirstTag
- SdbFindNextTag
- SdbFormatAttribute
- SdbFreeFileAttributes
- SdbGetAppPatchDir
- SdbGetBinaryTagData
- SdbGetFileAttributes
- SdbGetFirstChild
- SdbGetIndex
- SdbGetMatchingExe
- SdbGetNextChild
- SdbGetStringTagPtr
- SdbGetTagFromTagID
- SdbInitDatabase
- SdbIsStandardDatabase
- SdbMakeIndexKeyFromString
- SdbOpenApphelpDetailsDatabase
- SdbOpenApphelpResourceFile
- SdbOpenDatabase
- SdbQueryDataExTagID
- SDBQUERYRESULT
- SdbReadApphelpDetailsData
- SdbReadBinaryTag
- SdbReadDWORDTag
- SdbReadQWORDTag
- SdbReadStringTag
- SdbRegisterDatabaseEx
- SdbReleaseDatabase
- SdbReleaseMatchingExe
- SdbStartIndexing
- SdbStopIndexing
- SdbTagRefToTagID
- SdbTagToString
- SdbUnregisterDatabase
- SdbWriteBinaryTag
- SdbWriteBinaryTagFromFile
- SdbWriteDWORDTag
- SdbWriteNULLTag
- SdbWriteQWORDTag
- SdbWriteStringTag
- SdbWriteWORDTag
- Tipos de banco de dados Shim
- ShimFlushCache
- ETIQUETA
- Tipos de TAG
- TAGID
- TAGREF