-
-struct AssocPerceivedInfo
-{
- PCWSTR Type;
- PERCEIVED Perceived;
- INT FlagHardcoded;
- INT FlagSoftcoded;
- PCWSTR Extensions;
-};
-
-static const WCHAR unspecified_exts[] = {
- '.','l','n','k',0,
- '.','s','e','a','r','c','h','-','m','s',0,
- 0
-};
-
-static const WCHAR image_exts[] = {
- '.','b','m','p',0,
- '.','d','i','b',0,
- '.','e','m','f',0,
- '.','g','i','f',0,
- '.','i','c','o',0,
- '.','j','f','i','f',0,
- '.','j','p','e',0,
- '.','j','p','e','g',0,
- '.','j','p','g',0,
- '.','p','n','g',0,
- '.','r','l','e',0,
- '.','t','i','f',0,
- '.','t','i','f','f',0,
- '.','w','m','f',0,
- 0
-};
-
-static const WCHAR audio_exts[] = {
- '.','a','i','f',0,
- '.','a','i','f','c',0,
- '.','a','i','f','f',0,
- '.','a','u',0,
- '.','m','3','u',0,
- '.','m','i','d',0,
- '.','m','i','d','i',0,
-#if _WIN32_WINNT > 0x602
- '.','m','p','2',0,
-#endif
- '.','m','p','3',0,
- '.','r','m','i',0,
- '.','s','n','d',0,
- '.','w','a','v',0,
- '.','w','a','x',0,
- '.','w','m','a',0,
- 0
-};
-
-static const WCHAR video_exts[] = {
- '.','a','s','f',0,
- '.','a','s','x',0,
- '.','a','v','i',0,
- '.','d','v','r','-','m','s',0,
- '.','I','V','F',0,
- '.','m','1','v',0,
-#if _WIN32_WINNT <= 0x602
- '.','m','p','2',0,
-#endif
- '.','m','p','2','v',0,
- '.','m','p','a',0,
- '.','m','p','e',0,
- '.','m','p','e','g',0,
- '.','m','p','g',0,
- '.','m','p','v','2',0,
- '.','w','m',0,
- '.','w','m','v',0,
- '.','w','m','x',0,
- '.','w','v','x',0,
- 0
-};
-
-static const WCHAR compressed_exts[] = {
- '.','z','i','p',0,
- 0
-};
-
-static const WCHAR document_exts[] = {
-#if _WIN32_WINNT >= 0x600
- '.','h','t','m',0,
- '.','h','t','m','l',0,
-#endif
- '.','m','h','t',0,
- 0
-};
-
-static const WCHAR system_exts[] = {
- '.','c','p','l',0,
- 0
-};
-
-static const WCHAR application_exts[] = {
- '.','b','a','s',0,
- '.','b','a','t',0,
- '.','c','m','d',0,
- '.','c','o','m',0,
- '.','e','x','e',0,
- '.','h','t','a',0,
- '.','m','s','i',0,
- '.','p','i','f',0,
- '.','r','e','g',0,
- '.','s','c','r',0,
- '.','v','b',0,
- 0
-};
-
-const WCHAR type_text[] = {'t','e','x','t',0};
-const WCHAR type_image[] = {'i','m','a','g','e',0};
-const WCHAR type_audio[] = {'a','u','d','i','o',0};
-const WCHAR type_video[] = {'v','i','d','e','o',0};
-const WCHAR type_compressed[] = {'c','o','m','p','r','e','s','s','e','d',0};
-const WCHAR type_document[] = {'d','o','c','u','m','e','n','t',0};
-const WCHAR type_system[] = {'s','y','s','t','e','m',0};
-const WCHAR type_application[] = {'a','p','p','l','i','c','a','t','i','o','n',0};
-
-#define HARDCODED_NATIVE_WMSDK (PERCEIVEDFLAG_HARDCODED | PERCEIVEDFLAG_NATIVESUPPORT | PERCEIVEDFLAG_WMSDK)
-#define HARDCODED_NATIVE_GDIPLUS (PERCEIVEDFLAG_HARDCODED | PERCEIVEDFLAG_NATIVESUPPORT | PERCEIVEDFLAG_GDIPLUS)
-#define HARDCODED_NATIVE_ZIPFLDR (PERCEIVEDFLAG_HARDCODED | PERCEIVEDFLAG_NATIVESUPPORT | PERCEIVEDFLAG_ZIPFOLDER)
-#define SOFTCODED_NATIVESUPPORT (PERCEIVEDFLAG_SOFTCODED | PERCEIVEDFLAG_NATIVESUPPORT)
-
-static const struct AssocPerceivedInfo known_types[] = {
- { NULL, PERCEIVED_TYPE_UNSPECIFIED, PERCEIVEDFLAG_HARDCODED, PERCEIVEDFLAG_SOFTCODED, unspecified_exts },
- { type_text, PERCEIVED_TYPE_TEXT, PERCEIVEDFLAG_HARDCODED, SOFTCODED_NATIVESUPPORT, NULL },
- { type_image, PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS, PERCEIVEDFLAG_SOFTCODED, image_exts },
- { type_audio, PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK, PERCEIVEDFLAG_SOFTCODED, audio_exts },
- { type_video, PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK, PERCEIVEDFLAG_SOFTCODED, video_exts },
- { type_compressed, PERCEIVED_TYPE_COMPRESSED, HARDCODED_NATIVE_ZIPFLDR, PERCEIVEDFLAG_SOFTCODED, compressed_exts },
- { type_document, PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_HARDCODED, PERCEIVEDFLAG_SOFTCODED, document_exts },
- { type_system, PERCEIVED_TYPE_SYSTEM, PERCEIVEDFLAG_HARDCODED, PERCEIVEDFLAG_SOFTCODED, system_exts },
- { type_application, PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED, PERCEIVEDFLAG_SOFTCODED, application_exts },
-};
-
-static const struct AssocPerceivedInfo* AssocFindByBuiltinExtension(LPCWSTR pszExt)
-{
- UINT n;
- for (n = 0; n < sizeof(known_types) / sizeof(known_types[0]); ++n)
- {
- PCWSTR Ext = known_types[n].Extensions;
- while (Ext && *Ext)
- {
- if (!StrCmpIW(Ext, pszExt))
- return &known_types[n];
- Ext += (strlenW(Ext) + 1);
- }
- }
- return NULL;
-}
-
-static const struct AssocPerceivedInfo* AssocFindByType(LPCWSTR pszType)
-{
- UINT n;
- for (n = 0; n < sizeof(known_types) / sizeof(known_types[0]); ++n)
- {
- if (known_types[n].Type)
- {
- if (!StrCmpIW(known_types[n].Type, pszType))
- return &known_types[n];
- }
- }
- return NULL;
-}
-
-