mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-30 19:48:38 -05:00 
			
		
		
		
	tst: memfs-dotnet: WIP
This commit is contained in:
		| @@ -781,7 +781,8 @@ namespace memfs | |||||||
|  |  | ||||||
|             while (Enumerator.MoveNext()) |             while (Enumerator.MoveNext()) | ||||||
|             { |             { | ||||||
|                 FileName = Enumerator.Current; |                 String FullFileName = Enumerator.Current; | ||||||
|  |                 FileName = Path.GetFileName(FullFileName); | ||||||
|                 if ("." == FileName) |                 if ("." == FileName) | ||||||
|                 { |                 { | ||||||
|                     FileInfo = FileNode.GetFileInfo(); |                     FileInfo = FileNode.GetFileInfo(); | ||||||
| @@ -799,7 +800,7 @@ namespace memfs | |||||||
|                 } |                 } | ||||||
|                 else |                 else | ||||||
|                 { |                 { | ||||||
|                     FileNode ChildFileNode = FileNodeMap.Get(FileName); |                     FileNode ChildFileNode = FileNodeMap.Get(FullFileName); | ||||||
|                     if (null != ChildFileNode) |                     if (null != ChildFileNode) | ||||||
|                     { |                     { | ||||||
|                         FileInfo = ChildFileNode.GetFileInfo(); |                         FileInfo = ChildFileNode.GetFileInfo(); | ||||||
| @@ -906,15 +907,52 @@ namespace memfs | |||||||
|             return STATUS_SUCCESS; |             return STATUS_SUCCESS; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public override Int32 GetStreamInfo( |         public override Boolean GetStreamEntry( | ||||||
|             Object FileNode, |             Object FileNode0, | ||||||
|             Object FileDesc, |             Object FileDesc, | ||||||
|             IntPtr Buffer, |             ref Object Context, | ||||||
|             UInt32 Length, |             out String StreamName, | ||||||
|             out UInt32 BytesTransferred) |             out UInt64 StreamSize, | ||||||
|  |             out UInt64 StreamAllocationSize) | ||||||
|         { |         { | ||||||
|             BytesTransferred = default(UInt32); |             FileNode FileNode = (FileNode)FileNode0; | ||||||
|             return STATUS_INVALID_DEVICE_REQUEST; |             IEnumerator<String> Enumerator = (IEnumerator<String>)Context; | ||||||
|  |  | ||||||
|  |             if (null != FileNode.MainFileNode) | ||||||
|  |                 FileNode = FileNode.MainFileNode; | ||||||
|  |  | ||||||
|  |             if (null == Enumerator) | ||||||
|  |             { | ||||||
|  |                 List<String> StreamFileNames = | ||||||
|  |                     new List<String>(FileNodeMap.GetStreamFileNames(FileNode)); | ||||||
|  |                 Context = Enumerator = StreamFileNames.GetEnumerator(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             while (Enumerator.MoveNext()) | ||||||
|  |             { | ||||||
|  |                 String FullFileName = Enumerator.Current; | ||||||
|  |                 FileNode StreamFileNode = FileNodeMap.Get(FullFileName); | ||||||
|  |                 if (null != StreamFileNode) | ||||||
|  |                 { | ||||||
|  |                     int Index = FullFileName.IndexOf(':'); | ||||||
|  |                     if (0 > Index) | ||||||
|  |                     { | ||||||
|  |                         if (0 != (FileNode.FileInfo.FileAttributes & (UInt32)FileAttributes.Directory)) | ||||||
|  |                             continue; | ||||||
|  |                         StreamName = ""; | ||||||
|  |                     } | ||||||
|  |                     else | ||||||
|  |                         StreamName = FullFileName.Substring(Index + 1); | ||||||
|  |                     StreamSize = StreamFileNode.FileInfo.FileSize; | ||||||
|  |                     StreamAllocationSize = StreamFileNode.FileInfo.AllocationSize; | ||||||
|  |                     return true; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             StreamName = default(String); | ||||||
|  |             StreamSize = default(UInt64); | ||||||
|  |             StreamAllocationSize = default(UInt64); | ||||||
|  |             return false; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void InsertOpenNode(FileNode FileNode) |         private void InsertOpenNode(FileNode FileNode) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user