www.pudn.com > SmartCardSrc.zip > EnumPorts.cpp


//------------------------------------------------------------------------------ 
// 
// Copyright (c) 1999-2005  Matt Brunk   
// 
// This program is free software; you can redistribute it and/or modify 
// it under the terms of the GNU General Public License VERSION 2 as 
// published by the Free Software Foundation.  You are not allowed to 
// use any other version of the license; unless you got the explicit 
// permission from the author to do so. 
// 
// This program is distributed in the hope that it will be useful, 
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
// GNU General Public License for more details. 
// 
// You should have received a copy of the GNU General Public License 
// along with this program; if not, write to the Free Software 
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
// 
//------------------------------------------------------------------------------ 
#include "stdafx.h" 
#include "EnumPorts.h" 
 
BOOL CEnumPorts::IsPortAvailable(int nPort) 
{ 
	TCHAR		szPort[15]; 
	COMMCONFIG	cc; 
	DWORD		dwCCSize; 
 
	sprintf(szPort, _T("COM%d"), nPort); 
 
	dwCCSize = sizeof(cc); 
	return GetDefaultCommConfig(szPort, &cc, &dwCCSize); 
} 
 
void CEnumPorts::GetAvailablePorts(std::vector &outPorts) 
{ 
	outPorts.clear(); 
	for ( int pp = 1; pp <= 255; pp++ ) 
	{ 
		if ( IsPortAvailable(pp) ) 
		{ 
			outPorts.push_back(pp); 
		} 
	} 
}