🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: japan.comp.lang.visual-c++
Article #56

Re: [Q]2GB以上のディスクのクラスタサイズ取得方法

#56
From: K.Takata
Date: Tue, 30 May 2000 00:00
47 lines
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-mail
References: <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