有効なドライブを調べてドライブ名がSAMPLEがあれば成功例
前回のだと一つのドライブにしかGetDriveTypeをやってなかったけど、今回は有効なドライブを調べてドライブ名がSAMPLEがあれば成功するという風にした。
参考URL
http://hp.vector.co.jp/authors/VA007799/tips/tips1.htm
バイナリ
http://dl.dropbox.com/u/13673436/GetDriveType.AllDrive.exe
MD5:9BA4EA1C8B90AD7F37954E799AFED017
ソース
#include <stdio.h> #include <windows.h> #include <tchar.h> #include <locale.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { int flag=1; DWORD drive=GetLogicalDrives();//利用可能なドライブを調べる const int INFOBUF_SIZE=256; TCHAR volumeName[INFOBUF_SIZE]; TCHAR moji[20]; int drivearry; for(drivearry=0;drivearry<25;drivearry++,flag<<=1) { if(drive&flag) { wsprintf(moji,_T("%c:\\"),'A'+drivearry); if(GetDriveType(moji) == DRIVE_CDROM)//CDROMなら判定する { GetVolumeInformation(moji, volumeName, INFOBUF_SIZE, 0, 0, 0, NULL,NULL); // ボリューム名を取得 if(_tcscmp(volumeName,_T("SAMPLE"))==0) { MessageBox(NULL , TEXT("認証成功") , TEXT("認証成功") , MB_OK | MB_ICONINFORMATION); return 0; } } } } MessageBox(NULL , TEXT("ボリュームネームが「SAMPLE」のCDを入れてください") , TEXT("認証失敗") , MB_OK | MB_ICONINFORMATION); return 0; }