MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« : 25-08-2004 06:59 » |
|
Есть ошибка : error C2664: 'void __cdecl CString::Format(const char *,...)' : cannot convert parameter 1 from 'unsigned short [10]' to 'const char *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast в строке : CString s; s.Format(L"\\??\\COM%d",m_Port); // вот тут ругается Как поправить ?
|
|
« Последнее редактирование: 30-11-2007 22:59 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #1 : 25-08-2004 07:11 » |
|
а вместо L"\\??\\COM%d" сделать _T("\\??\\COM%d") L - дает строку двубайтовых символов уникоды. А формат хочет char однобайтовые. Вчера npak очн хорошо обяснил для чего _Т надо.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
Серж
Гость
|
|
« Ответ #2 : 25-08-2004 07:14 » |
|
s.Format((const char*)L"\\??\\COM%d",m_Port);
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #3 : 25-08-2004 07:17 » |
|
а вместо L"\\??\\COM%d" сделать _T("\\??\\COM%d") L - дает строку двубайтовых символов уникоды. А формат хочет char однобайтовые. Вчера npak очн хорошо обяснил для чего _Т надо. Пробовал, тогда и вообще непонятно что выдаёт SpyDoc.obj : error LNK2001: unresolved external symbol "void * hDevice" (?hDevice@@3PAXA) SpyDoc.obj : error LNK2001: unresolved external symbol "bool * OpenedPorts" (?OpenedPorts@@3PA_NA) nafxcw.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex nafxcw.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex libc.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Похоже я что то набугил сильно
|
|
« Последнее редактирование: 30-11-2007 23:00 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #4 : 25-08-2004 07:18 » |
|
s.Format((const char*)L"\\??\\COM%d",m_Port); Щас попробую
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #5 : 25-08-2004 07:26 » |
|
Кароче всё постирал, вернул вчерашнюю версию из бэкапа Буду дальше париться Благо изменений не много
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #6 : 25-08-2004 07:28 » |
|
MOPO3, по моему плохая идея , явное преобразование типов . Не рекомендую. Компилятор съест но потом получишь по самое нихочу. Или я ничего не понимаю. щас найду как перелопатить. а что вот так просто нельзя? - s.Format("\\??\\COM%d",m_Port); без L "\\??\\COM%d" - это и есть const char *
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #7 : 25-08-2004 07:32 » |
|
Pu, да похоже что не в этом дело. Линкер потом сильно ругается, я чего то набугил 100%
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #8 : 25-08-2004 07:36 » |
|
MOPO3, Это юникодный проект? Если нет, то выброси L, если да то у тебя наверно не все defines определены, потому как _T("\\??\\COM%d") абсолютно верно. Ошибки связаны с чем-то другим.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #9 : 25-08-2004 07:36 » |
|
Во, нарвался ещё на кусок кода, в котором используется гоуту if (!StartService(hSrv,0,NULL)) { qq: AfxMessageBox(_T("Cannot start device. lalala.sys maybe not found"),MB_OK); DeleteService(hSrv); CloseServiceHandle(hSrv); return; } hDevice=CreateFile(_T("\\\\.\\LaLaLa"),GENERIC_READ | GENERIC_WRITE { GENERIC_EXECUTE,FILE_SHARE_WRITE | FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL { FILE_FLAG_OVERLAPPED, NULL); if (hDevice==INVALID_HANDLE_VALUE) { SERVICE_STATUS ss; ControlService(hSrv,SERVICE_CONTROL_STOP,&ss); goto qq; }
Слышал я что прохо это гоуту использовать то. Это правда ? Надо переписывать ?
|
|
« Последнее редактирование: 30-11-2007 23:01 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #10 : 25-08-2004 07:38 » |
|
Джон, всё ОК, это _T("\\??\\COM%d") нормально работает Там я просто чёйто наделал и не понял чего сделал Вернул всё назад и заработало
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #11 : 25-08-2004 07:43 » |
|
MOPO3, я пользуюсь гото , но только строго в определенных целях. В частности для выхода из фунций, когда необходимы множественные проверки и освобождения ресурсов. Иначе получается масса дублированного кода. Но в твоем случае лучше переделать, не нравится мне когда идет передача внутрь if(){} этак можно в for(; {} изза чего и не рекомендуют.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #12 : 25-08-2004 07:46 » |
|
хотя, присмотрелся - вроде тоже для выхода из фукции. :oops: просто вверх тормашками все перевернуто.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #13 : 25-08-2004 08:15 » |
|
Pu, если я ещё не надоел, пожалуйста взгляни на этот код : CString s; GetCurrentDirectory(MAX_PATH,s.GetBuffer(MAX_PATH)); s.ReleaseBuffer(); if (s.Right(1)!=_T("\\")) s+=_T("\\"); s+=_T("blablabla.sys"); AfxMessageBox(s, MB_OK);//сдесь для себя вывожу полученый путь чтобы убедиться в том что нужный файл там есть
SC_HANDLE hSrv; hSrv=CreateService(sc,_T("BlaBlaBla"),_T("BlaBlaBla"), SERVICE_ALL_ACCESS | GENERIC_EXECUTE | SERVICE_START | SERVICE_STOP, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE, s, NULL, NULL, NULL, NULL, NULL); CloseServiceHandle(sc); if (!hSrv) { AfxMessageBox(_T("Unexpected error. Cannot create service"),MB_OK); return; } if (!StartService(hSrv,0,NULL)) { qq: AfxMessageBox(_T("Cannot start device. blablabla.sys maybe not found"),MB_OK); DeleteService(hSrv); CloseServiceHandle(hSrv); return; } hDevice=CreateFile(_T("\\\\.\\BlaBlaBla"), GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); if (hDevice==INVALID_HANDLE_VALUE) { SERVICE_STATUS ss; ControlService(hSrv,SERVICE_CONTROL_STOP,&ss); goto qq; } Всегда вылетает с Cannot start device. blablabla.sys maybe not found . Где я опять нагрибовал не пойму. Файл blablabla.sys лежит в нужном каталоге.
|
|
« Последнее редактирование: 30-11-2007 23:03 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #14 : 25-08-2004 08:49 » |
|
MOPO3, вопрос, и совет одновременно, if (!StartService(hSrv,0,NULL)) { qq: HRESULT hr = ::GetLastError(); // cкажи мене этот хэрэ и может все будет ясно. AfxMessageBox(_T("Cannot start device. blablabla.sys maybe not found"),MB_OK); DeleteService(hSrv); CloseServiceHandle(hSrv); return; } и расскажи как код вставлять , а то уже както неудобно :oops:
|
|
« Последнее редактирование: 30-11-2007 23:03 от Алексей1153++ »
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #15 : 25-08-2004 08:51 » |
|
Pu, код вставляется между тэгами code и /code обрамлёнными квадратными скобками
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #16 : 25-08-2004 08:55 » |
|
MOPO3, уессссс! :!: получилось!!! Спасибо!
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #17 : 25-08-2004 09:10 » |
|
Pu, не знаю как тебе этот хэрэ вывести :oops: делаю так : switch(hr) { case S_OK : AfxMessageBox(_T("S_OK"), MB_OK); break; case E_UNEXPECTED : AfxMessageBox(_T("E_UNEXPECTED"), MB_OK); break; case E_NOTIMPL : AfxMessageBox(_T("E_NOTIMPL"), MB_OK); break; case E_OUTOFMEMORY : AfxMessageBox(_T("E_OUTOFMEMORY"), MB_OK); break; case E_INVALIDARG : AfxMessageBox(_T("E_INVALIDARG"), MB_OK); break; case E_NOINTERFACE : AfxMessageBox(_T("E_NOINTERFACE"), MB_OK); break; case E_POINTER : AfxMessageBox(_T("E_POINTER"), MB_OK); break; case E_HANDLE : AfxMessageBox(_T("E_HANDLE"), MB_OK); break; case E_ABORT : AfxMessageBox(_T("E_ABORT"), MB_OK); break; case E_FAIL : AfxMessageBox(_T("E_FAIL"), MB_OK); break; case E_ACCESSDENIED : AfxMessageBox(_T("E_ACCESSDENIED"), MB_OK); break; }
В итоге ничего не получаю
|
|
« Последнее редактирование: 30-11-2007 23:04 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #18 : 25-08-2004 09:15 » |
|
А вот так : switch(hr) { case 0x00000000 : AfxMessageBox(_T("0x00000000"), MB_OK); break; case 0x8000FFFF : AfxMessageBox(_T("0x8000FFFF"), MB_OK); break; case 0x80004001 : AfxMessageBox(_T("0x80004001"), MB_OK); break; case 0x8007000E : AfxMessageBox(_T("0x8007000E"), MB_OK); break; case 0x80070057 : AfxMessageBox(_T("0x80070057"), MB_OK); break; case 0x80004002 : AfxMessageBox(_T("0x80004002"), MB_OK); break; case 0x80004003 : AfxMessageBox(_T("0x80004003"), MB_OK); break; case 0x80070006 : AfxMessageBox(_T("0x80070006"), MB_OK); break; case 0x80004004 : AfxMessageBox(_T("0x80004004"), MB_OK); break; case 0x80004005 : AfxMessageBox(_T("0x80004005"), MB_OK); break; case 0x80070005 : AfxMessageBox(_T("0x80070005"), MB_OK); break; default : AfxMessageBox(_T("NOTHING!"), MB_OK); break; }
всё время получаю NOTHING!
|
|
« Последнее редактирование: 30-11-2007 23:05 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #19 : 25-08-2004 09:17 » |
|
MOPO3, ты мне цифру скажи!!! Что это я сам посмотрю. Их там ошеньошень много. Если уж хочешь посмотреть что это надо пользываться FormatMessage.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
npak
|
|
« Ответ #20 : 25-08-2004 09:27 » |
|
MOPO3, Получи цифру и сделай из неё строчку. Вот тебе функция, которая делает форматированный вывод в MsgBox enum { MBF_BUF_LEN = 1024 };
int WINAPI MessageBoxFormat(HWND hWnd, PTSTR szCaption, int nType, PTSTR szFormat, ...) { TCHAR tzBuf[MBF_BUF_LEN]; va_list vlist;
va_start( vlist, szFormat ); _vsntprintf( tzBuf, MBF_BUF_LEN, szFormat, vlist ); va_end( vlist );
return MessageBox( hWnd, tzBuf, szCaption, nType ); } В том месте, где есть ошибка, получи код ошибки и выведи на экран int error = ::GetLastError(); ::MessageBoxFormat(NULL, TEXT("Error!"), MB_OK, TEXT("Error code: %d"), error);
То число, которое будет выведено в окне, скажи сюда, в эту тему.
|
|
« Последнее редактирование: 30-11-2007 23:06 от Алексей1153++ »
|
Записан
|
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #21 : 25-08-2004 09:39 » |
|
а вот еще одна из мэсэдээн void ErrorDescription(HRESULT hr) { if(FACILITY_WINDOWS == HRESULT_FACILITY(hr)) hr = HRESULT_CODE(hr); char* szErrMsg; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&szErrMsg, 0, NULL) != 0) { printf("%s", szErrMsg); LocalFree(szErrMsg); } else printf("[Could not find a description for error # %#x.]\n", hr); }
это тебе даст готовую расшифровку в стринге , причину ошибочки
|
|
« Последнее редактирование: 30-11-2007 23:08 от Алексей1153++ »
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #22 : 25-08-2004 10:04 » |
|
Error Code : 997
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
npak
|
|
« Ответ #23 : 25-08-2004 10:36 » |
|
MOPO3, выдержка из WinError.h: // MessageId: ERROR_IO_PENDING // // MessageText: // // Overlapped I/O operation is in progress. // #define ERROR_IO_PENDING 997L
|
|
« Последнее редактирование: 30-11-2007 23:08 от Алексей1153++ »
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #24 : 25-08-2004 10:41 » |
|
Т.е. что происходит ? Что то открыто в момент попытки открыть ?
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #25 : 25-08-2004 10:54 » |
|
протекает наложенное событие ввода/вывода . Ьщжет просто надо делать слип и подождать время а не убивать сразу. я знаю что системе надо время чтобы запустить сервис. бегай какоето время в цикле и опрашивай состояние сервиса. ControlService(); eсли будет давать SERVICE_START_PENDING - значит еще не запустился.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #26 : 25-08-2004 10:56 » |
|
и еще - откуда попадаешь на qq? при createfile or startservice
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
npak
|
|
« Ответ #27 : 25-08-2004 10:56 » |
|
MOPO3, распечатай путь к blablabla.sys
Правильно ли он построен?
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #28 : 25-08-2004 11:01 » |
|
MOPO3, распечатай путь к blablabla.sys
Правильно ли он построен? E:\project\spy\blablabla.sys
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #29 : 25-08-2004 11:05 » |
|
и еще - откуда попадаешь на qq? при createfile or startservice if (hDevice==INVALID_HANDLE_VALUE) { SERVICE_STATUS ss; ControlService(hSrv,SERVICE_CONTROL_STOP,&ss); goto qq; } Отсюда, тобиш при createfile
|
|
« Последнее редактирование: 30-11-2007 23:10 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
|