Почему следующий код работает в Windows XP, а не в 7? - PullRequest
0 голосов
/ 15 декабря 2010

Я подключил 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 голосов
/ 15 декабря 2010

Это должно работать с Windows 7, но, возможно, вам придется запускать приложение с повышенными правами. Я думаю, путь неверный (и это то, что говорит ошибка 3). Откройте диспетчер устройств, выберите устройство и «Свойства» в контекстном меню. Затем «Подробности» и там «Идентификаторы оборудования». Вы найдете путь из своего примера кода здесь? Если нет, измените свой код соответствующим образом.

Также: для этого вида программирования, близкого к системе, я бы использовал :: CreateFile из WIN-API, а не класс CFile.

...