繁体   English   中英

USB端口绑定到应用程序-Windows

[英]USB Port binding to application - Windows

我编写了与特定USB设备(视频编码器)通信的应用程序。 设备本身不允许获取设备ID,因此,如果我连接两个设备,则无法识别它们。 现在的解决方案是拥有与USB设备(编码器)一样多的PC

我想知道如何能够为每个应用程序专用一个USB端口。

阐明我现在的状况

[Device 1] - [PC 1] - [USB Port 1] - [Application 1]
[Device 2] - [PC 2] - [USB Port 1] - [Application 1]
[Device 3] - [PC 3] - [USB Port 1] - [Application 1]

我想如何

[Device 1] \            / [USB Hub / USB Port 1] - [Application 1]
[Device 2]  -- [PC 1] --  [USB Hub / USB Port 2] - [Application 2]
[Device 3] /            \ [USB Hub / USB Port 3] - [Application 3]

我想这样创建(伪代码)

main(){

    attachApplicationToUsbPort('USB Hub / USB Port 1')

    CoInitializeEx(NULL, COINIT_MULTITHREADED | COINIT_DISABLE_OLE1DDE);

    result = CoCreateInstance(CLSID_CBMDStreamingDiscovery, NULL, CLSCTX_ALL, IID_IBMDStreamingDiscovery, (void**)&m_streamingDiscovery);

    ...
    ...
}

现在,我将打开三个应用程序,并将每个应用程序分配给特定的端口。

我不知道您使用哪种API来访问该USB设备,但是Windows中的每个设备都有一个唯一的标识符,称为设备实例ID 对于没有序列号的USB设备,设备实例ID如下所示:

USB\VID_51AD&PID_7D8B\6&11A23516&18&0000

我相信第二个反斜杠之后的部分应该取决于您将设备插入哪个端口,并且我认为重新启动时它不应更改。 只要该设备始终插入相同的端口,就应该可以使用它来将进程分配给特定的USB设备。

我认为这是简单的方法。 另一方面,如果您真的要开始处理代码中的USB集线器和端口,则可以查看Microsoft的USBView代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM