sys: FileNodes are now registered only in the ContextByNameTable; the ContextTable can be removed if desired

This commit is contained in:
Bill Zissimopoulos 2016-02-09 11:38:32 -08:00
parent 6c94eb3398
commit 2a567effbf
2 changed files with 3 additions and 11 deletions

View File

@ -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;

View File

@ -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);