diff --git a/drivers/filesystems/cdfs/cdfs.h b/drivers/filesystems/cdfs/cdfs.h index dff86cec2e6..f5a81858344 100644 --- a/drivers/filesystems/cdfs/cdfs.h +++ b/drivers/filesystems/cdfs/cdfs.h @@ -170,6 +170,9 @@ typedef struct /* Notifications */ LIST_ENTRY NotifyList; PNOTIFY_SYNC NotifySync; + + /* Incremented on IRP_MJ_CREATE, decremented on IRP_MJ_CLEANUP */ + ULONG OpenHandleCount; } DEVICE_EXTENSION, *PDEVICE_EXTENSION, VCB, *PVCB; diff --git a/drivers/filesystems/cdfs/cleanup.c b/drivers/filesystems/cdfs/cleanup.c index 5ee39b1616d..10d7704636d 100644 --- a/drivers/filesystems/cdfs/cleanup.c +++ b/drivers/filesystems/cdfs/cleanup.c @@ -55,6 +55,8 @@ CdfsCleanupFile(PCDFS_IRP_CONTEXT IrpContext, return STATUS_SUCCESS; } + DeviceExt->OpenHandleCount--; + /* Notify about the cleanup */ FsRtlNotifyCleanup(DeviceExt->NotifySync, &(DeviceExt->NotifyList), diff --git a/drivers/filesystems/cdfs/create.c b/drivers/filesystems/cdfs/create.c index 6271893b679..de53b1e74a3 100644 --- a/drivers/filesystems/cdfs/create.c +++ b/drivers/filesystems/cdfs/create.c @@ -241,6 +241,8 @@ CdfsCreateFile(PDEVICE_OBJECT DeviceObject, CdfsCloseFile (DeviceExt, FileObject); return STATUS_NOT_A_DIRECTORY; } + + DeviceExt->OpenHandleCount++; } /* @@ -271,6 +273,7 @@ CdfsCreate( /* DeviceObject represents FileSystem instead of logical volume */ DPRINT("Opening file system\n"); IrpContext->Irp->IoStatus.Information = FILE_OPENED; + DeviceExt->OpenHandleCount++; return STATUS_SUCCESS; }