/// <summary> /// Populates a structure that contains /// this known folder's properties. /// </summary> 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); } }