diff --git a/lib/Filesystem/Path.hs b/lib/Filesystem/Path.hs
--- a/lib/Filesystem/Path.hs
+++ b/lib/Filesystem/Path.hs
@@ -153,6 +153,7 @@
 	Just RootWindowsVolume{} -> True
 	Just RootWindowsCurrentVolume -> False
 	Just RootWindowsUnc{} -> True
+	Just RootWindowsDoubleQMark -> True
 	Nothing -> False
 
 -- | Test whether a path is relative.
@@ -176,6 +177,7 @@
 			Just RootWindowsVolume{} -> y { pathRoot = pathRoot x }
 			_ -> y
 		Just RootWindowsUnc{} -> y
+		Just RootWindowsDoubleQMark -> y
 		Nothing -> xy
 	xy = y
 		{ pathRoot = pathRoot x
diff --git a/lib/Filesystem/Path/Internal.hs b/lib/Filesystem/Path/Internal.hs
--- a/lib/Filesystem/Path/Internal.hs
+++ b/lib/Filesystem/Path/Internal.hs
@@ -41,6 +41,7 @@
 	| RootWindowsVolume Char Bool
 	| RootWindowsCurrentVolume
 	| RootWindowsUnc String String Bool
+	| RootWindowsDoubleQMark
 	deriving (Eq, Ord, Data, Typeable, Show)
 
 data FilePath = FilePath
@@ -95,6 +96,7 @@
 	RootWindowsCurrentVolume -> "\\"
 	RootWindowsUnc host share False -> "\\\\" ++ host ++ "\\" ++ share
 	RootWindowsUnc host share True -> "\\\\?\\UNC\\" ++ host ++ "\\" ++ share
+	RootWindowsDoubleQMark -> "\\??\\"
 
 rootText :: Maybe Root -> T.Text
 rootText = T.pack . rootChunk
diff --git a/lib/Filesystem/Path/Rules.hs b/lib/Filesystem/Path/Rules.hs
--- a/lib/Filesystem/Path/Rules.hs
+++ b/lib/Filesystem/Path/Rules.hs
@@ -304,7 +304,9 @@
 				Nothing -> case T.stripPrefix (T.pack "\\\\") text of
 					Just stripped -> parseUncRoot stripped False
 					Nothing -> parseDosRoot text False
-		else parseDosRoot text False
+		else case T.stripPrefix (T.pack "\\??\\") text of
+			Just stripped -> parseDoubleQmark stripped
+			Nothing -> parseDosRoot text False
 	
 	(directories, filename)
 		| P.null pastRoot = ([], Nothing)
@@ -339,6 +341,10 @@
 	
 	parseDrive c = RootWindowsVolume (toUpper (T.head c)) extended
 
+parseDoubleQmark :: T.Text -> (Maybe Root, [T.Text])
+parseDoubleQmark text = (Just RootWindowsDoubleQMark, components) where
+	components = textSplitBy (\c -> c == '/' || c == '\\') text
+
 parseUncRoot :: T.Text -> Bool -> (Maybe Root, [T.Text])
 parseUncRoot text extended = parsed where
 	(host, pastHost) = T.break (== '\\') text
@@ -354,6 +360,8 @@
 	Just RootWindowsCurrentVolume -> dosValid p
 	Just (RootWindowsVolume v _) -> elem v ['A'..'Z'] && dosValid p
 	Just (RootWindowsUnc host share _) -> uncValid p host share
+	-- don't even try to validate \??\ paths
+	Just RootWindowsDoubleQMark -> True
 	Just RootPosix -> False
 
 dosValid :: FilePath -> Bool
diff --git a/system-filepath.cabal b/system-filepath.cabal
--- a/system-filepath.cabal
+++ b/system-filepath.cabal
@@ -1,5 +1,5 @@
 name: system-filepath
-version: 0.4.11
+version: 0.4.12
 synopsis: High-level, byte-based file and directory path manipulations
 license: MIT
 license-file: license.txt
@@ -20,7 +20,7 @@
 source-repository this
   type: git
   location: https://john-millikin.com/code/haskell-filesystem/
-  tag: system-filepath_0.4.11
+  tag: system-filepath_0.4.12
 
 library
   ghc-options: -Wall -O2
