https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c79e5dc476a7041b018eba6eaf532f75d00be4f6
commit c79e5dc476a7041b018eba6eaf532f75d00be4f6 Author: Pierre Schweitzer <pie...@reactos.org> AuthorDate: Sun Aug 12 10:05:25 2018 +0200 Commit: Pierre Schweitzer <pie...@reactos.org> CommitDate: Sun Aug 12 10:05:25 2018 +0200 [KMTESTS:MM] Properly clean up files This fixes driver unloading on Windows. ROSTESTS-266 --- modules/rostests/kmtests/ntos_mm/NtCreateSection_drv.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/rostests/kmtests/ntos_mm/NtCreateSection_drv.c b/modules/rostests/kmtests/ntos_mm/NtCreateSection_drv.c index 45f20b5e85..a547207f21 100644 --- a/modules/rostests/kmtests/ntos_mm/NtCreateSection_drv.c +++ b/modules/rostests/kmtests/ntos_mm/NtCreateSection_drv.c @@ -413,13 +413,16 @@ TestIrpHandler( { Fcb = IoStack->FileObject->FsContext; ok(Fcb != NULL, "Null pointer!\n"); - if (IoStack->FileObject->SectionObjectPointer != NULL && - IoStack->FileObject->SectionObjectPointer->SharedCacheMap != NULL) + if (IoStack->FileObject->SectionObjectPointer != NULL) { LARGE_INTEGER Zero = RTL_CONSTANT_LARGE_INTEGER(0LL); - CcFlushCache(&Fcb->SectionObjectPointers, NULL, 0, NULL); - CcPurgeCacheSection(&Fcb->SectionObjectPointers, NULL, 0, FALSE); + if (CcIsFileCached(IoStack->FileObject)) + { + CcFlushCache(&Fcb->SectionObjectPointers, NULL, 0, NULL); + CcPurgeCacheSection(&Fcb->SectionObjectPointers, NULL, 0, FALSE); + } + KeInitializeEvent(&CacheUninitEvent.Event, NotificationEvent, FALSE); CcUninitializeCacheMap(IoStack->FileObject, &Zero, &CacheUninitEvent); KeWaitForSingleObject(&CacheUninitEvent.Event, Executive, KernelMode, FALSE, NULL);