Input parameter in FSCTL_GET_RETRIEVAL_POINTERS is really a
STARTING_VCN_INPUT_BUFFER structure (even if it contains only a
LARGE_INTEGER)
Modified: trunk/reactos/drivers/fs/vfat/fsctl.c
_____
Modified: trunk/reactos/drivers/fs/vfat/fsctl.c
--- trunk/reactos/drivers/fs/vfat/fsctl.c 2005-08-11 21:25:28 UTC
(rev 17318)
+++ trunk/reactos/drivers/fs/vfat/fsctl.c 2005-08-11 21:29:37 UTC
(rev 17319)
@@ -704,7 +704,7 @@
DeviceExt = IrpContext->DeviceExt;
FileObject = IrpContext->FileObject;
Stack = IrpContext->Stack;
- if (Stack->Parameters.DeviceIoControl.InputBufferLength <
sizeof(LARGE_INTEGER) ||
+ if (Stack->Parameters.DeviceIoControl.InputBufferLength <
sizeof(STARTING_VCN_INPUT_BUFFER) ||
Stack->Parameters.DeviceIoControl.Type3InputBuffer == NULL)
{
return STATUS_INVALID_PARAMETER;
@@ -719,7 +719,7 @@
ExAcquireResourceSharedLite(&Fcb->MainResource, TRUE);
- Vcn =
*(PLARGE_INTEGER)Stack->Parameters.DeviceIoControl.Type3InputBuffer;
+ Vcn =
((PSTARTING_VCN_INPUT_BUFFER)Stack->Parameters.DeviceIoControl.Type3Inpu
tBuffer)->StartingVcn;
RetrievalPointers = IrpContext->Irp->UserBuffer;
MaxExtentCount =
((Stack->Parameters.DeviceIoControl.OutputBufferLength -
sizeof(RetrievalPointers->ExtentCount) -
sizeof(RetrievalPointers->StartingVcn)) /
sizeof(RetrievalPointers->Extents[0]));