From b591015b28a535e115def232b67fe879b986e7c6 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Wed, 28 Sep 2016 16:59:39 -0700 Subject: [PATCH] tst: memfs: Cleanup: remove all named streams on delete --- tst/memfs/memfs.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tst/memfs/memfs.cpp b/tst/memfs/memfs.cpp index c721091d..9d7bf8a1 100644 --- a/tst/memfs/memfs.cpp +++ b/tst/memfs/memfs.cpp @@ -518,6 +518,14 @@ NTSTATUS Overwrite(FSP_FILE_SYSTEM *FileSystem, 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, FSP_FSCTL_TRANSACT_REQ *Request, 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 */ if (Delete && !MemfsFileNodeMapHasChild(Memfs->FileNodeMap, FileNode)) + { + MemfsFileNodeMapEnumerateNamedStreams(Memfs->FileNodeMap, FileNode, CleanupEnumFn, Memfs); MemfsFileNodeMapRemove(Memfs->FileNodeMap, FileNode); + } } static VOID Close(FSP_FILE_SYSTEM *FileSystem,