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.Type3InputBuffer)->StartingVcn;
    RetrievalPointers = IrpContext->Irp->UserBuffer;
 
    MaxExtentCount = ((Stack->Parameters.DeviceIoControl.OutputBufferLength - sizeof(RetrievalPointers->ExtentCount) - sizeof(RetrievalPointers->StartingVcn)) / sizeof(RetrievalPointers->Extents[0]));