Article View: japan.comp.lang.visual-c++
Article #56Re: [Q]2GB以上のディスクのクラスタサイズ取得方法
From: K.Takata
Date: Tue, 30 May 2000 00:00
Date: Tue, 30 May 2000 00:00
47 lines
2923 bytes
2923 bytes
K.Takata です。 Dairyo Gokan wrote: > 『GetDriveSpace()では、2GB以上のディスク容量を正しく取得できない > ので、Windows 95(OSR2)以降では、GetDriveSpaceEx()を使うように』と > いう記述は、MSDNのヘルプをはじめ、わりとよく目にします。 > > しかし、GetDriveSpaceEx()では ... > > クラスタ当たりのセクタ数 > セクタ当たりのバイト数 > ディスク上の空きクラスタの総数 > ディスク上のクラスタの総数 > > 等の情報が取得できません。 このうち後者の2つは、前者の2つが取得でき 2GB 以上のドライブに対して GetDiskFreeSpace() を実行した場合、 セクタあたりのバイト数だけは正しい値を返してきます。 問題はクラスタサイズですが、方法はいろいろとあります。 ただ Win95、Win95 OSR2以降、WinNT では場合分けをする必要が あり、API 一発で取得できないためなかなか面倒です。 Win9x の場合、ダイレクトディスクアクセスを使ってブートセクタの BPB を読みとる方法、int 21h Function 440Dh Minor Code 60h を 使う方法、int 21h Function 7302h(OSR2 以降)などがあります。 詳しくは <88uc53$han$1@newssv3.incl.ne.jp> から始まるスレッドを 参照してください。 WinNT4.0 の場合は知りません。Win2k では DeviceIoControl() で FSCTL_QUERY_FAT_BPB を指定すれば BPB が取得できそうです。 WinNT/2k 共にダイレクトディスクアクセスで BPB を読みとるという 方法もありますが。(どちらも FAT/FAT32 のみ?) NTFS のブートセクタには FAT 同様の BPB が書き込まれているの でしょうか? 識者の方ご教示ください。 ダイレクトディスクアクセスで BPB を取得する方法は、私の Web ページで公開している Read/Write FD でも使用しています。 ソース付きですがコメントはほとんどありませんので、参考に なるかは分かりませんが。 -- K.Takata E-mail : kentkt@anet.ne.jp URL : http://webs.to/ken/
Technical Details
Message-ID:
<39336473.51AB09E5@nifty.ne.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<39318C51.B3318E65@can.bekkoame.ne.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 110a07,f3b4c6dc95fdab7 X-Google-Attributes: gid110a07,public X-Google-Thread: 10a2c7,f3b4c6dc95fdab7 X-Google-Attributes: gid10a2c7,public From: "K.Takata" <k-takata@nifty.ne.jp> Subject: Re: [Q]2GB以上のディスクのクラスタサイズ取得方法 Date: 2000/05/30 Message-ID: <39336473.51AB09E5@nifty.ne.jp> X-Deja-AN: 629956471 Content-Transfer-Encoding: 7bit References: <39318C51.B3318E65@can.bekkoame.ne.jp> X-Accept-Language: en,pdf Content-Type: text/plain; charset=iso-2022-jp X-Complaints-To: usenet@mail.ecc.u-tokyo.ac.jp X-Trace: news.ecc.u-tokyo.ac.jp 959669317 27444 133.11.171.125 (30 May 2000 06:48:37 GMT) Organization: The University of Tokyo Mime-Version: 1.0 NNTP-Posting-Date: 30 May 2000 06:48:37 GMT Newsgroups: japan.comp.lang.visual-c++,fj.os.ms-windows.programming