最新回复
BOOL CAdminMangerDlg::OnDeviceChange(UINT nEventType, DWORD dwData)////它是一个在ClassWizard中无法添加的消息,叫:OnDeviceChange
{
LONG lResult;
char szDeviceList[1024];
ULONG ulLen;
ULONG ulDeviceNum = 0;
ULONG ulOffset = 0;
switch( nEventType)
{
case DBT_DEVICEARRIVAL://当一个设备被插入并变得可用时,系统会发送广播事件DBT_DEVICEARRIVAL,
break;
case DBT_DEVICEREMOVECOMPLETE://而当一个设备被除去并变得不可用时,系统会发送DBT_DEVICEREMOVECOMPLETE
break;
case DBT_DEVNODES_CHANGED://定义设备变化
{
//枚举设备
memset(szDeviceList, 0, sizeof(szDeviceList));
ulLen = sizeof(szDeviceList); //设备列表长度
//该函数枚举当前系统上所支持的设备列表. 每一个设备名称之间以'\0'作为分隔符.
lResult = ZH_ListDevice(DEVICETYPE_UKEY, szDeviceList, &ulLen, 0);
if(lResult != 0)
{
return TRUE;
}
//如果没有设备变化,则直接返回
if(ulLen == g_ulDeviceListLen
&& memcmp(szDeviceList, g_szDeviceList, ulLen) == 0)//如果没有设备变化
{
return TRUE;
}
////////////////////////////////////////////////////////////////////
//有设备变化,执行下面的流程
////////////////////////////////////////////////////////////////////
//关闭已经打开的句柄
if(g_hDevice != 0)
{
ZH_Disconnect(g_hDevice);//断开与设备的连接
g_hDevice = 0;
}
g_ulDeviceListLen = ulLen;
memcpy(g_szDeviceList, szDeviceList, sizeof(szDeviceList));
//获得设备个数
while(ulOffset < ulLen)//
{
ulDeviceNum ++;
ulOffset += strlen(szDeviceList+ulOffset)+1;
}
g_ulDeviceNum = ulDeviceNum;
if(g_ulDeviceNum == 1)//如果有唯一设备
{
lResult = ZH_Connect(szDeviceList, CONNECT_MODE_SHARE, &g_hDevice);
if(lResult != 0)
{
return TRUE;
}
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
lResult = ReadDeviceInfo();
if(lResult != 0)
{
return TRUE;
}
if(m_dlgFormat.m_hWnd != 0)
{
m_dlgFormat.UpdateDisplay();
}
///////////////////////////////////////////////////////////////////////////
}
else
{
///////////////////////////////////////////////////////////////////////////
g_ulTotalSector = 0;
g_ulSectorsOfHidden = 0;//设定当前容量
g_ulSectorsOfCommon = 0;
g_ulSectorsOfUtility = 0;
g_ulSectorsOfPrivate = 0;
if(m_dlgFormat.m_hWnd != 0)//format对话框
{
m_dlgFormat.UpdateDisplay();
}
///////////////////////////////////////////////////////////////////////////
}
}
break;
default:
return TRUE;
}
return TRUE; //
}
详情
回复
发表于 2007-4-20 09:22
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
EEWorld Datasheet 技术支持