DPRINT("FsDeviceInfo = %p\n", FsDeviceInfo);
if (*BufferLength < sizeof(FILE_FS_DEVICE_INFORMATION))
+ {
+ *BufferLength = sizeof(FILE_FS_DEVICE_INFORMATION);
return STATUS_BUFFER_OVERFLOW;
+ }
FsDeviceInfo->DeviceType = FILE_DEVICE_NAMED_PIPE;
FsDeviceInfo->Characteristics = 0;
- *BufferLength -= sizeof(FILE_FS_DEVICE_INFORMATION);
+ *BufferLength = sizeof(FILE_FS_DEVICE_INFORMATION);
DPRINT("NpfsQueryFsDeviceInformation() finished.\n");
DPRINT("FsAttributeInfo = %p\n", FsAttributeInfo);
if (*BufferLength < sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 8)
+ {
+ *BufferLength = (sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 8);
return STATUS_BUFFER_OVERFLOW;
+ }
FsAttributeInfo->FileSystemAttributes = FILE_CASE_PRESERVED_NAMES;
FsAttributeInfo->MaximumComponentNameLength = 255;
L"NPFS");
DPRINT("NpfsQueryFsAttributeInformation() finished.\n");
- *BufferLength -= (sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 8);
+ *BufferLength = (sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 8);
return STATUS_SUCCESS;
}
}
Irp->IoStatus.Status = Status;
- if (NT_SUCCESS(Status))
- Irp->IoStatus.Information = Stack->Parameters.QueryVolume.Length - BufferLength;
- else
- Irp->IoStatus.Information = 0;
+ Irp->IoStatus.Information = BufferLength;
+
IoCompleteRequest(Irp,
IO_NO_INCREMENT);