ENGLISH page is here.
GET DinopSearchBar
サイト内検索:
HOME
VC++ TIPS
ダウンロード
DinopExifReader
DinopSearchBar
DinopSearchBar mini
DinopTabbingBar
for Firefox
大阪湾の生き物
甲子園浜の自然
甲子園浜の干潟
甲子園浜の水中
甲子園浜の野鳥
近畿の山々
植物図鑑
箕面マップ
水中機材
カメラ
ランキング
望遠鏡の世界
顕微鏡の世界
Googleのすべて
GoogleマップAPI
ニュース
読んだ本
日記
変な料理の作り方
遺伝子操作
論文紹介
デイトレード
自動売買でFX
ネットで小遣い稼ぎ
Solaris
電子工作
その他
問い合わせ
VC++用コード集
大阪湾の生き物
水中用機材
since:2000/11/15
dinopcom@gmail.com
www.dinop.comは
だいのっぷ・どっと・こむ
と読んでください。







« WAVファイルの再生 | メイン | ショートカットファイルかどうかの判別 »

ディスク容量取得(未公開情報使用)




解説


 Internet Explorer 5以上をインストールしている場合は、wininet.dllにNONAME指定で ディスク情報取得用の関数がエクスポートされている。ここではそれを利用して容量を取 得している。

 Microsoftが公開してない情報を利用しているため今後のOSなどでは動作しない可能性も ある。私は以下の環境でのみ動作確認をしている。
・Windows 95 OSR2.0+Internet Explorer 5.0
・Windows XP Professional SP2 + Internet Explorer 6.0 SP2
なおWindows 95 OSR 2.0+Internet Explorer 3.0では動作しないことも確認している。


ソースコード


#include "atlstr.h"

bool	Test()
{
	DWORDLONG	dlAvail;
	DWORDLONG	dlTotal;
	CAtlString	str;

	GetDiskInfo(_T("c:\\"),dlAvail,dlTotal);
	str.Format(_T("%I64d bytes\n%I64d bytes"),dlAvail,dlTotal);
	MessageBox(0,str,_T(""),0);

	return	true;
}


//
//	wininetのNONAME関数を利用したディスク空き容量取得関数
//
//IE5以上での動作は確認(Win95OSR2含)
//
//
//
bool	GetDiskInfo(LPCTSTR pszPath,DWORDLONG& dlAvail,DWORDLONG& dlTotal)
{
	DWORD	dwCluster;
	BOOL	fRet;
	HMODULE	hDLL;

	BOOL (WINAPI* pfnGetDiskInfoA)(LPTSTR pszPath,DWORD* pdwCluster,DWORDLONG* pdlAvail,DWORDLONG* pdlTotal);

	dlAvail = 0;
	dlTotal = 0;

	hDLL = ::LoadLibrary(_T("wininet.dll"));
	if(hDLL == NULL)
		return	false;

	(FARPROC&)pfnGetDiskInfoA = ::GetProcAddress(hDLL,(LPTSTR)102);
	if(pfnGetDiskInfoA == NULL)
	{
		::FreeLibrary(hDLL);
		return	false;
	}

	dwCluster = 0;
#ifdef _UNICODE
	CAtlStringA	strPath;
	strPath = pszPath;
	fRet = pfnGetDiskInfoA(strPath,&dwCluster,&dlAvail,&dlTotal);
#else
	fRet = pfnGetDiskInfoA(pszPath,&dwCluster,&dlAvail,&dlTotal);
#endif

	::FreeLibrary(hDLL);

	return	fRet ? true : false;
}








Copyright (c) 1999-2007 issei. All rights reserved. (運営者情報