Интерфейс 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 |