GetLogicalDrives
ビットマスクを返し、それを検査するにはビット演算子を使用する必要があります。ドライブAが使用されているかどうかを確認するには:
GetLogicalDrives() & 1 == 1
ドライブAが使用できない場合、GetLogicalDrives() & 1
降伏0
し、条件は失敗します。
GetLogicalDrives() & 2
次のドライブを確認するには、次の2の倍数などを使用する必要がありますGetLogicalDrives() & 4
。
使用することもできますGetLogicalDriveStrings
が、これは必要なものの逆、使用されているすべての論理ドライブを返します。
代わりにテーブルを作成し、それにインデックスを付けます。
const char *drive_names[] =
{
"A:",
"B:",
...
"Z:"
};
次に、ループは次のようになります。
DWORD drives_bitmask = GetLogicalDrives();
for (DWORD i < 0; i < 32; i++)
{
// Shift 1 to a multiple of 2. 1 << 0 = 1 (0000 0001), 1 << 1 = 2 etc.
DWORD mask_index = 1 << i;
if (drives_bitmask & i == 0)
{
// Drive unavailable, add it to list.
const char *name = drive_names[i];
// ... do GUI work.
}
}