[PATCH 4/4] shell32: Install knownfolders to registry during DLL registration
Andrew Eikum
aeikum at codeweavers.com
Tue Mar 17 10:03:23 CDT 2015
---
dlls/shell32/shellpath.c | 258 ++++++++++++++++++++++++++++++++++-------
dlls/shell32/tests/shellpath.c | 210 +++++++++++++++++----------------
2 files changed, 322 insertions(+), 146 deletions(-)
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index f43b0ed..aaa27d8 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -812,6 +812,7 @@ static const WCHAR Local_Settings_Temporary_Internet_FilesW[] = {'L','o','c','a'
static const WCHAR Microsoft_Windows_GameExplorerW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','G','a','m','e','E','x','p','l','o','r','e','r','\0'};
static const WCHAR Microsoft_Windows_LibrariesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','L','i','b','r','a','r','i','e','s','\0'};
static const WCHAR Microsoft_Windows_RingtonesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','R','i','n','g','t','o','n','e','s','\0'};
+static const WCHAR Microsoft_Windows_Start_MenuW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','S','t','a','r','t',' ','M','e','n','u',0};
static const WCHAR MusicW[] = {'M','u','s','i','c','\0'};
static const WCHAR Music_PlaylistsW[] = {'M','u','s','i','c','\\','P','l','a','y','l','i','s','t','s','\0'};
static const WCHAR Music_Sample_MusicW[] = {'M','u','s','i','c','\\','S','a','m','p','l','e',' ','M','u','s','i','c','\0'};
@@ -827,9 +828,11 @@ static const WCHAR Pictures_Sample_PicturesW[] = {'P','i','c','t','u','r','e','s
static const WCHAR Pictures_Slide_ShowsW[] = {'P','i','c','t','u','r','e','s','\\','S','l','i','d','e',' ','S','h','o','w','s','\0'};
static const WCHAR PrintHoodW[] = {'P','r','i','n','t','H','o','o','d','\0'};
static const WCHAR Program_FilesW[] = {'P','r','o','g','r','a','m',' ','F','i','l','e','s','\0'};
+static const WCHAR ProgramFilesW[] = {'P','r','o','g','r','a','m','F','i','l','e','s','\0'};
static const WCHAR Program_Files_Common_FilesW[] = {'P','r','o','g','r','a','m',' ','F','i','l','e','s','\\','C','o','m','m','o','n',' ','F','i','l','e','s','\0'};
static const WCHAR Program_Files_x86W[] = {'P','r','o','g','r','a','m',' ','F','i','l','e','s',' ','(','x','8','6',')','\0'};
static const WCHAR Program_Files_x86_Common_FilesW[] = {'P','r','o','g','r','a','m',' ','F','i','l','e','s',' ','(','x','8','6',')','\\','C','o','m','m','o','n',' ','F','i','l','e','s','\0'};
+static const WCHAR ProgramFilesCommonW[] = {'P','r','o','g','r','a','m','F','i','l','e','s','C','o','m','m','o','n',0};
static const WCHAR ProgramFilesDirW[] = {'P','r','o','g','r','a','m','F','i','l','e','s','D','i','r','\0'};
static const WCHAR ProgramFilesDirX86W[] = {'P','r','o','g','r','a','m','F','i','l','e','s','D','i','r',' ','(','x','8','6',')','\0'};
static const WCHAR ProgramsW[] = {'P','r','o','g','r','a','m','s','\0'};
@@ -843,11 +846,13 @@ static const WCHAR Start_MenuW[] = {'S','t','a','r','t',' ','M','e','n','u','\0'
static const WCHAR Start_Menu_ProgramsW[] = {'S','t','a','r','t',' ','M','e','n','u','\\','P','r','o','g','r','a','m','s','\0'};
static const WCHAR Start_Menu_Admin_ToolsW[] = {'S','t','a','r','t',' ','M','e','n','u','\\','P','r','o','g','r','a','m','s','\\','A','d','m','i','n','i','s','t','r','a','t','i','v','e',' ','T','o','o','l','s','\0'};
static const WCHAR Start_Menu_StartupW[] = {'S','t','a','r','t',' ','M','e','n','u','\\','P','r','o','g','r','a','m','s','\\','S','t','a','r','t','U','p','\0'};
+static const WCHAR SystemW[] = {'S','y','s','t','e','m',0};
static const WCHAR TemplatesW[] = {'T','e','m','p','l','a','t','e','s','\0'};
static const WCHAR UsersW[] = {'U','s','e','r','s','\0'};
static const WCHAR UsersPublicW[] = {'U','s','e','r','s','\\','P','u','b','l','i','c','\0'};
static const WCHAR VideosW[] = {'V','i','d','e','o','s','\0'};
static const WCHAR Videos_Sample_VideosW[] = {'V','i','d','e','o','s','\\','S','a','m','p','l','e',' ','V','i','d','e','o','s','\0'};
+static const WCHAR WindowsW[] = {'W','i','n','d','o','w','s',0};
static const WCHAR DefaultW[] = {'.','D','e','f','a','u','l','t','\0'};
static const WCHAR AllUsersProfileW[] = {'%','A','L','L','U','S','E','R','S','P','R','O','F','I','L','E','%','\0'};
static const WCHAR UserProfileW[] = {'%','U','S','E','R','P','R','O','F','I','L','E','%','\0'};
@@ -886,6 +891,21 @@ typedef struct
CSIDL_Type type;
LPCWSTR szValueName;
LPCWSTR szDefaultPath; /* fallback string or resource ID */
+
+ /* KNOWNFOLDER_DEFINITION fields */
+ KF_CATEGORY category;
+ const WCHAR *pszName;
+ const WCHAR *pszDescription;
+ const KNOWNFOLDERID *fidParent;
+ const WCHAR *pszRelativePath;
+ const WCHAR *pszParsingName;
+ const WCHAR *pszTooltip;
+ const WCHAR *pszLocalizedName;
+ const WCHAR *pszIcon;
+ const WCHAR *pszSecurity;
+ DWORD dwAttributes;
+ KF_DEFINITION_FLAGS kfdFlags;
+ const FOLDERTYPEID *ftidType;
} CSIDL_DATA;
static const CSIDL_DATA CSIDL_Data[] =
@@ -894,7 +914,21 @@ static const CSIDL_DATA CSIDL_Data[] =
&FOLDERID_Desktop,
CSIDL_Type_User,
DesktopW,
- MAKEINTRESOURCEW(IDS_DESKTOPDIRECTORY)
+ MAKEINTRESOURCEW(IDS_DESKTOPDIRECTORY),
+
+ KF_CATEGORY_PERUSER, /* category */
+ DesktopW, /* name */
+ NULL, /* description */
+ &GUID_NULL, /* parent */
+ DesktopW, /* relative path */
+ NULL, /* parsing */
+ NULL, /* tooltip */
+ NULL, /* localized */
+ NULL, /* icon */
+ NULL, /* security */
+ FILE_ATTRIBUTE_READONLY, /* attributes */
+ 0, /* flags */
+ &GUID_NULL /* typeid */
},
{ /* 0x01 - CSIDL_INTERNET */
&FOLDERID_InternetFolder,
@@ -1014,7 +1048,21 @@ static const CSIDL_DATA CSIDL_Data[] =
&FOLDERID_Fonts,
CSIDL_Type_WindowsPath,
FontsW,
- FontsW
+ FontsW,
+
+ KF_CATEGORY_FIXED, /* category */
+ FontsW, /* name */
+ NULL, /* description */
+ &GUID_NULL, /* parent */
+ NULL, /* relative path */
+ NULL, /* parsing */
+ NULL, /* tooltip */
+ NULL, /* localized */
+ NULL, /* icon */
+ NULL, /* security */
+ 0, /* attributes */
+ 0, /* flags */
+ &FOLDERID_Windows/* typeid */
},
{ /* 0x15 - CSIDL_TEMPLATES */
&FOLDERID_Templates,
@@ -1026,13 +1074,41 @@ static const CSIDL_DATA CSIDL_Data[] =
&FOLDERID_CommonStartMenu,
CSIDL_Type_AllUsers,
Common_Start_MenuW,
- Start_MenuW
+ Start_MenuW,
+
+ KF_CATEGORY_COMMON, /* category */
+ Common_Start_MenuW, /* name */
+ NULL, /* description */
+ &FOLDERID_ProgramData, /* parent */
+ Microsoft_Windows_Start_MenuW, /* relative path */
+ NULL, /* parsing */
+ NULL, /* tooltip */
+ NULL, /* localized */
+ NULL, /* icon */
+ NULL, /* security */
+ FILE_ATTRIBUTE_READONLY, /* attributes */
+ 0, /* flags */
+ &GUID_NULL /* typeid */
},
{ /* 0x17 - CSIDL_COMMON_PROGRAMS */
&FOLDERID_CommonPrograms,
CSIDL_Type_AllUsers,
Common_ProgramsW,
- Start_Menu_ProgramsW
+ Start_Menu_ProgramsW,
+
+ KF_CATEGORY_COMMON, /* category */
+ Common_ProgramsW, /* name */
+ NULL, /* description */
+ &FOLDERID_CommonStartMenu, /* parent */
+ ProgramsW, /* relative path */
+ NULL, /* parsing */
+ NULL, /* tooltip */
+ NULL, /* localized */
+ NULL, /* icon */
+ NULL, /* security */
+ FILE_ATTRIBUTE_READONLY, /* attributes */
+ 0, /* flags */
+ &GUID_NULL /* typeid */
},
{ /* 0x18 - CSIDL_COMMON_STARTUP */
&FOLDERID_CommonStartup,
@@ -1104,25 +1180,81 @@ static const CSIDL_DATA CSIDL_Data[] =
&FOLDERID_ProgramData,
CSIDL_Type_AllUsers,
Common_AppDataW,
- Application_DataW
+ Application_DataW,
+
+ KF_CATEGORY_FIXED, /* category */
+ Common_AppDataW, /* name */
+ NULL, /* description */
+ &GUID_NULL, /* parent */
+ NULL, /* relative path */
+ NULL, /* parsing */
+ NULL, /* tooltip */
+ NULL, /* localized */
+ NULL, /* icon */
+ NULL, /* security */
+ 0, /* attributes */
+ 0, /* flags */
+ &GUID_NULL /* typeid */
},
{ /* 0x24 - CSIDL_WINDOWS */
&FOLDERID_Windows,
CSIDL_Type_WindowsPath,
NULL,
- NULL
+ NULL,
+
+ KF_CATEGORY_FIXED, /* category */
+ WindowsW, /* name */
+ NULL, /* description */
+ &GUID_NULL, /* parent */
+ NULL, /* relative path */
+ NULL, /* parsing */
+ NULL, /* tooltip */
+ NULL, /* localized */
+ NULL, /* icon */
+ NULL, /* security */
+ 0, /* attributes */
+ 0, /* flags */
+ &GUID_NULL /* typeid */
},
{ /* 0x25 - CSIDL_SYSTEM */
&FOLDERID_System,
CSIDL_Type_SystemPath,
NULL,
- NULL
+ NULL,
+
+ KF_CATEGORY_FIXED, /* category */
+ SystemW, /* name */
+ NULL, /* description */
+ &GUID_NULL, /* parent */
+ NULL, /* relative path */
+ NULL, /* parsing */
+ NULL, /* tooltip */
+ NULL, /* localized */
+ NULL, /* icon */
+ NULL, /* security */
+ 0, /* attributes */
+ 0, /* flags */
+ &GUID_NULL /* typeid */
},
{ /* 0x26 - CSIDL_PROGRAM_FILES */
&FOLDERID_ProgramFiles,
CSIDL_Type_CurrVer,
ProgramFilesDirW,
- Program_FilesW
+ Program_FilesW,
+
+ KF_CATEGORY_FIXED, /* category */
+ ProgramFilesW, /* name */
+ NULL, /* description */
+ &GUID_NULL, /* parent */
+ NULL, /* relative path */
+ NULL, /* parsing */
+ NULL, /* tooltip */
+ NULL, /* localized */
+ NULL, /* icon */
+ NULL, /* security */
+ FILE_ATTRIBUTE_READONLY, /* attributes */
+ 0, /* flags */
+ &GUID_NULL /* typeid */
},
{ /* 0x27 - CSIDL_MYPICTURES */
&FOLDERID_Pictures,
@@ -1152,7 +1284,21 @@ static const CSIDL_DATA CSIDL_Data[] =
&FOLDERID_ProgramFilesCommon,
CSIDL_Type_CurrVer,
CommonFilesDirW,
- Program_Files_Common_FilesW
+ Program_Files_Common_FilesW,
+
+ KF_CATEGORY_FIXED, /* category */
+ ProgramFilesCommonW, /* name */
+ NULL, /* description */
+ &GUID_NULL, /* parent */
+ NULL, /* relative path */
+ NULL, /* parsing */
+ NULL, /* tooltip */
+ NULL, /* localized */
+ NULL, /* icon */
+ NULL, /* security */
+ 0, /* attributes */
+ 0, /* flags */
+ &GUID_NULL /* typeid */
},
{ /* 0x2c - CSIDL_PROGRAM_FILES_COMMONX86 */
&FOLDERID_ProgramFilesCommonX86,
@@ -2879,32 +3025,6 @@ static HRESULT set_folder_attributes(void)
return S_OK;
}
-
-/* Register the default values in the registry, as some apps seem to depend
- * on their presence. The set registered was taken from Windows XP.
- */
-HRESULT SHELL_RegisterShellFolders(void)
-{
- HRESULT hr;
-
- /* Set up '$HOME' targeted symlinks for 'My Documents', 'My Pictures',
- * 'My Videos', 'My Music' and 'Desktop' in advance, so that the
- * _SHRegister*ShellFolders() functions will find everything nice and clean
- * and thus will not attempt to create them in the profile directory. */
- _SHCreateSymbolicLinks();
-
- hr = _SHRegisterUserShellFolders(TRUE);
- if (SUCCEEDED(hr))
- hr = _SHRegisterUserShellFolders(FALSE);
- if (SUCCEEDED(hr))
- hr = _SHRegisterCommonShellFolders();
- if (SUCCEEDED(hr))
- hr = create_extra_folders();
- if (SUCCEEDED(hr))
- hr = set_folder_attributes();
- return hr;
-}
-
/*************************************************************************
* SHGetSpecialFolderPathA [SHELL32.@]
*/
@@ -3912,16 +4032,12 @@ static HRESULT WINAPI foldermanager_GetFolderByName(
return E_NOTIMPL;
}
-static HRESULT WINAPI foldermanager_RegisterFolder(
- IKnownFolderManager *iface,
- REFKNOWNFOLDERID rfid,
- KNOWNFOLDER_DEFINITION const *pKFD)
+static HRESULT register_folder(const KNOWNFOLDERID *rfid, const KNOWNFOLDER_DEFINITION *pKFD)
{
HRESULT hr;
HKEY hKey = NULL;
DWORD dwDisp;
LPWSTR registryPath = NULL;
- TRACE("(%p, %s, %p)\n", iface, debugstr_guid(rfid), pKFD);
hr = get_known_folder_registry_path(rfid, NULL, ®istryPath);
TRACE("registry path: %s\n", debugstr_w(registryPath));
@@ -3965,6 +4081,15 @@ static HRESULT WINAPI foldermanager_RegisterFolder(
return hr;
}
+static HRESULT WINAPI foldermanager_RegisterFolder(
+ IKnownFolderManager *iface,
+ REFKNOWNFOLDERID rfid,
+ KNOWNFOLDER_DEFINITION const *pKFD)
+{
+ TRACE("(%p, %s, %p)\n", iface, debugstr_guid(rfid), pKFD);
+ return register_folder(rfid, pKFD);
+}
+
static HRESULT WINAPI foldermanager_UnregisterFolder(
IKnownFolderManager *iface,
REFKNOWNFOLDERID rfid)
@@ -4085,3 +4210,56 @@ HRESULT WINAPI SHGetKnownFolderIDList(REFKNOWNFOLDERID rfid, DWORD flags, HANDLE
FIXME("%s, 0x%08x, %p, %p\n", debugstr_guid(rfid), flags, token, pidl);
return E_NOTIMPL;
}
+
+static void register_system_knownfolders(void)
+{
+ int i;
+ for(i = 0; i < sizeof(CSIDL_Data) / sizeof(CSIDL_Data[0]); ++i){
+ const CSIDL_DATA *folder = &CSIDL_Data[i];
+ if(folder->pszName){
+ KNOWNFOLDER_DEFINITION kfd;
+
+ /* register_folder won't modify kfd, so cast away const instead of
+ * reallocating */
+ kfd.category = folder->category;
+ kfd.pszName = (WCHAR*)folder->pszName;
+ kfd.pszDescription = (WCHAR*)folder->pszDescription;
+ memcpy(&kfd.fidParent, folder->fidParent, sizeof(KNOWNFOLDERID));
+ kfd.pszRelativePath = (WCHAR*)folder->pszRelativePath;
+ kfd.pszParsingName = (WCHAR*)folder->pszParsingName;
+ kfd.pszTooltip = (WCHAR*)folder->pszTooltip;
+ kfd.pszLocalizedName = (WCHAR*)folder->pszLocalizedName;
+ kfd.pszIcon = (WCHAR*)folder->pszIcon;
+ kfd.pszSecurity = (WCHAR*)folder->pszSecurity;
+ kfd.dwAttributes = folder->dwAttributes;
+ kfd.kfdFlags = folder->kfdFlags;
+ memcpy(&kfd.ftidType, folder->ftidType, sizeof(FOLDERTYPEID));
+
+ register_folder(folder->id, &kfd);
+ }
+ }
+}
+
+HRESULT SHELL_RegisterShellFolders(void)
+{
+ HRESULT hr;
+
+ /* Set up '$HOME' targeted symlinks for 'My Documents', 'My Pictures',
+ * 'My Videos', 'My Music' and 'Desktop' in advance, so that the
+ * _SHRegister*ShellFolders() functions will find everything nice and clean
+ * and thus will not attempt to create them in the profile directory. */
+ _SHCreateSymbolicLinks();
+
+ hr = _SHRegisterUserShellFolders(TRUE);
+ if (SUCCEEDED(hr))
+ hr = _SHRegisterUserShellFolders(FALSE);
+ if (SUCCEEDED(hr))
+ hr = _SHRegisterCommonShellFolders();
+ if (SUCCEEDED(hr))
+ hr = create_extra_folders();
+ if (SUCCEEDED(hr))
+ hr = set_folder_attributes();
+ if (SUCCEEDED(hr))
+ register_system_knownfolders();
+ return hr;
+}
diff --git a/dlls/shell32/tests/shellpath.c b/dlls/shell32/tests/shellpath.c
index 7b04238..8c918be 100644
--- a/dlls/shell32/tests/shellpath.c
+++ b/dlls/shell32/tests/shellpath.c
@@ -888,6 +888,7 @@ if (0) { /* crashes */
/* Standard CSIDL values (and their flags) uses only two less-significant bytes */
#define NO_CSIDL 0x10000
#define WINE_ATTRIBUTES_OPTIONAL 0x20000
+#define KFD_TODO_WINE 0x40000
#define KNOWN_FOLDER(id, csidl, name, category, parent1, parent2, relative_path, parsing_name, attributes, definitionFlags) \
{ &id, # id, csidl, # csidl, name, category, {&parent1, &parent2}, relative_path, parsing_name, attributes, definitionFlags, __LINE__ }
@@ -923,7 +924,7 @@ struct knownFolderDef {
*/
static const struct knownFolderDef known_folders[] = {
KNOWN_FOLDER(FOLDERID_AddNewPrograms,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"AddNewProgramsFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -933,7 +934,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_AdminTools,
- CSIDL_ADMINTOOLS,
+ CSIDL_ADMINTOOLS|KFD_TODO_WINE,
"Administrative Tools",
KF_CATEGORY_PERUSER,
FOLDERID_Programs, GUID_NULL,
@@ -942,7 +943,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_AppUpdates,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"AppUpdatesFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -952,7 +953,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_CDBurning,
- CSIDL_CDBURN_AREA,
+ CSIDL_CDBURN_AREA|KFD_TODO_WINE,
"CD Burning",
KF_CATEGORY_PERUSER,
FOLDERID_LocalAppData, GUID_NULL,
@@ -961,7 +962,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_LOCAL_REDIRECT_ONLY),
KNOWN_FOLDER(FOLDERID_ChangeRemovePrograms,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"ChangeRemoveProgramsFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -971,7 +972,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_CommonAdminTools,
- CSIDL_COMMON_ADMINTOOLS,
+ CSIDL_COMMON_ADMINTOOLS|KFD_TODO_WINE,
"Common Administrative Tools",
KF_CATEGORY_COMMON,
FOLDERID_CommonPrograms, GUID_NULL,
@@ -980,7 +981,8 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_CommonOEMLinks,
- CSIDL_COMMON_OEM_LINKS,"OEM Links",
+ CSIDL_COMMON_OEM_LINKS|KFD_TODO_WINE,
+ "OEM Links",
KF_CATEGORY_COMMON,
FOLDERID_ProgramData, GUID_NULL,
"OEM Links",
@@ -1006,7 +1008,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_CommonStartup,
- CSIDL_COMMON_STARTUP,
+ CSIDL_COMMON_STARTUP|KFD_TODO_WINE,
"Common Startup",
KF_CATEGORY_COMMON,
FOLDERID_CommonPrograms, GUID_NULL,
@@ -1015,7 +1017,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_CommonTemplates,
- CSIDL_COMMON_TEMPLATES,
+ CSIDL_COMMON_TEMPLATES|KFD_TODO_WINE,
"Common Templates",
KF_CATEGORY_COMMON,
FOLDERID_ProgramData, GUID_NULL,
@@ -1024,7 +1026,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_ComputerFolder,
- CSIDL_DRIVES,
+ CSIDL_DRIVES|KFD_TODO_WINE,
"MyComputerFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1033,7 +1035,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_ConflictFolder,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"ConflictFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1043,7 +1045,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_ConnectionsFolder,
- CSIDL_CONNECTIONS,
+ CSIDL_CONNECTIONS|KFD_TODO_WINE,
"ConnectionsFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1053,7 +1055,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Contacts,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Contacts",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1062,7 +1064,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
KNOWN_FOLDER(FOLDERID_ControlPanelFolder,
- CSIDL_CONTROLS,
+ CSIDL_CONTROLS|KFD_TODO_WINE,
"ControlPanelFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1072,7 +1074,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Cookies,
- CSIDL_COOKIES,
+ CSIDL_COOKIES|KFD_TODO_WINE,
"Cookies",
KF_CATEGORY_PERUSER,
FOLDERID_RoamingAppData, FOLDERID_LocalAppData,
@@ -1090,7 +1092,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
KNOWN_FOLDER(FOLDERID_DeviceMetadataStore,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Device Metadata Store",
KF_CATEGORY_COMMON,
FOLDERID_ProgramData, GUID_NULL,
@@ -1099,7 +1101,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Documents,
- CSIDL_MYDOCUMENTS,
+ CSIDL_MYDOCUMENTS|KFD_TODO_WINE,
"Personal",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1108,7 +1110,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_ROAMABLE | KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_DocumentsLibrary,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"DocumentsLibrary",
KF_CATEGORY_PERUSER,
FOLDERID_Libraries, GUID_NULL,
@@ -1117,7 +1119,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_PRECREATE | KFDF_STREAM),
KNOWN_FOLDER(FOLDERID_Downloads,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Downloads",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1126,7 +1128,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
KNOWN_FOLDER(FOLDERID_Favorites,
- CSIDL_FAVORITES,
+ CSIDL_FAVORITES|KFD_TODO_WINE,
"Favorites",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1144,7 +1146,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Games,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Games",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1153,7 +1155,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_GameTasks,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"GameTasks",
KF_CATEGORY_PERUSER,
FOLDERID_LocalAppData, GUID_NULL,
@@ -1162,7 +1164,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_LOCAL_REDIRECT_ONLY),
KNOWN_FOLDER(FOLDERID_History,
- CSIDL_HISTORY,
+ CSIDL_HISTORY|KFD_TODO_WINE,
"History",
KF_CATEGORY_PERUSER,
FOLDERID_LocalAppData, GUID_NULL,
@@ -1171,7 +1173,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_LOCAL_REDIRECT_ONLY),
KNOWN_FOLDER(FOLDERID_HomeGroup,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"HomeGroupFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1180,7 +1182,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_ImplicitAppShortcuts,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"ImplicitAppShortcuts",
KF_CATEGORY_PERUSER,
FOLDERID_UserPinned, GUID_NULL,
@@ -1189,7 +1191,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_InternetCache,
- CSIDL_INTERNET_CACHE,
+ CSIDL_INTERNET_CACHE|KFD_TODO_WINE,
"Cache",
KF_CATEGORY_PERUSER,
FOLDERID_LocalAppData, GUID_NULL,
@@ -1198,7 +1200,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_LOCAL_REDIRECT_ONLY),
KNOWN_FOLDER(FOLDERID_InternetFolder,
- CSIDL_INTERNET,
+ CSIDL_INTERNET|KFD_TODO_WINE,
"InternetFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1207,7 +1209,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Libraries,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Libraries",
KF_CATEGORY_PERUSER,
FOLDERID_RoamingAppData, GUID_NULL,
@@ -1216,7 +1218,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
KNOWN_FOLDER(FOLDERID_Links,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Links",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1225,7 +1227,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
KNOWN_FOLDER(FOLDERID_LocalAppData,
- CSIDL_LOCAL_APPDATA,
+ CSIDL_LOCAL_APPDATA|KFD_TODO_WINE,
"Local AppData",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1234,7 +1236,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_LOCAL_REDIRECT_ONLY | KFDF_PUBLISHEXPANDEDPATH),
KNOWN_FOLDER(FOLDERID_LocalAppDataLow,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"LocalAppDataLow",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1243,7 +1245,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,
KFDF_LOCAL_REDIRECT_ONLY | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
KNOWN_FOLDER(FOLDERID_LocalizedResourcesDir,
- CSIDL_RESOURCES_LOCALIZED,
+ CSIDL_RESOURCES_LOCALIZED|KFD_TODO_WINE,
"LocalizedResourcesDir",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1252,7 +1254,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Music,
- CSIDL_MYMUSIC,
+ CSIDL_MYMUSIC|KFD_TODO_WINE,
"My Music",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1261,7 +1263,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_ROAMABLE | KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_MusicLibrary,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"MusicLibrary",
KF_CATEGORY_PERUSER,
FOLDERID_Libraries, GUID_NULL,
@@ -1270,7 +1272,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_PRECREATE | KFDF_STREAM),
KNOWN_FOLDER(FOLDERID_NetHood,
- CSIDL_NETHOOD,
+ CSIDL_NETHOOD|KFD_TODO_WINE,
"NetHood",
KF_CATEGORY_PERUSER,
FOLDERID_RoamingAppData, GUID_NULL,
@@ -1279,7 +1281,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_NetworkFolder,
- CSIDL_NETWORK,
+ CSIDL_NETWORK|KFD_TODO_WINE,
"NetworkPlacesFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1288,7 +1290,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_OriginalImages,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Original Images",
KF_CATEGORY_PERUSER,
FOLDERID_LocalAppData, GUID_NULL,
@@ -1297,7 +1299,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_PhotoAlbums,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"PhotoAlbums",
KF_CATEGORY_PERUSER,
FOLDERID_Pictures, GUID_NULL,
@@ -1306,7 +1308,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
0),
KNOWN_FOLDER(FOLDERID_Pictures,
- CSIDL_MYPICTURES,
+ CSIDL_MYPICTURES|KFD_TODO_WINE,
"My Pictures",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1315,7 +1317,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_ROAMABLE | KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_PicturesLibrary,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"PicturesLibrary",
KF_CATEGORY_PERUSER,
FOLDERID_Libraries, GUID_NULL,
@@ -1324,7 +1326,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_PRECREATE | KFDF_STREAM),
KNOWN_FOLDER(FOLDERID_Playlists,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Playlists",
KF_CATEGORY_PERUSER,
FOLDERID_Music, GUID_NULL,
@@ -1333,7 +1335,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
0),
KNOWN_FOLDER(FOLDERID_PrintersFolder,
- CSIDL_PRINTERS,
+ CSIDL_PRINTERS|KFD_TODO_WINE,
"PrintersFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1342,7 +1344,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_PrintHood,
- CSIDL_PRINTHOOD,
+ CSIDL_PRINTHOOD|KFD_TODO_WINE,
"PrintHood",
KF_CATEGORY_PERUSER,
FOLDERID_RoamingAppData, GUID_NULL,
@@ -1351,7 +1353,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Profile,
- CSIDL_PROFILE,
+ CSIDL_PROFILE|KFD_TODO_WINE,
"Profile",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1388,7 +1390,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_ProgramFilesCommonX64,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"ProgramFilesCommonX64",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1397,7 +1399,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_ProgramFilesCommonX86,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"ProgramFilesCommonX86",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1406,7 +1408,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_ProgramFilesX64,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"ProgramFilesX64",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1415,7 +1417,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_ProgramFilesX86,
- CSIDL_PROGRAM_FILESX86,
+ CSIDL_PROGRAM_FILESX86|KFD_TODO_WINE,
"ProgramFilesX86",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1424,7 +1426,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_Programs,
- CSIDL_PROGRAMS,
+ CSIDL_PROGRAMS|KFD_TODO_WINE,
"Programs",
KF_CATEGORY_PERUSER,
FOLDERID_StartMenu, GUID_NULL,
@@ -1433,7 +1435,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_Public,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Public",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1443,7 +1445,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_PublicDesktop,
- CSIDL_COMMON_DESKTOPDIRECTORY,
+ CSIDL_COMMON_DESKTOPDIRECTORY|KFD_TODO_WINE,
"Common Desktop",
KF_CATEGORY_COMMON,
FOLDERID_Public, GUID_NULL,
@@ -1452,7 +1454,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_PublicDocuments,
- CSIDL_COMMON_DOCUMENTS,
+ CSIDL_COMMON_DOCUMENTS|KFD_TODO_WINE,
"Common Documents",
KF_CATEGORY_COMMON,
FOLDERID_Public, GUID_NULL,
@@ -1461,7 +1463,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_PublicDownloads,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"CommonDownloads",
KF_CATEGORY_COMMON,
FOLDERID_Public, GUID_NULL,
@@ -1470,7 +1472,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_PublicGameTasks,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"PublicGameTasks",
KF_CATEGORY_COMMON,
FOLDERID_ProgramData, GUID_NULL,
@@ -1479,7 +1481,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_LOCAL_REDIRECT_ONLY),
KNOWN_FOLDER(FOLDERID_PublicLibraries,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"PublicLibraries",
KF_CATEGORY_COMMON,
FOLDERID_Public, GUID_NULL,
@@ -1488,7 +1490,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_PublicMusic,
- CSIDL_COMMON_MUSIC,
+ CSIDL_COMMON_MUSIC|KFD_TODO_WINE,
"CommonMusic",
KF_CATEGORY_COMMON,
FOLDERID_Public, GUID_NULL,
@@ -1497,7 +1499,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_PublicPictures,
- CSIDL_COMMON_PICTURES,
+ CSIDL_COMMON_PICTURES|KFD_TODO_WINE,
"CommonPictures",
KF_CATEGORY_COMMON,
FOLDERID_Public, GUID_NULL,
@@ -1506,7 +1508,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_PublicRingtones,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"CommonRingtones",
KF_CATEGORY_COMMON,
FOLDERID_ProgramData, GUID_NULL,
@@ -1515,7 +1517,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_PublicVideos,
- CSIDL_COMMON_VIDEO,
+ CSIDL_COMMON_VIDEO|KFD_TODO_WINE,
"CommonVideo",
KF_CATEGORY_COMMON,
FOLDERID_Public, GUID_NULL,
@@ -1524,7 +1526,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_QuickLaunch,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Quick Launch",
KF_CATEGORY_PERUSER,
FOLDERID_RoamingAppData, GUID_NULL,
@@ -1533,7 +1535,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Recent,
- CSIDL_RECENT,
+ CSIDL_RECENT|KFD_TODO_WINE,
"Recent",
KF_CATEGORY_PERUSER,
FOLDERID_RoamingAppData, GUID_NULL,
@@ -1542,7 +1544,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_RecordedTVLibrary,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"RecordedTVLibrary",
KF_CATEGORY_COMMON,
FOLDERID_PublicLibraries, GUID_NULL,
@@ -1551,7 +1553,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_PRECREATE | KFDF_STREAM),
KNOWN_FOLDER(FOLDERID_RecycleBinFolder,
- CSIDL_BITBUCKET,
+ CSIDL_BITBUCKET|KFD_TODO_WINE,
"RecycleBinFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1560,7 +1562,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_ResourceDir,
- CSIDL_RESOURCES,
+ CSIDL_RESOURCES|KFD_TODO_WINE,
"ResourceDir",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1569,7 +1571,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Ringtones,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Ringtones",
KF_CATEGORY_PERUSER,
FOLDERID_LocalAppData, GUID_NULL,
@@ -1578,7 +1580,7 @@ static const struct knownFolderDef known_folders[] = {
0,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_RoamingAppData,
- CSIDL_APPDATA,
+ CSIDL_APPDATA|KFD_TODO_WINE,
"AppData",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1587,7 +1589,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_SampleMusic,
- NO_CSIDL|WINE_ATTRIBUTES_OPTIONAL /* win8 */,
+ NO_CSIDL|KFD_TODO_WINE|WINE_ATTRIBUTES_OPTIONAL /* win8 */,
"SampleMusic",
KF_CATEGORY_COMMON,
FOLDERID_PublicMusic, GUID_NULL,
@@ -1596,7 +1598,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_SamplePictures,
- NO_CSIDL|WINE_ATTRIBUTES_OPTIONAL /* win8 */,
+ NO_CSIDL|KFD_TODO_WINE|WINE_ATTRIBUTES_OPTIONAL /* win8 */,
"SamplePictures",
KF_CATEGORY_COMMON,
FOLDERID_PublicPictures, GUID_NULL,
@@ -1605,7 +1607,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_SamplePlaylists,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"SamplePlaylists",
KF_CATEGORY_COMMON,
FOLDERID_PublicMusic, GUID_NULL,
@@ -1614,7 +1616,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
0),
KNOWN_FOLDER(FOLDERID_SampleVideos,
- NO_CSIDL|WINE_ATTRIBUTES_OPTIONAL /* win8 */,
+ NO_CSIDL|KFD_TODO_WINE|WINE_ATTRIBUTES_OPTIONAL /* win8 */,
"SampleVideos",
KF_CATEGORY_COMMON,
FOLDERID_PublicVideos, GUID_NULL,
@@ -1623,7 +1625,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_SavedGames,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"SavedGames",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1632,7 +1634,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
KNOWN_FOLDER(FOLDERID_SavedSearches,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Searches",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1641,7 +1643,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
KNOWN_FOLDER(FOLDERID_SEARCH_CSC,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"CSCFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1650,7 +1652,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_SearchHome,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"SearchHomeFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1659,7 +1661,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_SEARCH_MAPI,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"MAPIFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1668,7 +1670,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_SendTo,
- CSIDL_SENDTO,
+ CSIDL_SENDTO|KFD_TODO_WINE,
"SendTo",
KF_CATEGORY_PERUSER,
FOLDERID_RoamingAppData, GUID_NULL,
@@ -1677,7 +1679,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_SidebarDefaultParts,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Default Gadgets",
KF_CATEGORY_COMMON,
FOLDERID_ProgramFiles, GUID_NULL,
@@ -1686,7 +1688,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_SidebarParts,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"Gadgets",
KF_CATEGORY_PERUSER,
FOLDERID_LocalAppData, GUID_NULL,
@@ -1695,7 +1697,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_StartMenu,
- CSIDL_STARTMENU,
+ CSIDL_STARTMENU|KFD_TODO_WINE,
"Start Menu",
KF_CATEGORY_PERUSER,
FOLDERID_RoamingAppData, GUID_NULL,
@@ -1704,7 +1706,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_Startup,
- CSIDL_STARTUP,
+ CSIDL_STARTUP|KFD_TODO_WINE,
"Startup",
KF_CATEGORY_PERUSER,
FOLDERID_Programs, GUID_NULL,
@@ -1713,7 +1715,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_SyncManagerFolder,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"SyncCenterFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1723,7 +1725,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_SyncResultsFolder,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"SyncResultsFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1733,7 +1735,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_SyncSetupFolder,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"SyncSetupFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1752,7 +1754,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_SystemX86,
- CSIDL_SYSTEMX86,
+ CSIDL_SYSTEMX86|KFD_TODO_WINE,
"SystemX86",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1761,7 +1763,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Templates,
- CSIDL_TEMPLATES,
+ CSIDL_TEMPLATES|KFD_TODO_WINE,
"Templates",
KF_CATEGORY_PERUSER,
FOLDERID_RoamingAppData, GUID_NULL,
@@ -1770,7 +1772,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_UserPinned,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"User Pinned",
KF_CATEGORY_PERUSER,
FOLDERID_QuickLaunch, GUID_NULL,
@@ -1779,7 +1781,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_HIDDEN,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_UserProfiles,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"UserProfiles",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1788,7 +1790,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_UserProgramFiles,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"UserProgramFiles",
KF_CATEGORY_PERUSER,
FOLDERID_LocalAppData, GUID_NULL,
@@ -1797,7 +1799,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_UserProgramFilesCommon,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"UserProgramFilesCommon",
KF_CATEGORY_PERUSER,
FOLDERID_UserProgramFiles, GUID_NULL,
@@ -1806,7 +1808,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_UsersFiles,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"UsersFilesFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1815,7 +1817,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_UsersLibraries,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"UsersLibrariesFolder",
KF_CATEGORY_VIRTUAL,
GUID_NULL, GUID_NULL,
@@ -1824,7 +1826,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(FOLDERID_Videos,
- CSIDL_MYVIDEO,
+ CSIDL_MYVIDEO|KFD_TODO_WINE,
"My Video",
KF_CATEGORY_PERUSER,
FOLDERID_Profile, GUID_NULL,
@@ -1833,7 +1835,7 @@ static const struct knownFolderDef known_folders[] = {
FILE_ATTRIBUTE_READONLY,
KFDF_ROAMABLE | KFDF_PRECREATE),
KNOWN_FOLDER(FOLDERID_VideosLibrary,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"VideosLibrary",
KF_CATEGORY_PERUSER,
FOLDERID_Libraries, GUID_NULL,
@@ -1851,7 +1853,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(_FOLDERID_CredentialManager,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"CredentialManager",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1860,7 +1862,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(_FOLDERID_CryptoKeys,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"CryptoKeys",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1869,7 +1871,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(_FOLDERID_DpapiKeys,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"DpapiKeys",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1878,7 +1880,7 @@ static const struct knownFolderDef known_folders[] = {
0,
0),
KNOWN_FOLDER(_FOLDERID_SystemCertificates,
- NO_CSIDL,
+ NO_CSIDL|KFD_TODO_WINE,
"SystemCertificates",
KF_CATEGORY_FIXED,
GUID_NULL, GUID_NULL,
@@ -1955,14 +1957,16 @@ static void check_known_folder(IKnownFolderManager *mgr, KNOWNFOLDERID *folderId
if(SUCCEEDED(hr))
{
hr = IKnownFolder_GetFolderDefinition(folder, &kfd);
- todo_wine
- ok_(__FILE__, known_folder->line)(hr == S_OK, "cannot get known folder definition for %s\n", known_folder->sFolderId);
+ if(known_folder->csidl & KFD_TODO_WINE)
+ todo_wine
+ ok_(__FILE__, known_folder->line)(hr == S_OK, "cannot get known folder definition for %s\n", known_folder->sFolderId);
+ else
+ ok_(__FILE__, known_folder->line)(hr == S_OK, "cannot get known folder definition for %s\n", known_folder->sFolderId);
if(SUCCEEDED(hr))
{
ret = MultiByteToWideChar(CP_ACP, 0, known_folder->sName, -1, sName, sizeof(sName)/sizeof(sName[0]));
ok_(__FILE__, known_folder->line)(ret != 0, "cannot convert known folder name \"%s\" to wide characters\n", known_folder->sName);
- todo_wine
ok_(__FILE__, known_folder->line)(lstrcmpW(kfd.pszName, sName)==0, "invalid known folder name returned for %s: %s expected, but %s retrieved\n", known_folder->sFolderId, wine_dbgstr_w(sName), wine_dbgstr_w(kfd.pszName));
ok_(__FILE__, known_folder->line)(kfd.category == known_folder->category, "invalid known folder category for %s: %d expected, but %d retrieved\n", known_folder->sFolderId, known_folder->category, kfd.category);
@@ -2091,9 +2095,7 @@ static void test_knownFolders(void)
if(SUCCEEDED(hr))
{
hr = IKnownFolder_GetCategory(folder, &cat);
- todo_wine
ok(hr == S_OK, "failed to get folder category: 0x%08x\n", hr);
- todo_wine
ok(cat==KF_CATEGORY_FIXED, "invalid folder category: %d\n", cat);
hr = IKnownFolder_GetId(folder, &folderId);
@@ -2116,15 +2118,11 @@ static void test_knownFolders(void)
ok(hr == E_INVALIDARG, "unexpected value from SetPath: 0x%08x\n", hr);
hr = IKnownFolder_GetFolderDefinition(folder, &kfDefinition);
- todo_wine
ok(hr == S_OK, "failed to get folder definition: 0x%08x\n", hr);
if(SUCCEEDED(hr))
{
- todo_wine
ok(kfDefinition.category==KF_CATEGORY_FIXED, "invalid folder category: 0x%08x\n", kfDefinition.category);
- todo_wine
ok(lstrcmpW(kfDefinition.pszName, sWindows)==0, "invalid folder name: %s\n", wine_dbgstr_w(kfDefinition.pszName));
- todo_wine
ok(kfDefinition.dwAttributes==0, "invalid folder attributes: %d\n", kfDefinition.dwAttributes);
FreeKnownFolderDefinitionFields(&kfDefinition);
}
--
2.3.3
More information about the wine-patches
mailing list