Перейти к содержанию
    

Не могу произвести запись в драйвер atm6124.sys из BasicUSB

Да и еще вопрос!) Я похоже неправильно приписываю "\\PIPE00" к имени устройства?

HANDLE port = CreateFile(DevInfoDetail->DevicePath,
                            GENERIC_READ | GENERIC_WRITE,
                            FILE_SHARE_READ,
                            NULL,
                            OPEN_EXISTING,
                            0,
                            NULL);

WriteFile("port\\PIPE00", &com_buf, 28, &nBytes, NULL);

 

Не подскажете как это правильно сделать?

Ну, дык конечно :)

Нужно так

TCHAR devName[MAX_PATH];
strcpy( devName, DevInfoDetail->DevicePath );
strcat( devName, _T( "\\PIPE00" ) );

А затем для devName вызывать CreateFile

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, дык конечно :)

Нужно так

TCHAR devName[MAX_PATH];
strcpy( devName, DevInfoDetail->DevicePath );
strcat( devName, _T( "\\PIPE00" ) );

А затем для devName вызывать CreateFile

Спасибо! Все получилось)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извиняюсь, что опять поднял тему, но у меня проблема всплыла непонятная(

Проблема возникает при чтении. С драйвером atm6124ser чтение я осуществлял следующим образом:

AvaibleBytes = 0;
while(AvaibleBytes<32)
{
    AvaibleBytes = comstat.cbInQue;
    Success = ClearCommError(port, &lpErr, &comstat);
}
Success = ReadFile(port, &CommandW, 34, &RealRead, NULL);

Все отлично работало.

Так вот, с драйвером atm6124 ClearCommError(PipeIn, &lpErr, &comstat) возвращает ошибку (Параметр задан неверно). Т.е. имя устройства я исправил, но всеравно ошибка. Я решил отказаться от этой функции и записал просто:

while(!Success)
{
    Success = ReadFile(PipeIn, &CommandW, 34, &RealRead, NULL); 
}

В итоге не дожидаясь 34 байт от моего девайса приложение выходит из этого цикла и в буфер CommandW записывается всякая ерунда! Почему такое происходит??? Я конечно поставил перед этим циклом Sleep(10000), чтобы успеть отправить девайсу (не по USB) то, что он потом должен вернуть по USB, но это же не выход...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так вот, с драйвером atm6124 ClearCommError(PipeIn, &lpErr, &comstat) возвращает ошибку (Параметр задан неверно). Т.е. имя устройства я исправил, но всеравно ошибка.

Вызов ClearCommError драйвер atm6124 не поддерживает вообще.

 

В итоге не дожидаясь 34 байт от моего девайса приложение выходит из этого цикла и в буфер CommandW записывается всякая ерунда! Почему такое происходит???

Да, есть такие причуды. Драйвер этот вообще, мягко говоря, далек от совершенства...

Нужно анализировать значение, которое возвращается в параметре реально прочитанных байт и, если оно =0, то повторять вызов ReadFile

У меня встречный вопрос по поводу драйвера atm6124ser. Это полноценный драйвер или только надстройка над майкрософтовским usbser.sys? Если Вас не затруднит, то вышлите мне этот драйвер почтой, пользуясь ссылкой на этой странице

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...