現在利用可能なディスクドライブを取得するには、GetLogicalDrives()関数を呼び出します。 関数が成功すると、現在利用可能なディスクドライブを表すビットマスクが返ります。 ビット 0(最下位ビット)はドライブ A、ビット 1 はドライブ B、ビット 2 はドライブ C を示し、以降は同じように25ビットのZドライブまでの情報が取得できます。
#include <stdio.h>
#include <tchar.h>
#include <locale.h>
#include <windows.h>
int _tmain
(
int argc
, _TCHAR* argv[]
)
{
/*
ロケールを日本に設定
これを設定するだけで、標準出力に日本語が表示される
ようになります。
*/
setlocale( LC_ALL, "Japanese" );
// 現在利用可能な論理ドライブをビットマスクで取得する
DWORD dwLogicalDrives = ::GetLogicalDrives();
// 利用可能なドライブを標準出力へ表示する
for ( int iI = 0; iI < 26; iI++ ) {
if ( 0 != ( ( 1 << iI ) & dwLogicalDrives ) ) {
wprintf_s( _T("%c, "), 'A' + iI );
}
}
// 正常終了
return( 0 );
}
C, D, F,