mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 17:03:12 -05:00
sys: FileNodes are now registered only in the ContextByNameTable; the ContextTable can be removed if desired
This commit is contained in:
parent
6c94eb3398
commit
2a567effbf
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user