可以通过SetupXXX系列函数来遍历磁盘驱动类型得到磁盘信息,但是这个是动态的,下次启动原来同一个端口换一个磁盘就会变,现在想通过端口来确定那个数据源盘,那个是目标存储盘。能否像遍历串口一样遍历端口呢?或者应该遍历那种类型的端口,环境是XP,谢谢
1条回答 默认 最新
你知我知皆知 2024-08-02 12:18关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在Windows中,你可以使用
CreateFile函数和GetHandleByHandle函数来获取特定端口的句柄。首先,你需要定义一个结构体,用于存储端口号和端口描述符:
typedef struct { HANDLE handle; } HandleInfo;然后,你可以在你的程序中创建一个列表来存储所有可用的端口描述符:
HANDLEInfo portList[1024];接下来,你可以遍历这些端口描述符并检查它们是否为有效的端口(例如,端口号大于0且小于1024):
for (int i = 0; i < 1024; i++) { if (portList[i].handle != INVALID_HANDLE_VALUE) { // 端口有效 DWORD type = GetFileType(portList[i].handle); if (type == FILE_TYPE_CHAR || type == FILE_TYPE_DISK) { // 端口是文件或磁盘端口 HANDLEInfo info; info.handle = portList[i].handle; info.type = type; // 将端口信息添加到列表中 for (int j = 0; j < numPorts; j++) { if (info.type == ports[j].type && info.handle == ports[j].handle) { // 找到了匹配的端口 printf("Found port %d with type %d\n", info.handle, info.type); break; } } } else { // 端口不是有效的端口类型 printf("Invalid port type: %d\n", type); } } }注意:这个例子只检查了文件和磁盘端口。如果你想要检查其他类型的端口,你可能需要修改这个代码以适应你的需求。
另外,这个代码只是一个基本的例子,实际使用时你可能需要处理更多的错误情况和异常。
解决 无用评论 打赏 举报