首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

DELPHI弹出USB设备,该怎么处理

2012-02-17 
DELPHI弹出USB设备关键代码已经找到了,可我对API不熟悉,高手帮我看看function CM_Get_D

DELPHI弹出USB设备
关键代码已经找到了,可我对API不熟悉,高手帮我看看
==================
function CM_Get_DevNode_Status(pulStatus: PULong; pulProblemNumber: PULong; 
dnDevInst: DWord; ulFlags: ULong): DWord; stdcall; 
external CfgMgr32ModuleName name 'CM_Get_DevNode_Status'; 

function CM_Request_Device_Eject(dnDevInst: DWord; out pVetoType: TPNPVetoType; 
pszVetoName: PChar; ulNameLength: ULong; ulFlags: ULong): DWord; stdcall; 
external SetupApiModuleName name 'CM_Request_Device_EjectA'; 


if (CM_Get_DevNode_Status(@Status, @Problem, DeviceInfoData.DevInst, 0) <> CR_SUCCESS) then 
begin 
exit; 
end; 
VetoName[0] := #0; 
case CM_Request_Device_Eject(DeviceInfoData.DevInst, VetoType, @VetoName, SizeOf(VetoName), 0) of 
CR_SUCCESS: 
begin 
MessageBox(Handle, PChar(’Eject OK (Veto: ' + VetoName + ')'), 'Vetoed', MB_OK); end; 
CR_REMOVE_VETOED: 
begin 
MessageBox(Handle, PChar('Failed to eject the Device (Veto: ' + VetoName + ')'), 'Vetoed', MB_OK); 
end; 
else 
begin 
MessageBox(Handle, PChar('Failed to eject the Device (' + SysErrorMessage(GetLastError) + ')'), 'Failure', MB_OK); 
end; 
end; 
========================
是不是根据USB名称识别出来,再卸载USB设置的?能不能直接写上某个USB名称,然后实现卸载呢?

[解决办法]
if (CM_Get_DevNode_Status(@Status, @Problem, DeviceInfoData.DevInst, 0) <> CR_SUCCESS) then 
begin 如果获取当前设备状态失败则做下面工作
exit; 失败退出
end; 
VetoName[0] := #0; 设置设备名称为空,然后根据获取的设备状态进行弹出操作,按照操作返回经过进行分支:
case CM_Request_Device_Eject(DeviceInfoData.DevInst, VetoType, @VetoName, SizeOf(VetoName), 0) of 
CR_SUCCESS: 分支1: 操作成功则
begin 显示成功提示
MessageBox(Handle, PChar(’Eject OK (Veto: ' + VetoName + ')'), 'Vetoed', MB_OK); end; 
CR_REMOVE_VETOED: 分支2: 惨遭失败
begin 显示失败提示 
MessageBox(Handle, PChar('Failed to eject the Device (Veto: ' + VetoName + ')'), 'Vetoed', MB_OK); 
end; 
else 分支3:所有其它情况均为失败
begin 显示失败消息提示
MessageBox(Handle, PChar('Failed to eject the Device (' + SysErrorMessage(GetLastError) + ')'), 'Failure', MB_OK); 
end; 
end; 

热点排行