/// <summary> /// Returns true if the path uses the device syntax (\\.\) /// </summary> internal static bool IsDevice(StringBuilder path) { return path != null && path.StartsWithOrdinal(DevicePathPrefix); }
/// <summary> /// Returns true if the path uses the extended UNC syntax (\\?\UNC\) /// </summary> internal static bool IsExtendedUnc(StringBuilder path) { return path != null && path.StartsWithOrdinal(UncExtendedPathPrefix); }
/// <summary> /// Adds the extended path prefix (\\?\) if not already present and if the path is not relative or a device (\\.\). /// </summary> internal static void EnsureExtendedPrefix(StringBuilder path) { if (IsExtended(path) || IsRelative(path) || IsDevice(path)) return; // Given \\server\share in longpath becomes \\?\UNC\server\share if (path.StartsWithOrdinal(UncPathPrefix)) { path.Insert(2, PathInternal.UncExtendedPrefixToInsert); return; } path.Insert(0, PathInternal.ExtendedPathPrefix); }