¿Te fijaste ya que devolvia GetLastError?
Note that if the return value is INVALID_FILE_SIZE (0xffffffff), an application must call GetLastError to determine whether the function has succeeded or failed. The reason the function may appear to fail when it has not is that lpFileSizeHigh could be non-NULL or the file size could be 0xffffffff.
¿Y si usas directamente GetFileSizeEx? Esta disponible en XP.
PD. El tamaño del archivo se corresponde con el EndofFile y no con el AllocationSize (eso corresponde con el tamaño que ocupa en disco, es decir redondeado en clusters).
Note that if the return value is INVALID_FILE_SIZE (0xffffffff), an application must call GetLastError to determine whether the function has succeeded or failed. The reason the function may appear to fail when it has not is that lpFileSizeHigh could be non-NULL or the file size could be 0xffffffff.
¿Y si usas directamente GetFileSizeEx? Esta disponible en XP.
PD. El tamaño del archivo se corresponde con el EndofFile y no con el AllocationSize (eso corresponde con el tamaño que ocupa en disco, es decir redondeado en clusters).