システムで利用可能なドライブ名を調べるには次の関数を使います。(戻る)
- ドライブのビットで取得(GetLogicalDrives)
- ドライブの文字列で取得(GetLogicalDriveStrings)
GetLogicalDrives 関数は DWORD 型のビットデータを戻り値で返します。
GetLogicalDriveStrings 関数は文字列で有効なドライブ名を返します。
このインターフェイスの違いだけで同じ機能です。
プロトタイプ宣言
DWORD GetLogicalDrives( VOID ); DWORD GetLogicalDriveStrings( DWORD nSize, // バッファ領域のサイズ LPTSTR lpBuff // バッファ領域のポインタ );
サンプル
#include <stdio.h> #include <string.h> #include <windows.h> // メイン関数 int main( void ) { TCHAR szBuff[ 128 ]; // 最低でも(4 * 26 + 1)バイト以上 LPTSTR lpSeek; DWORD dwDrive; INT nDrive; // ドライブのビットで取得 printf( TEXT("GetLogicalDrives()関数のテスト\n") ); printf( TEXT("\n") ); dwDrive = GetLogicalDrives(); for ( nDrive = 0 ; nDrive < 26 ; nDrive++ ){ if ( dwDrive & (1 << nDrive) ){ printf( TEXT("%c:\\\n"), (nDrive + TEXT('A')) ); } } printf( TEXT("\n") ); // ドライブの文字列で取得 printf( TEXT("GetLogicalDriveStrings()関数のテスト\n") ); printf( TEXT("\n") ); GetLogicalDriveStrings( sizeof(szBuff), szBuff ); for ( lpSeek = szBuff ; *lpSeek != TEXT('\0') ; lpSeek++ ){ printf( TEXT("%s\n"), lpSeek ); lpSeek += strlen( lpSeek ); } printf( TEXT("\n") ); return 0; }
実行結果
GetLogicalDrives()関数のテスト C:\ D:\ E:\ F:\ G:\ H:\ I:\ Z:\ GetLogicalDriveStrings()関数のテスト C:\ D:\ E:\ F:\ G:\ H:\ I:\ Z:\
- 私の環境ではFDD(フロッピー・ディスク・ドライブ)が存在しないので A: B: は表示されない。
- パソコンに内蔵されたHDD(ハードディスク・ドライブ)が2つに分かれてるので C: D: が表示されます。
- また、外付けで小型のHDD(ハードディスク・ドライブ)を2つ接続してるので F: G: も表示されます。
- あと、USBフラッシュ・メモリを2つ接続してるので H: I: が表示されます。
- 最後の Z: は C: ドライブのフォルダを SUBST コマンドで仮想ドライブ化してるので表示されます。
関連記事
- ディスク情報の取得
- ディスク容量の取得(1)
- ディスク容量の取得(2)
- ドライブの種類を調べる
- 有効なドライブ名を調べる
※コメント投稿者のブログIDはブログ作成者のみに通知されます