diff --git a/src/sys/cleanup.c b/src/sys/cleanup.c index dd773b89..1fcce372 100644 --- a/src/sys/cleanup.c +++ b/src/sys/cleanup.c @@ -22,16 +22,8 @@ FspCleanup( ASSERT(IRP_MJ_CLEANUP == IrpSp->MajorFunction); if (FspFileSystemDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind) - { - Result = STATUS_SUCCESS; - Irp->IoStatus.Status = Result; - Irp->IoStatus.Information = 0; - IoCompleteRequest(Irp, FSP_IO_INCREMENT); - FSP_RETURN(); - } + FSP_RETURN(Irp->IoStatus.Information = 0); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/close.c b/src/sys/close.c index fa7c1cae..898d6e60 100644 --- a/src/sys/close.c +++ b/src/sys/close.c @@ -22,16 +22,8 @@ FspClose( ASSERT(IRP_MJ_CLOSE == IrpSp->MajorFunction); if (FspFileSystemDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind) - { - Result = STATUS_SUCCESS; - Irp->IoStatus.Status = Result; - Irp->IoStatus.Information = 0; - IoCompleteRequest(Irp, FSP_IO_INCREMENT); - FSP_RETURN(); - } + FSP_RETURN(Irp->IoStatus.Information = 0); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/create.c b/src/sys/create.c index f8cb76a0..5d8d7227 100644 --- a/src/sys/create.c +++ b/src/sys/create.c @@ -22,16 +22,8 @@ FspCreate( ASSERT(IRP_MJ_CREATE == IrpSp->MajorFunction); if (FspFileSystemDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind) - { - Result = STATUS_SUCCESS; - Irp->IoStatus.Status = Result; - Irp->IoStatus.Information = FILE_OPENED; - IoCompleteRequest(Irp, FSP_IO_INCREMENT); - FSP_RETURN(); - } + FSP_RETURN(Irp->IoStatus.Information = FILE_OPENED); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ( diff --git a/src/sys/devctrl.c b/src/sys/devctrl.c index 708221dc..132d7bd9 100644 --- a/src/sys/devctrl.c +++ b/src/sys/devctrl.c @@ -21,8 +21,6 @@ FspDeviceControl( ASSERT(IRP_MJ_DEVICE_CONTROL == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/dirctrl.c b/src/sys/dirctrl.c index 771bf5b3..1f813e9b 100644 --- a/src/sys/dirctrl.c +++ b/src/sys/dirctrl.c @@ -21,8 +21,6 @@ FspDirectoryControl( ASSERT(IRP_MJ_DIRECTORY_CONTROL == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/driver.h b/src/sys/driver.h index e66d9b7a..64022665 100644 --- a/src/sys/driver.h +++ b/src/sys/driver.h @@ -61,16 +61,22 @@ PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); (void)IrpSp;\ FSP_ENTER_(__VA_ARGS__) #define FSP_LEAVE_MJ(fmt, ...) \ - FSP_LEAVE_(FSP_DEBUGLOG_("%c%c, %s%s, IrpSp->Flags=%x, " fmt, " = %s",\ - FspDeviceExtension(DeviceObject)->Kind,\ - Irp->RequestorMode == KernelMode ? 'K' : 'U',\ - IrpMajorFunctionSym(IrpSp->MajorFunction),\ - IrpMinorFunctionSym(IrpSp->MajorFunction, IrpSp->MajorFunction),\ - IrpSp->Flags, \ - __VA_ARGS__, \ - NtStatusSym(Result)); \ + FSP_LEAVE_( \ + FSP_DEBUGLOG_("%c%c, %s%s, IrpSp->Flags=%x, " fmt, " = %s",\ + FspDeviceExtension(DeviceObject)->Kind,\ + Irp->RequestorMode == KernelMode ? 'K' : 'U',\ + IrpMajorFunctionSym(IrpSp->MajorFunction),\ + IrpMinorFunctionSym(IrpSp->MajorFunction, IrpSp->MajorFunction),\ + IrpSp->Flags, \ + __VA_ARGS__, \ + NtStatusSym(Result)); \ if (STATUS_PENDING != Result) \ - IoCompleteRequest(Irp, FSP_IO_INCREMENT));\ + { \ + if (!NT_SUCCESS(Result)) \ + Irp->IoStatus.Information = 0;\ + Irp->IoStatus.Status = Result;\ + IoCompleteRequest(Irp, FSP_IO_INCREMENT);\ + }); \ return Result #define FSP_ENTER_BOOL(...) \ BOOLEAN Result = TRUE; FSP_ENTER_(__VA_ARGS__) diff --git a/src/sys/ea.c b/src/sys/ea.c index dd74890e..d3754e36 100644 --- a/src/sys/ea.c +++ b/src/sys/ea.c @@ -23,8 +23,6 @@ FspQueryEa( ASSERT(IRP_MJ_QUERY_EA == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); @@ -39,8 +37,6 @@ FspSetEa( ASSERT(IRP_MJ_SET_EA == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/fileinfo.c b/src/sys/fileinfo.c index ff70335d..bbd613d2 100644 --- a/src/sys/fileinfo.c +++ b/src/sys/fileinfo.c @@ -23,8 +23,6 @@ FspQueryInformation( ASSERT(IRP_MJ_QUERY_INFORMATION == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); @@ -39,8 +37,6 @@ FspSetInformation( ASSERT(IRP_MJ_SET_INFORMATION == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/flush.c b/src/sys/flush.c index 8284949d..76c5204b 100644 --- a/src/sys/flush.c +++ b/src/sys/flush.c @@ -21,8 +21,6 @@ FspFlushBuffers( ASSERT(IRP_MJ_FLUSH_BUFFERS == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/fsctrl.c b/src/sys/fsctrl.c index 6a1adf53..157efcf3 100644 --- a/src/sys/fsctrl.c +++ b/src/sys/fsctrl.c @@ -21,8 +21,6 @@ FspFileSystemControl( ASSERT(IRP_MJ_FILE_SYSTEM_CONTROL == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/lockctrl.c b/src/sys/lockctrl.c index 32bbc35f..f9ccf12a 100644 --- a/src/sys/lockctrl.c +++ b/src/sys/lockctrl.c @@ -21,8 +21,6 @@ FspLockControl( ASSERT(IRP_MJ_LOCK_CONTROL == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/read.c b/src/sys/read.c index 680a9fc0..7e8d0778 100644 --- a/src/sys/read.c +++ b/src/sys/read.c @@ -21,8 +21,6 @@ FspRead( ASSERT(IRP_MJ_READ == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/security.c b/src/sys/security.c index 19bfa2a7..011182fc 100644 --- a/src/sys/security.c +++ b/src/sys/security.c @@ -23,8 +23,6 @@ FspQuerySecurity( ASSERT(IRP_MJ_QUERY_SECURITY == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); @@ -39,8 +37,6 @@ FspSetSecurity( ASSERT(IRP_MJ_SET_SECURITY == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/shutdown.c b/src/sys/shutdown.c index c692947d..fb06b3a1 100644 --- a/src/sys/shutdown.c +++ b/src/sys/shutdown.c @@ -21,8 +21,6 @@ FspShutdown( ASSERT(IRP_MJ_SHUTDOWN == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/volinfo.c b/src/sys/volinfo.c index fbfa3242..79c55a74 100644 --- a/src/sys/volinfo.c +++ b/src/sys/volinfo.c @@ -23,8 +23,6 @@ FspQueryVolumeInformation( ASSERT(IRP_MJ_QUERY_VOLUME_INFORMATION == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); @@ -39,8 +37,6 @@ FspSetVolumeInformation( ASSERT(IRP_MJ_SET_VOLUME_INFORMATION == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0); diff --git a/src/sys/write.c b/src/sys/write.c index 386b352c..b0451777 100644 --- a/src/sys/write.c +++ b/src/sys/write.c @@ -21,8 +21,6 @@ FspWrite( ASSERT(IRP_MJ_WRITE == IrpSp->MajorFunction); - Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; - IoCompleteRequest(Irp, IO_NO_INCREMENT); Result = STATUS_INVALID_DEVICE_REQUEST; FSP_LEAVE_MJ("", 0);