获取分区类型(U盘、硬盘)


1.
DWORD_PTR SHGetFileInfo( LPCTSTR pszPath,

DWORD dwFileAttributes,
SHFILEINFO *psfi,
UINT cbFileInfo,
UINT uFlags
);

2.
DiskType=GetDriveType(strTempDirver);

switch(DiskType)
{
case DRIVE_NO_ROOT_DIR:
return;
case DRIVE_REMOVABLE:
//::AfxMessageBox(DriveName);//可移动
break;
case DRIVE_FIXED:
//::AfxMessageBox("固定硬盘驱动器");
break;
case DRIVE_REMOTE:
//::AfxMessageBox("这是网络驱动器");
return;
case DRIVE_CDROM:
//::AfxMessageBox("这是光盘驱动器");
return;
}

3. 使用deviceiocontrol发送查询码获得bustype来判断逻辑盘类型
(作者: 0313700000(^她^的@妈妈@不爱我) )

BOOL IsUSBDiskByRootName(IN char* strRootName)//
{
HANDLE hDisk;
STORAGE_DEVICE_DESCRIPTOR *psDevDesc;
STORAGE_PROPERTY_QUERY query;
BOOL res;

BYTE baBuff[256];
DWORD cbBytesReturned;

hDisk = CreateFile(strRootName,
GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);

if(hDisk != INVALID_HANDLE_VALUE){
query.QueryType = PropertyStandardQuery;
query.PropertyId = StorageDeviceProperty;
res = DeviceIoControl (hDisk,
IOCTL_STORAGE_QUERY_PROPERTY,
& query,
sizeof (query),
& baBuff,
sizeof (baBuff),
& cbBytesReturned, NULL);
if(res){
psDevDesc = (STORAGE_DEVICE_DESCRIPTOR*)baBuff;
if(psDevDesc->BusType == BusTypeUsb){
//是可usb 移动存储
CloseHandle(hDisk);
return true;
}
}
CloseHandle(hDisk);
}else{
}
CloseHandle(hDisk);
DWORD dw = GetLastError();
return false;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值