2012-01-20 1 views

Répondre

7

La valeur de retour de cette fonction vous indique la nouvelle position. the documentation cite:

Si la fonction réussit et lpDistanceToMoveHigh est NULL, la valeur de retour est le DWORD faible du nouveau pointeur de fichier.

Remarque Si la fonction retourne une valeur autre que INVALID_SET_FILE_POINTER, l'appel à SetFilePointer a réussi. Vous n'avez pas besoin d'appeler GetLastError.

Si la fonction réussit et lpDistanceToMoveHigh n'est pas NULL, la valeur de retour est le DWORD faible du nouveau pointeur de fichier et lpDistanceToMoveHigh contient le haut DWORD ordre du nouveau pointeur fichier .

Si vous voulez découvrir l'emplacement actuel sans déplacer, puis passer une « méthode de déplacement » de FILE_CURRENT et une distance de zéro.

La documentation contient également un exemple d'intégration de cette fonction dans une fonction qui ne nécessite pas de diviser les parties supérieure et inférieure de la position en variables distinctes.

+0

... J'ai lu la documentation sur ce un bon 5 fois et n'a même pas vu cela. Merci monsieur, je vais aller prendre un café ... –

1

SetFilePointer renvoie le nouveau pointeur de fichier, mais ne fonctionne que pour les décalages de fichier < 4GB. Si vous souhaitez gérer des fichiers plus volumineux, utilisez SetFilePointerEx.

Si vous souhaitez simplement récupérer la position actuelle, utilisez FILE_CURRENT avec un décalage de zéro.

5

Vous pouvez utiliser:

high_dword = 0; 

low_dword = SetFilePointer(file, 0, &high_dword, FILE_CURRENT); 

pos = high_dword << 32 | low_dword