private void GetFolderProperties(IKnownFolderNative knownFolderNative)
{
Debug.Assert(knownFolderNative != null);
NativeFolderDefinition nativeFolderDefinition;
knownFolderNative.GetFolderDefinition(out nativeFolderDefinition);
try
{
knownFolderProperties.category = nativeFolderDefinition.category;
knownFolderProperties.canonicalName = Marshal.PtrToStringUni(nativeFolderDefinition.name);
knownFolderProperties.description = Marshal.PtrToStringUni(nativeFolderDefinition.description);
knownFolderProperties.parentId = nativeFolderDefinition.parentId;
knownFolderProperties.relativePath = Marshal.PtrToStringUni(nativeFolderDefinition.relativePath);
knownFolderProperties.parsingName = Marshal.PtrToStringUni(nativeFolderDefinition.parsingName);
knownFolderProperties.tooltipResourceId = Marshal.PtrToStringUni(nativeFolderDefinition.tooltip);
knownFolderProperties.localizedNameResourceId = Marshal.PtrToStringUni(nativeFolderDefinition.localizedName);
knownFolderProperties.iconResourceId = Marshal.PtrToStringUni(nativeFolderDefinition.icon);
knownFolderProperties.security = Marshal.PtrToStringUni(nativeFolderDefinition.security);
knownFolderProperties.fileAttributes = (System.IO.FileAttributes)nativeFolderDefinition.attributes;
knownFolderProperties.definitionOptions = nativeFolderDefinition.definitionOptions;
knownFolderProperties.folderTypeId = nativeFolderDefinition.folderTypeId;
knownFolderProperties.folderType = FolderTypes.GetFolderType(knownFolderProperties.folderTypeId);
bool pathExists;
knownFolderProperties.path = GetPath(out pathExists, knownFolderNative);
knownFolderProperties.pathExists = pathExists;
knownFolderProperties.redirection = knownFolderNative.GetRedirectionCapabilities();
// Turn tooltip, localized name and icon resource IDs
// into the actual resources.
//FIXME:
//knownFolderProperties.tooltip = CoreHelpers.GetStringResource(knownFolderProperties.tooltipResourceId);
//knownFolderProperties.localizedName = CoreHelpers.GetStringResource(knownFolderProperties.localizedNameResourceId);
knownFolderProperties.folderId = knownFolderNative.GetId();
}
finally
{
// Clean up memory.
Marshal.FreeCoTaskMem(nativeFolderDefinition.name);
Marshal.FreeCoTaskMem(nativeFolderDefinition.description);
Marshal.FreeCoTaskMem(nativeFolderDefinition.relativePath);
Marshal.FreeCoTaskMem(nativeFolderDefinition.parsingName);
Marshal.FreeCoTaskMem(nativeFolderDefinition.tooltip);
Marshal.FreeCoTaskMem(nativeFolderDefinition.localizedName);
Marshal.FreeCoTaskMem(nativeFolderDefinition.icon);
Marshal.FreeCoTaskMem(nativeFolderDefinition.security);
}
}