RE: [GD-Windows] retrieving the cluster size on xp
Brought to you by:
vexxed72
From: Carsten O. <car...@se...> - 2004-03-15 09:04:50
|
Your assumption about every FS using clusters is just plain wrong. I never had real problems with GetDiskFreeSpaceEx(). It may prove to be imprecise on 9x, but I've never seen it fail. If you're dealing with those values, be prepared to handle 1-sector clusters. Because there's such stuff as virtual filesystems. I think you're confusing clusters and sectors. And even sectors do not have to be bigger than 1 byte. There are plenty of schemes that handle allocations on 1-byte boundaries pretty well. And most filesystems do _not_ use linked lists of sectors. If you dig through some of the very fine literature on filesystem design, you'll see that the whole concept of clusters is arbitrary and a clear sign of a design that doesn't fit the amount of data it is trying to handle. Best regards, Carsten Orthbandt Founder + Development Director SEK SpieleEntwicklungsKombinat GmbH http://www.sek-ost.de Wenn ich Visionen habe, gehe ich zum Arzt. - Helmut Schmidt =20 > -----Original Message----- > From: gam...@li...=20 > [mailto:gam...@li...] On=20 > Behalf Of tweety > Sent: Monday, March 15, 2004 4:28 AM > To: gam...@li... > Subject: RE: [GD-Windows] retrieving the cluster size on xp >=20 >=20 > EVERY filesystem is divided in clusters, even CDFS/UDF and linux' > filesystems (reiserfs and... Whatever the normal one is=20 > called, I forgot :) > ), even if they're as small as 1 byte (I personally never=20 > heard of one). > That's because, when adding new parts to a file surrounded by=20 > 2 other files, > you need a way to tell the os where to look for the next part, and you > really can't add a LONGLONG (int64) after every byte... Even=20 > a rle-based > approach would be slow when updating. So they just stuff a=20 > "next pointer" > for each cluster (since most fss store the next pointer at=20 > the beginning, > the macimum number of files/folders/objects etc is limited). > I know deviceiocontrol works differently on w200x/xp, but I=20 > haven't been > able to find out anything but bytes/sector, and I still need=20 > sectors/cluster > or something. > So, now tell me why is it so wrong to expect a function that=20 > receives a path > within the system (on windows it could be an itemidlist) (the path is > required because of the mounting points in wnt+ and linux=20 > etc) and retrieve > the cluster size of that folder (or return false when it=20 > cannot)? I'm not > talking about an os-independent function, I'm talking about a=20 > wrapper of the > different methods to get the cluster size (that's now; if=20 > they would have > thaught of that sooner, they could have written a propper=20 > getclusersize from > the beginning). >=20 > About the null pointer: the first write of a function as=20 > esoteric as my > w9x-compatible getclustersize that uses vxds and=20 > deviceiocontrol really > isn't that centered at handling internally errors, I just=20 > step through it > with the debugger. And I just used the disk in "readonly"=20 > mode, I love my > hard disk too :)) >=20 > ---------------------------------- > Peace and love, > Tweety > mi...@sy... - twe...@us... > YahooID: tweety_04_01 >=20 >=20 >=20 > -----Original Message----- > From: gam...@li... > [mailto:gam...@li...] On Behalf Of > Carsten Orthbandt > Sent: March 14, 2004 6:43 PM > To: gam...@li... > Subject: RE: [GD-Windows] retrieving the cluster size on xp >=20 > Erm... Show me _one_ *.vxd on a NT based OS. There ain't none. > DeviceIoControl is _documented_ to be different on NT and 9x. > If you rely on specific behaviour for portable code, you're=20 > doomed. OTOH, > given the wide variety of filesystems on Win32 systems, why=20 > do you expect to > find something like a cluster size at all? Why should it matter? > You either write portable application code and shouldn't have=20 > to resort to > native OS constants. Or you write OS specific code and then=20 > you'll have to > face the differences. And you better know about them. > 9x and NT/2K/XP _are_ different platforms. System information=20 > easily tells > you that. Having nearly the same API on both of them is a=20 > mere convenience, > not a guarantee. >=20 > And: Your code crashes because CreateFile() returned NULL??? > You'd better learn proper error handling before messing with=20 > my hard disk... >=20 > Carsten Orthbandt > Founder + Development Director > SEK SpieleEntwicklungsKombinat GmbH > http://www.sek-ost.de >=20 > Wenn ich Visionen habe, gehe ich zum Arzt. - Helmut Schmidt >=20 >=20 > > -----Original Message----- > > From: gam...@li... > > [mailto:gam...@li...]=20 > On Behalf Of=20 > > tweety > > Sent: Sunday, March 14, 2004 10:37 PM > > To: gam...@li... > > Subject: RE: [GD-Windows] retrieving the cluster size on xp > >=20 > >=20 > > I didn't explain myself properly... I wrote some=20 > deviceiocontrol code=20 > > for wme/w98 and it craches because createfile on vmm32.vxd (or=20 > > whatever) returns null. > > Getdiskfreespace works properly on my machine (then again,=20 > I have 32k=20 > > and 4k clusters...). Still, there should be a function that=20 > works on=20 > > ALL windowses and that returns the cluster size. > >=20 > > ---------------------------------- > > Peace and love, > > Tweety > > mi...@sy... - twe...@us... > > YahooID: tweety_04_01 > >=20 > >=20 > >=20 > > -----Original Message----- > > From: gam...@li... > > [mailto:gam...@li...]=20 > On Behalf Of=20 > > Carsten Orthbandt > > Sent: March 14, 2004 3:58 AM > > To: gam...@li... > > Subject: RE: [GD-Windows] retrieving the cluster size on xp > >=20 > > I'd bet some money on your source being the reason for=20 > crashing. The=20 > > GetDiskFreeSpace API works fine for me on all flavours of Win32. I=20 > > don't think you'll crash XP calling this function, it's your app.=20 > > Generally, Win9x is much more forgiving when it comes to invalid=20 > > memory accesses than the WinNT siblings. Wich is actually a good=20 > > thing. > >=20 > > Carsten Orthbandt > > Founder + Development Director > > SEK SpieleEntwicklungsKombinat GmbH > > http://www.sek-ost.de > >=20 > > Wenn ich Visionen habe, gehe ich zum Arzt. - Helmut Schmidt > >=20 > >=20 > > > -----Original Message----- > > > From: gam...@li... > > > [mailto:gam...@li...] > > On Behalf Of > > > tweety > > > Sent: Sunday, March 14, 2004 5:02 AM > > > To: gam...@li... > > > Subject: RE: [GD-Windows] retrieving the cluster size on xp > > >=20 > > >=20 > > > Ok, I'll try it. Thanks. By the way, I did it in w98/me a=20 > long time=20 > > > ago, it just crashes on xp... :) You know, I find really sad that=20 > > > there's a function in *foxpro* to find the cluster size of > > a drive and > > > there's not ONE thing in the whole windows 32 api to return the=20 > > > cluster size reliably in all operating systems... Maybe=20 > longhorn?... > > >=20 > > > ---------------------------------- > > > Peace and love, > > > Tweety > > > mi...@sy... - twe...@us... > > > YahooID: tweety_04_01 > > >=20 > > > =20 > > >=20 > > > -----Original Message----- > > > From: gam...@li... > > > [mailto:gam...@li...] > > On Behalf Of > > > Simon O'Connor > > > Sent: March 13, 2004 5:06 PM > > > To: gam...@li... > > > Subject: RE: [GD-Windows] retrieving the cluster size on xp > > >=20 > > >=20 > > > Hi Tweety, > > >=20 > > >=20 > > > GetDiskFreeSpace() is supported on Windows XP, Windows=20 > 2000, Windows=20 > > > NT, Windows Me, Windows 98, Windows 95, and Windows Server 2003... > > >=20 > > > My comments about 9x were just addressing your preference for a=20 > > > portable method. > > >=20 > > >=20 > > > Cheers, > > >=20 > > > Simon O'Connor > > > Programmer @ Acclaim > > > & Microsoft DirectX MVP > > >=20 > > > > -----Original Message----- > > > > From: gam...@li... > > > > [mailto:gam...@li...] > > > On Behalf Of > > > > tweety > > > > Sent: 13 March 2004 21:55 > > > > To: gam...@li... > > > > Subject: RE: [GD-Windows] retrieving the cluster size on xp > > > >=20 > > > > I specified in the subject that I'm interested in=20 > finding out the=20 > > > > cluster size (it's not a hint, but not partitionmagic, I'm > > > just trying > > > > to find out the waste of space on my drive) on *xp*, not > > 9x/me. And > > > > I'd really, REALLY, REEEALY preffer not to go to the ddk... > > > >=20 > > > > ---------------------------------- > > > > Peace and love, > > > > Tweety > > > > mi...@sy... - twe...@us... > > > > YahooID: tweety_04_01 > > > >=20 > > > > =20 > > > >=20 > > > > -----Original Message----- > > > > From: gam...@li... > > > > [mailto:gam...@li...] > > > On Behalf Of > > > > Simon O'Connor > > > > Sent: March 13, 2004 4:42 PM > > > > To: gam...@li... > > > > Subject: RE: [GD-Windows] retrieving the cluster size on xp > > > >=20 > > > >=20 > > > > Hi Tweety, > > > >=20 > > > >=20 > > > > You can use GetDiskFreeSpace() to find the number of=20 > sectors per=20 > > > > cluster and the number of bytes per sector so simply > > > multiply them to > > > > find the size of a cluster. > > > >=20 > > > >=20 > > > > The docs for GetDiskFreeSpace() do mention that the > > returned sectors > > > > per cluster value can be inaccurate under Windows 9x/ME > > for drives > > > > with more than 64 sectors per cluster (the 80Gb drive in > > > this machine > > > > only has 8 per cluster so it might be a fairly unusual case). > > > >=20 > > > > This is probably only an issue for you if your > > application needs to > > > > use this for something more than a "hint" (e.g. if=20 > you're writing=20 > > > > something like PartitionMagic etc). If you do need the totally=20 > > > > accurate value, you could obtain the DDK and take a look at the=20 > > > > Win9x/Me specific FS_GetDiskInfo() function. > > > >=20 > > > > =20 > > > > Cheers, > > > > =20 > > > > Simon O'Connor > > > > Programmer @ Acclaim > > > > & Microsoft DirectX MVP > > > >=20 > > > >=20 > > > > ________________________________ > > > >=20 > > > > From: gam...@li... > > > > [mailto:gam...@li...] > > > On Behalf Of > > > > tweety > > > > Sent: 11 March 2004 23:39 > > > > To: gam...@li... > > > > Subject: [GD-Windows] retrieving the cluster size on xp > > > > =09 > > > > =09 > > > > Can someone please tell me how to get the cluster > > > allocation size in > > >=20 > > > > windowsxp? of course, a portable way is the best, but just > > > 2000/xp is > > > > fine. > > > > i searched the internet far and wide and all i could find > > is how to > > > > find it on fat16/12 partitions and on w95/98/xp. i looked at=20 > > > > deviceiocontrol's functions, but none seems to return the > > > cluster size > > > > or something that i could use... can you tell me? > > > > =20 > > > > ---------------------------------- > > > > Peace and love, > > > > Tweety > > > > mi...@sy... - twe...@us... > > > > YahooID: tweety_04_01 > > > > =09 > > > > =09 > > > >=20 > > > > --- > > > > Incoming mail is certified Virus Free. > > > > Checked by AVG anti-virus system=20 > (http://www.grisoft.com). > > > > Version: 6.0.596 / Virus Database: 379 - Release Date:=20 > > 26/02/2004 > > > > =09 > > > >=20 > > > >=20 > > > > --- > > > > Outgoing mail is certified Virus Free. > > > > Checked by AVG anti-virus system (http://www.grisoft.com). > > > > Version: 6.0.596 / Virus Database: 379 - Release Date:=20 > 26/02/2004 > > > > =20 > > > >=20 > > > >=20 > > > >=20 > > > > ------------------------------------------------------- > > > > This SF.Net email is sponsored by: IBM Linux Tutorials=20 > Free Linux=20 > > > > tutorial presented by Daniel Robbins, President and CEO=20 > of GenToo=20 > > > > technologies. Learn everything from fundamentals to system > > > >=20 > > >=20 > >=20 > = administration.http://ads.osdn.com/?ad_id=3D1470&alloc_id=3D3638&op=3Dcli= ck > > > > _______________________________________________ > > > > Gamedevlists-windows mailing list=20 > > > > Gam...@li... > > > >=20 > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > > > > Archives:=20 > > http://sourceforge.net/mailarchive/forum.php?forum_id=3D555 > > > >=20 > > > >=20 > > > >=20 > > > > ------------------------------------------------------- > > > > This SF.Net email is sponsored by: IBM Linux Tutorials=20 > Free Linux=20 > > > > tutorial presented by Daniel Robbins, President and CEO=20 > of GenToo=20 > > > > technologies. Learn everything from fundamentals to system > > > >=20 > > >=20 > >=20 > = administration.http://ads.osdn.com/?ad_id=3D1470&alloc_id=3D3638&op=3Dcli= ck > > > > _______________________________________________ > > > > Gamedevlists-windows mailing list=20 > > > > Gam...@li... > > > >=20 > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > > > > Archives:=20 > > http://sourceforge.net/mailarchive/forum.php?forum_id=3D555 > > > >=20 > > > > --- > > > > Incoming mail is certified Virus Free. > > > > Checked by AVG anti-virus system (http://www.grisoft.com). > > > > Version: 6.0.596 / Virus Database: 379 - Release Date:=20 > 26/02/2004 > > > > =20 > > > >=20 > > >=20 > > > --- > > > Outgoing mail is certified Virus Free. > > > Checked by AVG anti-virus system (http://www.grisoft.com). > > > Version: 6.0.596 / Virus Database: 379 - Release Date: 26/02/2004 > > > =20 > > >=20 > > >=20 > > >=20 > > > ------------------------------------------------------- > > > This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux=20 > > > tutorial presented by Daniel Robbins, President and CEO of GenToo=20 > > > technologies. Learn everything from fundamentals to system > > >=20 > >=20 > = administration.http://ads.osdn.com/?ad_id=3D1470&alloc_id=3D3638&op=3Dcli= ck > > > _______________________________________________ > > > Gamedevlists-windows mailing list > > > Gam...@li... > > > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > > > Archives:=20 > http://sourceforge.net/mailarchive/forum.php?forum_id=3D555 > > >=20 > > >=20 > > >=20 > > > ------------------------------------------------------- > > > This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux=20 > > > tutorial presented by Daniel Robbins, President and CEO of GenToo=20 > > > technologies. Learn everything from fundamentals to system > > >=20 > >=20 > = administration.http://ads.osdn.com/?ad_id=3D1470&alloc_id=3D3638&op=3Dcli= ck > > > _______________________________________________ > > > Gamedevlists-windows mailing list > > > Gam...@li... > > > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > > > Archives:=20 > http://sourceforge.net/mailarchive/forum.php?forum_id=3D555 > > >=20 > >=20 > >=20 > > ------------------------------------------------------- > > This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux=20 > > tutorial presented by Daniel Robbins, President and CEO of GenToo=20 > > technologies. Learn everything from fundamentals to system=20 > > administration.http://ads.osdn.com/?ad_id=1470&alloc_id638&op=3Dick > > _______________________________________________ > > Gamedevlists-windows mailing list > > Gam...@li... > > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > > Archives: > > http://sourceforge.net/mailarchive/forum.php?forum_idU5 > >=20 > >=20 > >=20 > > ------------------------------------------------------- > > This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux=20 > > tutorial presented by Daniel Robbins, President and CEO of GenToo=20 > > technologies. Learn everything from fundamentals to system=20 > > administration.http://ads.osdn.com/?ad_id=1470&alloc_id638&op=3Dick > > _______________________________________________ > > Gamedevlists-windows mailing list > > Gam...@li... > > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > > Archives: > > http://sourceforge.net/mailarchive/forum.php?forum_idU5 > >=20 >=20 >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: IBM Linux Tutorials Free=20 > Linux tutorial > presented by Daniel Robbins, President and CEO of GenToo=20 > technologies. Learn > everything from fundamentals to system > administration.http://ads.osdn.com/?ad_id=1470&alloc_id638&op=3Dick > _______________________________________________ > Gamedevlists-windows mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_idU5 >=20 >=20 >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: IBM Linux Tutorials > Free Linux tutorial presented by Daniel Robbins, President and CEO of > GenToo technologies. Learn everything from fundamentals to system > administration.http://ads.osdn.com/?ad_id=1470&alloc_id638&op=3Dick > _______________________________________________ > Gamedevlists-windows mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_idU5 >=20 |