sky123bird 2014-08-21 08:46 采纳率: 0%
浏览 714

如何根据IDE端口来得到插入该端口的磁盘路径或者说是句柄,

可以通过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);
            }
        }
    }
    

    注意:这个例子只检查了文件和磁盘端口。如果你想要检查其他类型的端口,你可能需要修改这个代码以适应你的需求。

    另外,这个代码只是一个基本的例子,实际使用时你可能需要处理更多的错误情况和异常。

    评论

报告相同问题?