Поделиться через


Интерфейс IThumbnailCache (thumbcache.h)

Предоставляет методы для системного кэша эскизов, совместно используемого приложениями.

Наследование

Интерфейс IThumbnailCache наследуется от интерфейса IUnknown . IThumbnailCache также имеет следующие типы элементов:

Методы

Интерфейс IThumbnailCache содержит следующие методы.

 
IThumbnailCache::GetThumbnail

Получает кэшированный эскиз для заданного элемента оболочки.
IThumbnailCache::GetThumbnailByID

Получает эскиз из кэша эскизов с учетом его идентификатора.

Комментарии

API кэша эскизов предназначен для предоставления приложениям единого метода получения и кэширования эскизов. В Windows XP кэширование эскизов выполняется для каждой папки, а кэш хранится в файле Thumbs.db в каждой папке. Хотя этот подход обеспечивает пространственное расположение, он не поддерживает предварительные версии и запросы к папкам. Кэш эскизов в Windows Vista устраняет этот недостаток, предоставляя глобальный кэш.

Чтобы кэшировать эскиз, приложение должно сначала получить IShellItem , представляющий элемент, для которого будет получен эскиз, а затем передать IShellItem в вызов IThumbnailCache::GetThumbnail. Если параметр flags для IThumbnailCache::GetThumbnail содержит флаг WTS_EXTRACT, а эскиз еще не кэширован, эскиз будет извлечен и помещен в кэш. Если флаг WTS_FORCEEXTRACTION установлен, кэш игнорируется, а новый эскиз всегда извлекается. Дополнительные сведения о флагах, передаваемых в IThumbnailCache::GetThumbnail , см. в разделе IThumbnailCache::GetThumbnail.

Если эскиз еще не находится в кэше, он будет автоматически извлечен из исходного файла с помощью существующих реализаций IExtractImage или IThumbnailProvider , зарегистрированных в операционной системе. Приложению не нужно предоставлять реализацию средства извлечения эскизов.

При возврате IThumbnailCache::GetThumbnail его параметр pThumbnailID получает WTS_THUMBNAILID структуру, содержащую уникальный идентификатор эскиза. Если этот идентификатор сохранен, его можно передать в IThumbnailCache::GetThumbnailByID , чтобы получить кэшированный эскиз. Кроме того, можно вызвать IThumbnailCache::GetThumbnail с установленным флагом WTS_CACHEONLY. В этом случае эскиз возвращается только в том случае, если он уже кэширован. Недостаток использования IThumbnailCache::GetThumbnail вместо IThumbnailCache::GetThumbnailByID заключается в том, что необходимо по-прежнему предоставлять IShellItem .

Для доступа к кэшу эскизов можно использовать несколько потоков, чтобы повысить производительность. IThumbnailCache::GetThumbnail можно вызвать в потоке с более высоким приоритетом с установленным флагом WTS_INCACHEONLY или WTS_FASTEXTRACT, чтобы кэшированные эскизы извлеклись немедленно. Если изображение отсутствует в кэше или WTS_LOWQUALITY указывает, что кэшированное изображение не было идеального качества, можно использовать поток с более низким приоритетом для вызова IThumbnailCache::GetThumbnail с установленным флагом WTS_EXTRACT, чтобы можно было извлечь эскиз.

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header thumbcache.h