mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-30 19:48:38 -05:00 
			
		
		
		
	sys: FileNodes are now registered only in the ContextByNameTable; the ContextTable can be removed if desired
This commit is contained in:
		| @@ -600,7 +600,6 @@ typedef struct | ||||
|     /* locked under FSP_FSVOL_DEVICE_EXTENSION::ContextTableResource */ | ||||
|     LONG OpenCount; | ||||
|     SHARE_ACCESS ShareAccess; | ||||
|     FSP_DEVICE_CONTEXT_TABLE_ELEMENT ContextElementStorage; | ||||
|     FSP_DEVICE_CONTEXT_BY_NAME_TABLE_ELEMENT ContextByNameElementStorage; | ||||
|     /* locked under FSP_FSVOL_DEVICE_EXTENSION::FileRenameResource */ | ||||
|     UNICODE_STRING FileName; | ||||
|   | ||||
| @@ -264,8 +264,8 @@ FSP_FILE_NODE *FspFileNodeOpen(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject, | ||||
|  | ||||
|     FspFsvolDeviceLockContextTable(FsvolDeviceObject); | ||||
|  | ||||
|     OpenedFileNode = FspFsvolDeviceInsertContext(FsvolDeviceObject, | ||||
|         FileNode->UserContext, FileNode, &FileNode->ContextElementStorage, &Inserted); | ||||
|     OpenedFileNode = FspFsvolDeviceInsertContextByName(FsvolDeviceObject, | ||||
|         &FileNode->FileName, FileNode, &FileNode->ContextByNameElementStorage, &Inserted); | ||||
|     ASSERT(0 != OpenedFileNode); | ||||
|  | ||||
|     if (Inserted) | ||||
| @@ -277,9 +277,6 @@ FSP_FILE_NODE *FspFileNodeOpen(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject, | ||||
|          */ | ||||
|         ASSERT(OpenedFileNode == FileNode); | ||||
|  | ||||
|         FspFsvolDeviceInsertContextByName(FsvolDeviceObject, | ||||
|             &FileNode->FileName, FileNode, &FileNode->ContextByNameElementStorage, 0); | ||||
|  | ||||
|         IoSetShareAccess(GrantedAccess, ShareAccess, FileObject, | ||||
|             &OpenedFileNode->ShareAccess); | ||||
|     } | ||||
| @@ -364,11 +361,7 @@ VOID FspFileNodeClose(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject, | ||||
|  | ||||
|     IoRemoveShareAccess(FileObject, &FileNode->ShareAccess); | ||||
|     if (0 == --FileNode->OpenCount) | ||||
|     { | ||||
|         FspFsvolDeviceDeleteContext(FsvolDeviceObject, FileNode->UserContext, &Deleted); | ||||
|         if (Deleted) | ||||
|             FspFsvolDeviceDeleteContextByName(FsvolDeviceObject, &FileNode->FileName, 0); | ||||
|     } | ||||
|         FspFsvolDeviceDeleteContextByName(FsvolDeviceObject, &FileNode->FileName, &Deleted); | ||||
|  | ||||
|     FspFsvolDeviceUnlockContextTable(FsvolDeviceObject); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user