информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetВсе любят медГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Модель надежности отказоустойчивой... 
 NSA выпустило Гидру 
 Неприятная уязвимость во всех WinRAR,... 
 Apple случайно превратила FaceTime... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 17:29  Число просмотров: 485
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
то что одну и ту же ошибку выдает это хорошо. ты бы написал какую конкретно.
И еще есть одно лекарство. Называется Visual Studio Service Pack 6. Закачай его из M$-а. У меня в оной задаче была проблемка, я поставил новый SP, проблемы не стало :)
А пока попробуй написать такую фигню, если пройдет, то тебе точно новый SP нужен.

typedef BOOL (*CreateProcessFunc)(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);

BOOL CreateProc(LPCTSTR lpAppName, DWORD dwFlags, LPSTARTUPINFO si, LPPROCESS_INFORMATION pi)
{
ASSERT(lpAppName != NULL);
ASSERT(pi != NULL);

HMODULE hModule = ::GetModuleHandle(_T("kernel32.dll"));
ASSERT(hModule != NULL);
if (hModule == NULL)
{
TRACE("Kernel32.dll module is not loaded\n");
return FALSE;
}
CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcess");
ASSERT(pfnCreateProc != NULL);
if (pfnCreateProc == NULL)
{
TRACE("Couldnot find the address of function CreateProcess in the module kernel32.dll\n");
return FALSE;
}
return (*pfnCreateProc)(lpAppName, NULL, NULL, NULL, TRUE, dwFlags, NULL, NULL, si, pi);
}

Ну а если и это не поможет, то звони 911 :))
Удачи ...

P.S. не поленись, укажи параметр LPPROCESS_INFORMATION lpProcessInformation.
<programming>
[C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 26.05.01 21:44  
Автор: Drongo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Дело в том. что у меня там было все это дело, тока я все аргументы поставил нулями, а исполняемый модуль был прописан, кстати все специально из МСДНа брал для 2000-ой...
Хотя попробую ышо твой вариант.... 8-)))
А за внимание огромное пасиба... 8-))
[C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 01:42  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Пожалуйста конечно. Но ....

> Дело в том. что у меня там было все это дело, тока я все
> аргументы поставил нулями, а исполняемый модуль был
> прописан, кстати все специально из МСДНа брал для
что - то не понятно. Хчешь сказать, что в параметре lpApllicationName указал, к примеру, "SomeExecutableFile.exe" и он у тебя не заработал?
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 02:55  
Автор: Drongo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Пожалуйста конечно. Но ....
>
> > Дело в том. что у меня там было все это дело, тока я
> все
> > аргументы поставил нулями, а исполняемый модуль был
> > прописан, кстати все специально из МСДНа брал для
> что - то не понятно. Хчешь сказать, что в параметре
> lpApllicationName указал, к примеру,
> "SomeExecutableFile.exe" и он у тебя не заработал?

совершенно в дырочку..... 8-)) там у мя стояла конкретная консольная прога, которую нада запустить, прога без глюков, отлажена..... кроме того, в моем случае тридв не проходят, поскольку нада именно новый процесс.... 8-(((
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 13:06  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>

Ну тоды не знаю что у тебя. Но наверняка это твой баг.
может параметры/флажки не те.
а еще обрати внимание на 1 деталь
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
т.е. lpApplicationName - const char* (точнее TCHAR)
lpCommandLine - char*. может тут такой вариант не проходит
lpCommandLine = (char*)"SomeExecutableFile.exe".
еще учти UNICODE версию
если ты где то написал
#define FILE_EXE "SomeExecutableFile.exe"
CreateProcess((LPCTSTR)FILE_EXE, .....);
то для UNICODE версии это должно привести к crash-у ....
вообщем тут много чего может быть, о котором не подозреваешь. На то он и баг называется, что трудно ловится :-))))) Просмотри еще раз, и обязательно потом вызови GetLastError() - посмотри что за ошибку выдает. Это наверняка может о чем то подсказать.

Удачи.
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 13:50  
Автор: Drongo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
в том то и все западло что ошибку выдаеть всегда одну и ту же... 8-(( а по ней доки мало, перелопатил все МСДНы которыи со словом 2000 нашел.. 8-))) ну лана, буду мучаться, а ве таки винда - это сакс!!! никакого тебе уважения к программерам!!!! 8-)))
покеда.... 8-))
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 17:29  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
то что одну и ту же ошибку выдает это хорошо. ты бы написал какую конкретно.
И еще есть одно лекарство. Называется Visual Studio Service Pack 6. Закачай его из M$-а. У меня в оной задаче была проблемка, я поставил новый SP, проблемы не стало :)
А пока попробуй написать такую фигню, если пройдет, то тебе точно новый SP нужен.

typedef BOOL (*CreateProcessFunc)(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);

BOOL CreateProc(LPCTSTR lpAppName, DWORD dwFlags, LPSTARTUPINFO si, LPPROCESS_INFORMATION pi)
{
ASSERT(lpAppName != NULL);
ASSERT(pi != NULL);

HMODULE hModule = ::GetModuleHandle(_T("kernel32.dll"));
ASSERT(hModule != NULL);
if (hModule == NULL)
{
TRACE("Kernel32.dll module is not loaded\n");
return FALSE;
}
CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcess");
ASSERT(pfnCreateProc != NULL);
if (pfnCreateProc == NULL)
{
TRACE("Couldnot find the address of function CreateProcess in the module kernel32.dll\n");
return FALSE;
}
return (*pfnCreateProc)(lpAppName, NULL, NULL, NULL, TRUE, dwFlags, NULL, NULL, si, pi);
}

Ну а если и это не поможет, то звони 911 :))
Удачи ...

P.S. не поленись, укажи параметр LPPROCESS_INFORMATION lpProcessInformation.
[C++] Поправка 28.05.01 01:25  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Совсем позабыл, т.к. есть 2 версии CreateProcess, т.е. Unicode and ANSI versions для 2К, то тут надо так

#ifdef UNICODE

CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcessW");

#else // UNICODE

CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcessA");

#endif // UNICODE

теперь кажись все.
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2019 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach