🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #5691

Re: Sectornummer wil maar tot 0x400000

#5691
From: Nicolas Barbier
Date: Sun, 02 Mar 2003 10:42
39 lines
2541 bytes
Jawade wrote:

> Hallo, ik heb een progje gemaakt die een sector uitprint,
> maar ik zit te tobben met grote getallen. Hij doet het
> goed tot 0x400000 maar daarna laat 'ie alleen maar sector
> 0 zien. Ik heb al vanalles geprobeerd, maar kom er maar
> niet uit.

(snip)

> int sectornumber;

Een int is bij de meeste x86 C compilers maar 32 bit.

>   int sectorsize = 512;

Weerom een int.

>   __int64 DistanceToMove = sectorsize*sectornumber;

int * int = int, die je dan in een __int64 steekt (ik veronderstel dat dat 
een 64 bit integer moet voorstellen).

Gevolg: je "DistanceToMove" wordt geclipt op 31 bits (signed int) - 9 bits 
(512 bytes per sector) = 22 bits. 1 << 22 = 0x400000. Daarboven wordt het 
negatief en daarom zal die Windows-functie waarschijnlijk sector 0 
teruggeven. Als je er maar genoeg boven gaat zal je wel terug ergens in de 
positieve getallen uitkomen, maar je zal nog steeds de sectoren onder 
0x400000 lezen.

Oplossing: maak een van die int's een __int64, bij voorkeur "sectornummer" 
aangezien je anders maar schijven tot 1TB kan benaderen (bij een 
sectorgrootte van 512 byte).

Debughint: je had de argumenten van "SetFilePointer" kunnen uitschrijven en 
dan had je gemerkt dat DistanceToMove geclipt wordt.

-- 
Nicolas Barbier
Technical Details
Message-ID: <3e61e038$0$23365$afc38c87@sisyphus.news.be.easynet.net>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!pd2nf1so.cg.shawcable.net!residential.shaw.ca!news-out.spamkiller.net!propagator2-maxim!propagator-maxim!feed.newsfeeds.com!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!easynews.net!newsfeed3.easynews.net!feed1.news.be.easynet.net!sisyphus.news.be.easynet.net!not-for-mail
References: <MPG.18cb47166e087a609896eb@news.nl.net>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,1b4f016c07ce5cda,start
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-03-02 02:43:33 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!pd2nf1so.cg.shawcable.net!residential.shaw.ca!news-out.spamkiller.net!propagator2-maxim!propagator-maxim!feed.newsfeeds.com!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!easynews.net!newsfeed3.easynews.net!feed1.news.be.easynet.net!sisyphus.news.be.easynet.net!not-for-mail
Message-ID: <3e61e038$0$23365$afc38c87@sisyphus.news.be.easynet.net>
From: Nicolas Barbier <anti@spam.invalid>
Subject: Re: Sectornummer wil maar tot 0x400000
Newsgroups: be.comp.programming
Date: Sun, 02 Mar 2003 11:42:06 +0100
References: <MPG.18cb47166e087a609896eb@news.nl.net>
User-Agent: KNode/0.6.1
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7Bit
Lines: 39
Organization: [ posted via Easynet Belgium ]
NNTP-Posting-Date: 02 Mar 2003 10:43:04 GMT
NNTP-Posting-Host: 213.193.182.76
X-Trace: 1046601784  23365 [::ffff:213.193.182.76]:32776
X-Complaints-To: abuse@be.easynet.net