Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2010, 18:27   #1
sneksnek2006
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 13
По умолчанию CreateFile в Borland

Здравствуйте!
Подскажите, может ктото сталкивался с похожей проблемой.
С помощью функции CreateFile открывается устройство через самописный драйвер по параллельному порту. В Delphi все работает как часики. Вот код:

Код:
  hDevice         : THANDLE;
  hDevice:= CreateFile('\\.\EcpOmaDevice0',
                       GENERIC_READ or GENERIC_WRITE,
                       FILE_SHARE_READ or FILE_SHARE_WRITE,
                       Nil,
                       OPEN_EXISTING,
                       0,
                       0);
  if (hDevice = INVALID_HANDLE_VALUE) then
   begin
     ErrorBox('Ошибка инициализации. Драйвер не установлен.');
     Result:=False;
     exit;
   end;

В данный момент возникла необходимость переписать программу на C.
Использую C++Builder6. Вот аналог выше приведенного кода на C:

Код:
 HANDLE  hDevice;
 hDevice = CreateFile ("\\.\EcpOmaDevice0",
                       GENERIC_READ | GENERIC_WRITE,
                       FILE_SHARE_READ | FILE_SHARE_WRITE,
                       NULL,
                       OPEN_EXISTING,
                       0,
                       0);
 if (hDevice == INVALID_HANDLE_VALUE)
 {
   MsgError("Ошибка инициализации. Драйвер не установлен." , 1);
   return false;
 }
СУТЬ ПРОБЛЕМЫ:
Функция CreateFile не возвращает хэндл, а при расшифровке кода ошибки (GetLastError+FormatMessage+Message Box) получаю такую вот строчку: "Не удается найти указанный файл". Т.е. не находит драйвер. Вопрос - ПОЧЕМУ?
Повторюсь в проекте на Delphi все определяется и возващается хэндл.

Последний раз редактировалось rpy3uH; 06.10.2010 в 18:46.
sneksnek2006 вне форума Ответить с цитированием
Старый 06.10.2010, 18:49   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

имя устройства надо писать так "\\\\.\\EcpOmaDevice0", это должен знать любой кто пишет программы на языке С. это написано в любой книге про С/С++
rpy3uH вне форума Ответить с цитированием
Старый 07.10.2010, 16:52   #3
sneksnek2006
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 13
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
имя устройства надо писать так "\\\\.\\EcpOmaDevice0", это должен знать любой кто пишет программы на языке С. это написано в любой книге про С/С++
Спасибо за помощь. Смотрел я в в MSDN, ничего про \\\\.\\ нету.
http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
sneksnek2006 вне форума Ответить с цитированием
Старый 14.10.2010, 02:47   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

причем тут МСДН?
это относится к С/С++, то что некоторые символы нужно экранировать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хук CreateFile x64 Alex217Vish Win Api 10 24.10.2010 15:26
ReadConsole & CreateFile int 20h Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 20.09.2010 10:45
Перехват CreateFile qwerc1 Win Api 6 29.06.2010 22:01
CreateFile, Delphi. edmynt Помощь студентам 0 01.06.2010 18:23
Создание Pipe на C# (CreateFile) WinApi Помощь студентам 0 23.12.2009 08:07