mirror of
https://github.com/reactos/reactos.git
synced 2025-07-27 21:22:24 +00:00
Fixed a bug FsdGetFsVolumeInformation().
The returned length was wrong. svn path=/trunk/; revision=2113
This commit is contained in:
parent
920ae420ee
commit
818f6c4bfc
1 changed files with 22 additions and 20 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: volume.c,v 1.11 2001/07/20 08:00:21 ekohl Exp $
|
/* $Id: volume.c,v 1.12 2001/07/28 10:12:36 hbirr Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -27,15 +27,17 @@ FsdGetFsVolumeInformation(PFILE_OBJECT FileObject,
|
||||||
PULONG BufferLength)
|
PULONG BufferLength)
|
||||||
{
|
{
|
||||||
ULONG LabelLength;
|
ULONG LabelLength;
|
||||||
|
|
||||||
DPRINT("FsdGetFsVolumeInformation()\n");
|
DPRINT("FsdGetFsVolumeInformation()\n");
|
||||||
DPRINT("FsVolumeInfo = %p\n", FsVolumeInfo);
|
DPRINT("FsVolumeInfo = %p\n", FsVolumeInfo);
|
||||||
DPRINT("BufferLength %lu\n", *BufferLength);
|
DPRINT("BufferLength %lu\n", *BufferLength);
|
||||||
DPRINT("Required length %lu\n", (sizeof(FILE_FS_VOLUME_INFORMATION) + LabelLength));
|
|
||||||
|
|
||||||
LabelLength = DeviceObject->Vpb->VolumeLabelLength;
|
LabelLength = DeviceObject->Vpb->VolumeLabelLength;
|
||||||
|
|
||||||
|
DPRINT("Required length %lu\n", (sizeof(FILE_FS_VOLUME_INFORMATION) + LabelLength*sizeof(WCHAR)));
|
||||||
DPRINT("LabelLength %lu\n", LabelLength);
|
DPRINT("LabelLength %lu\n", LabelLength);
|
||||||
|
DPRINT("Label %S\n", DeviceObject->Vpb->VolumeLabel);
|
||||||
|
|
||||||
/* FIXME: This does not work correctly! Why?? */
|
/* FIXME: This does not work correctly! Why?? */
|
||||||
// if (*BufferLength < (sizeof(FILE_FS_VOLUME_INFORMATION) + LabelLength));
|
// if (*BufferLength < (sizeof(FILE_FS_VOLUME_INFORMATION) + LabelLength));
|
||||||
// return(STATUS_BUFFER_OVERFLOW);
|
// return(STATUS_BUFFER_OVERFLOW);
|
||||||
|
@ -44,17 +46,17 @@ FsdGetFsVolumeInformation(PFILE_OBJECT FileObject,
|
||||||
FsVolumeInfo->VolumeSerialNumber = DeviceObject->Vpb->SerialNumber;
|
FsVolumeInfo->VolumeSerialNumber = DeviceObject->Vpb->SerialNumber;
|
||||||
FsVolumeInfo->VolumeLabelLength = LabelLength;
|
FsVolumeInfo->VolumeLabelLength = LabelLength;
|
||||||
wcscpy(FsVolumeInfo->VolumeLabel, DeviceObject->Vpb->VolumeLabel);
|
wcscpy(FsVolumeInfo->VolumeLabel, DeviceObject->Vpb->VolumeLabel);
|
||||||
|
|
||||||
/* dummy entries */
|
/* dummy entries */
|
||||||
FsVolumeInfo->VolumeCreationTime.QuadPart = 0;
|
FsVolumeInfo->VolumeCreationTime.QuadPart = 0;
|
||||||
FsVolumeInfo->SupportsObjects = FALSE;
|
FsVolumeInfo->SupportsObjects = FALSE;
|
||||||
|
|
||||||
DPRINT("Finished FsdGetFsVolumeInformation()\n");
|
DPRINT("Finished FsdGetFsVolumeInformation()\n");
|
||||||
|
|
||||||
*BufferLength -= (sizeof(FILE_FS_VOLUME_INFORMATION) + LabelLength);
|
*BufferLength -= (sizeof(FILE_FS_VOLUME_INFORMATION) + LabelLength * sizeof(WCHAR));
|
||||||
|
|
||||||
DPRINT("BufferLength %lu\n", *BufferLength);
|
DPRINT("BufferLength %lu\n", *BufferLength);
|
||||||
|
|
||||||
return(STATUS_SUCCESS);
|
return(STATUS_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,22 +69,22 @@ FsdGetFsAttributeInformation(PFILE_FS_ATTRIBUTE_INFORMATION FsAttributeInfo,
|
||||||
DPRINT("FsAttributeInfo = %p\n", FsAttributeInfo);
|
DPRINT("FsAttributeInfo = %p\n", FsAttributeInfo);
|
||||||
DPRINT("BufferLength %lu\n", *BufferLength);
|
DPRINT("BufferLength %lu\n", *BufferLength);
|
||||||
DPRINT("Required length %lu\n", (sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 6));
|
DPRINT("Required length %lu\n", (sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 6));
|
||||||
|
|
||||||
/* FIXME: This does not work correctly! Why?? */
|
/* FIXME: This does not work correctly! Why?? */
|
||||||
// if (*BufferLength < (sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 6));
|
// if (*BufferLength < (sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 6));
|
||||||
// return(STATUS_BUFFER_OVERFLOW);
|
// return(STATUS_BUFFER_OVERFLOW);
|
||||||
|
|
||||||
FsAttributeInfo->FileSystemAttributes =
|
FsAttributeInfo->FileSystemAttributes =
|
||||||
FILE_CASE_PRESERVED_NAMES | FILE_UNICODE_ON_DISK;
|
FILE_CASE_PRESERVED_NAMES | FILE_UNICODE_ON_DISK;
|
||||||
FsAttributeInfo->MaximumComponentNameLength = 255;
|
FsAttributeInfo->MaximumComponentNameLength = 255;
|
||||||
FsAttributeInfo->FileSystemNameLength = 6;
|
FsAttributeInfo->FileSystemNameLength = 6;
|
||||||
wcscpy(FsAttributeInfo->FileSystemName, L"FAT");
|
wcscpy(FsAttributeInfo->FileSystemName, L"FAT");
|
||||||
|
|
||||||
DPRINT("Finished FsdGetFsAttributeInformation()\n");
|
DPRINT("Finished FsdGetFsAttributeInformation()\n");
|
||||||
|
|
||||||
*BufferLength -= (sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 6);
|
*BufferLength -= (sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 6);
|
||||||
DPRINT("BufferLength %lu\n", *BufferLength);
|
DPRINT("BufferLength %lu\n", *BufferLength);
|
||||||
|
|
||||||
return(STATUS_SUCCESS);
|
return(STATUS_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,16 +96,16 @@ FsdGetFsSizeInformation(PDEVICE_OBJECT DeviceObject,
|
||||||
{
|
{
|
||||||
PDEVICE_EXTENSION DeviceExt;
|
PDEVICE_EXTENSION DeviceExt;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
DPRINT("FsdGetFsSizeInformation()\n");
|
DPRINT("FsdGetFsSizeInformation()\n");
|
||||||
DPRINT("FsSizeInfo = %p\n", FsSizeInfo);
|
DPRINT("FsSizeInfo = %p\n", FsSizeInfo);
|
||||||
|
|
||||||
/* FIXME: This does not work correctly! Why?? */
|
/* FIXME: This does not work correctly! Why?? */
|
||||||
// if (*BufferLength < sizeof(FILE_FS_SIZE_INFORMATION));
|
// if (*BufferLength < sizeof(FILE_FS_SIZE_INFORMATION));
|
||||||
// return(STATUS_BUFFER_OVERFLOW);
|
// return(STATUS_BUFFER_OVERFLOW);
|
||||||
|
|
||||||
DeviceExt = DeviceObject->DeviceExtension;
|
DeviceExt = DeviceObject->DeviceExtension;
|
||||||
|
|
||||||
if (DeviceExt->FatType == FAT32)
|
if (DeviceExt->FatType == FAT32)
|
||||||
{
|
{
|
||||||
struct _BootSector32 *BootSect =
|
struct _BootSector32 *BootSect =
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue