Article View: be.comp.programming
Article #5691Re: Sectornummer wil maar tot 0x400000
From: Nicolas Barbier
Date: Sun, 02 Mar 2003 10:42
Date: Sun, 02 Mar 2003 10:42
39 lines
2541 bytes
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-mailReferences:
<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