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]));