Struktura LARGE_INTEGER - windows

0

Witam,
studiuję funkcje dot. m.in. plików w windows-ie i mam pytanie o strukturę LARGE_INTEGER, którą się dość często wykorzystuje.
Otóż składa się ona z dwóch 32 bitowych zmiennych, jedna typu DWORD LowPart a druga typu LONG HighPart no i zastanawiam się jak się ją powinno wykorzystywać - czym są LowPart i HighPart? Dlaczego jedna jest ze znakiem a druga bez?
W dodatku ze znakiem to jest HighPart, która kojarzy mi się z taką... większą - czyli np. jakbym chciał operować na liczbach > 32 bity.

No i mam dylemat, czy jeśli chcę np. cofnąć wskaźnik pliku funkcją CreateFile o 10 to powinienem w omawianej strukturze, w zmiennej HighPart wprowadzić -10 (bo przecież LowPart jest bez znaku).
No i jest jeszcze "zmienna" QuadPart (chociaż ona chyba nie do końca jest "zmienną"). Czy w programach 32 bitowych mogę operować na tej zmiennej zamiast bawić się w rozszyfrowanie tych dwóch poprzednich? Na razie nie zauważyłem żadnych błędów z tym związanych, ale po prostu tego nie rozumiem i boję się błędów w przyszłości...

Z góry dzięki za pomoc!

1

To jest zwykła zmienna 64 bitowa rozbita na dwie 32 bitowe.
Wykorzystywane to na wypadek gdyby twój kompilator nie znał liczb 64-bitowych.

0
_13th_Dragon napisał(a):

To jest zwykła zmienna 64 bitowa rozbita na dwie 32 bitowe.
Wykorzystywane to na wypadek gdyby twój kompilator nie znał liczb 64-bitowych.

No tak, ale jak to wykorzystywać? Jeśli chcę np. przesunąć wskaźnik pliku do przodu lub do tyłu funkcją CreateFile to którą zmienną powinienem ustawić?
Bo jeśli ustawię QuadPart to zmienne High i Low ustawiają mi się na jakieś kosmiczne wartości.
Gdy ustawię High lub Low to z kolei Quad ustawia mi się na jakąś kosmiczną wartość.
Natomiast jeśli chcę ustawić wskaźnik pliku do tyłu to muszę podać wartość ujemną - ale której zmiennej? High czy Quad?

1

Używaj tylko QuadPart no chyba że nie masz LONGLONG.
Żadne tam kosmiczne wartości, jedynie powinieneś ogarnąć system kodowania U2.

1 użytkowników online, w tym zalogowanych: 0, gości: 1