mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-08 21:12:15 -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 */
|
/* locked under FSP_FSVOL_DEVICE_EXTENSION::ContextTableResource */
|
||||||
LONG OpenCount;
|
LONG OpenCount;
|
||||||
SHARE_ACCESS ShareAccess;
|
SHARE_ACCESS ShareAccess;
|
||||||
FSP_DEVICE_CONTEXT_TABLE_ELEMENT ContextElementStorage;
|
|
||||||
FSP_DEVICE_CONTEXT_BY_NAME_TABLE_ELEMENT ContextByNameElementStorage;
|
FSP_DEVICE_CONTEXT_BY_NAME_TABLE_ELEMENT ContextByNameElementStorage;
|
||||||
/* locked under FSP_FSVOL_DEVICE_EXTENSION::FileRenameResource */
|
/* locked under FSP_FSVOL_DEVICE_EXTENSION::FileRenameResource */
|
||||||
UNICODE_STRING FileName;
|
UNICODE_STRING FileName;
|
||||||
|
@ -264,8 +264,8 @@ FSP_FILE_NODE *FspFileNodeOpen(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject,
|
|||||||
|
|
||||||
FspFsvolDeviceLockContextTable(FsvolDeviceObject);
|
FspFsvolDeviceLockContextTable(FsvolDeviceObject);
|
||||||
|
|
||||||
OpenedFileNode = FspFsvolDeviceInsertContext(FsvolDeviceObject,
|
OpenedFileNode = FspFsvolDeviceInsertContextByName(FsvolDeviceObject,
|
||||||
FileNode->UserContext, FileNode, &FileNode->ContextElementStorage, &Inserted);
|
&FileNode->FileName, FileNode, &FileNode->ContextByNameElementStorage, &Inserted);
|
||||||
ASSERT(0 != OpenedFileNode);
|
ASSERT(0 != OpenedFileNode);
|
||||||
|
|
||||||
if (Inserted)
|
if (Inserted)
|
||||||
@ -277,9 +277,6 @@ FSP_FILE_NODE *FspFileNodeOpen(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject,
|
|||||||
*/
|
*/
|
||||||
ASSERT(OpenedFileNode == FileNode);
|
ASSERT(OpenedFileNode == FileNode);
|
||||||
|
|
||||||
FspFsvolDeviceInsertContextByName(FsvolDeviceObject,
|
|
||||||
&FileNode->FileName, FileNode, &FileNode->ContextByNameElementStorage, 0);
|
|
||||||
|
|
||||||
IoSetShareAccess(GrantedAccess, ShareAccess, FileObject,
|
IoSetShareAccess(GrantedAccess, ShareAccess, FileObject,
|
||||||
&OpenedFileNode->ShareAccess);
|
&OpenedFileNode->ShareAccess);
|
||||||
}
|
}
|
||||||
@ -364,11 +361,7 @@ VOID FspFileNodeClose(FSP_FILE_NODE *FileNode, PFILE_OBJECT FileObject,
|
|||||||
|
|
||||||
IoRemoveShareAccess(FileObject, &FileNode->ShareAccess);
|
IoRemoveShareAccess(FileObject, &FileNode->ShareAccess);
|
||||||
if (0 == --FileNode->OpenCount)
|
if (0 == --FileNode->OpenCount)
|
||||||
{
|
FspFsvolDeviceDeleteContextByName(FsvolDeviceObject, &FileNode->FileName, &Deleted);
|
||||||
FspFsvolDeviceDeleteContext(FsvolDeviceObject, FileNode->UserContext, &Deleted);
|
|
||||||
if (Deleted)
|
|
||||||
FspFsvolDeviceDeleteContextByName(FsvolDeviceObject, &FileNode->FileName, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
FspFsvolDeviceUnlockContextTable(FsvolDeviceObject);
|
FspFsvolDeviceUnlockContextTable(FsvolDeviceObject);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user