tst: memfs: Cleanup: remove all named streams on delete

This commit is contained in:
Bill Zissimopoulos 2016-09-28 16:59:39 -07:00
parent fb9b798d3d
commit b591015b28

View File

@ -518,6 +518,14 @@ NTSTATUS Overwrite(FSP_FILE_SYSTEM *FileSystem,
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
static BOOLEAN CleanupEnumFn(MEMFS_FILE_NODE *FileNode, PVOID Context0)
{
MEMFS *Memfs = (MEMFS *)Context0;
MemfsFileNodeMapRemove(Memfs->FileNodeMap, FileNode);
return TRUE;
}
static VOID Cleanup(FSP_FILE_SYSTEM *FileSystem, static VOID Cleanup(FSP_FILE_SYSTEM *FileSystem,
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_REQ *Request,
PVOID FileNode0, PWSTR FileName, BOOLEAN Delete) PVOID FileNode0, PWSTR FileName, BOOLEAN Delete)
@ -529,7 +537,10 @@ static VOID Cleanup(FSP_FILE_SYSTEM *FileSystem,
assert(Delete); /* the new FSP_FSCTL_VOLUME_PARAMS::PostCleanupOnDeleteOnly ensures this */ assert(Delete); /* the new FSP_FSCTL_VOLUME_PARAMS::PostCleanupOnDeleteOnly ensures this */
if (Delete && !MemfsFileNodeMapHasChild(Memfs->FileNodeMap, FileNode)) if (Delete && !MemfsFileNodeMapHasChild(Memfs->FileNodeMap, FileNode))
{
MemfsFileNodeMapEnumerateNamedStreams(Memfs->FileNodeMap, FileNode, CleanupEnumFn, Memfs);
MemfsFileNodeMapRemove(Memfs->FileNodeMap, FileNode); MemfsFileNodeMapRemove(Memfs->FileNodeMap, FileNode);
}
} }
static VOID Close(FSP_FILE_SYSTEM *FileSystem, static VOID Close(FSP_FILE_SYSTEM *FileSystem,