diff --git a/src/sys/fsctl.c b/src/sys/fsctl.c index 781052d3..38ce0e75 100644 --- a/src/sys/fsctl.c +++ b/src/sys/fsctl.c @@ -94,12 +94,13 @@ static NTSTATUS FspFsctlFileSystemControl( if (0 != IrpSp->FileObject->FsContext2) Result = FspVolumeStop(FsctlDeviceObject, Irp, IrpSp); break; - case 0: - /* ensure that 0 != IrpSp->Parameters.FileSystemControl.FsControlCode in default: case */ - break; default: - if (0 != IrpSp->FileObject->FsContext2) - Result = FspVolumeTransactFsext(FsctlDeviceObject, Irp, IrpSp); + if (CTL_CODE(0, 0xC00, 0, 0) == + (IrpSp->Parameters.FileSystemControl.FsControlCode & CTL_CODE(0, 0xC00, 0, 0))) + { + if (0 != IrpSp->FileObject->FsContext2) + Result = FspVolumeTransactFsext(FsctlDeviceObject, Irp, IrpSp); + } break; } break; diff --git a/src/sys/volume.c b/src/sys/volume.c index 5f781520..72bbfc4d 100644 --- a/src/sys/volume.c +++ b/src/sys/volume.c @@ -924,6 +924,8 @@ NTSTATUS FspVolumeTransactFsext( ASSERT(IRP_MJ_FILE_SYSTEM_CONTROL == IrpSp->MajorFunction); ASSERT(IRP_MN_USER_FS_REQUEST == IrpSp->MinorFunction); + ASSERT(CTL_CODE(0, 0xC00, 0, 0) == + (IrpSp->Parameters.FileSystemControl.FsControlCode & CTL_CODE(0, 0xC00, 0, 0))); ASSERT(0 != IrpSp->FileObject->FsContext2); PDEVICE_OBJECT FsvolDeviceObject = IrpSp->FileObject->FsContext2;