为什么以下代码在Windows XP中有效但在7中无效?

时间:2010-12-15 06:11:36

标签: c++ visual-studio-2008 windows-7

我已连接USB打印机,我正尝试使用Open类的CFile方法打开该端口。 以下代码在Windows XP中正常工作,但在Windows 7中不起作用:

#include<stdio.h>
#include<afx.h>
void main()
{
    CFile m_Port;
    CString PortName = "\\\\?\\usb#vid_0b0b&pid_106e#sx0000000-tc0000#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}";
    int i;
    i = m_Port.Open (PortName ,2,0);//PortName is DevicePath
    if ( i > 0 )
        printf("Done");
    else
        printf("Its not working");

    i=GetLastError();
    printf("\n\nError=%d",i);
}

在Windows XP中它可以正常工作,但在Windows 7的情况下,GetLastError返回值3.如何修复此代码以在Windows XP和Windows 7上运行? 让我知道他们在Windows 7中是否有任何不同的GUID。他们是否有其他选项在Windows 7中使用设备路径打开端口?

1 个答案:

答案 0 :(得分:0)

这适用于Windows 7,但也许您必须运行提升的应用程序。 我想,路径是错误的(这就是错误3所说的)。 打开设备管理器,在上下文菜单中选择设备和“属性”。然后是“详细信息”和那里的“硬件ID”。 您是否在此处找到了代码示例中的路径?如果没有,请相应地更改您的代码。

另外:对于这种系统近程编程,我会使用来自WIN-API的:: CreateFile而不是CFile类。