如何查找設備上是否有指定盤符
可以通過讀取系統註冊表或調用 API函數來實現,下面是以查找磁盤(Hard Disk)設備爲例,通過API函數查詢指定存儲設備的程序片段。
STOREINFO StoreInfo;
memset(&StoreInfo, 0, sizeof(STOREINFO)); //切記定義後要初始化,否則後面將查找不到任何存儲器
StoreInfo.cbSize = sizeof(STOREINFO);
HANDLE hDevice = FindFirstStore( &StoreInfo );
iResult=0;
if( INVALID_HANDLE_VALUE != hDevice )
{
do
{
//判斷是否爲指定存儲設備
if( 0 == wcscmp( StoreInfo.szStoreName, TEXT("IDE Hard Disk Drive") ) )
{
iResult=1;
//如果查找到指定存儲設備,則打印信息到調試串口
RETAILMSG( 1, (TEXT("Hard Disk%s has been inserted/n") ,
StoreInfo.szDeviceName ));
hThread = CreateThread(NULL,0,FileTestThread,(LPVOID)TEXT("//Hard Disk"),0,&dwThreadID);
SetThreadPriority(hThread, THREAD_PRIORITY_LOWEST);//*/
break ;
}
}while( FindNextStore( hDevice, &StoreInfo ) );
}
需要注意的是:存儲器名字("IDE Hard Disk Drive")需要通過查找平臺註冊表platform.reg文件得知。註冊表中存儲器的參數中:“Name”即是指這裏的szStoreName,而註冊表的"Folder"是指掛載目錄名“Hard Disk”。
很多初學者都會將這兩個命名混淆哦!