互換性インフラストラクチャでは、データベースを使用して、アプリケーションの互換性の問題とその解決策を特定します。 このデータベースは、拡張子が .sdb のインデックス付きバイナリ ファイルです。 互換性インフラストラクチャには、データベースにアクセスするためのプログラミング インターフェイスが用意されています。
互換性の問題は、実行時にアプリケーションごとに対処できます。 データベースで指定された各アプリケーションには、ソリューションを必要とする 1 つ以上のコンポーネントが含まれています。 コンポーネントは、ファイル属性 (チェックサムなど) を使用して一般的に記述される実行可能ファイルです。
各アプリケーションのデータベース検索とソリューションの決定のプロセスは、一致する 呼び出されます。 ファイル属性と、.exe ファイルを含むフォルダーまたはサブフォルダーに関連付けられているファイルの存在を使用して、一意の一致を作成できます。 関連付けられているファイルは、一致するファイル 呼び出されます。
TAG は、データベース内のエントリと属性の一意の識別子です。 TAG 型 は、TAGに関連付けられているデータの形式を示します。 たとえば、TAG_NAME は TAG_TYPE_STRINGREF型です。TAG_NAME のデータは名前文字列です。 TAGID は、特定のデータベース内のエントリへのポインターです。 TAGREF は、複数のデータベース間で使用できるエントリへのポインターです。
ファイル属性 は、ディスク上のファイルに関連付けられているメタデータです。 これらの属性には、ファイル名、ファイル サイズ、チェックサム、バージョン、日付が含まれます。 これらの属性は、システムによってロードされるファイルがデータベース・エントリーと一致するかどうかを判別するために使用されます。 したがって、これらのファイル属性は、一致する属性とも呼ばれます。
ソリューション
アプリケーションのコンポーネントに適用される最も一般的なソリューションは、Apphelp と Appfix です。
Apphelp を使用すると、カスタムローカライズされたメッセージ通知が表示されます(通常、アプリケーションがインストールまたは起動されたとき)。 互換性の問題について説明し、アプリケーションの実行を続行するためのオプションを提供する簡単なテキストが含まれています。 ただし、一部のアプリケーションは劇的に失敗し、実行が許可されます。Apphelp は、これらのアプリケーションの実行を続行するオプションをユーザーに提供しません。
Appfix を使用すると、アプリケーションのコンポーネントによって呼び出される API のフックがインストールされます。 これらのフックは、システム関数 (shimmingとも呼ばれます) の代わりに呼び出すことができるスタブ関数を指します。 スタブ関数は、インストールされているバージョンの Windows でアプリケーションを実行できるようにするために必要な操作を実行します。 各スタブ関数は、作業の完了後に必要に応じてシステム関数を呼び出す場合があります。 互換性レイヤー または モード には、1 つ以上の shim とフラグが含まれています。
このセクションでは、次の操作を行います。
- 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
- Shim データベースの種類
- shimFlushCacheの
- TAG
- タグの種類
- TAGIDをする
- TAGREFをする