Проблемы с CreateProcess & VC++2005

Тема в разделе "WASM.WIN32", создана пользователем SUMASBROD, 21 дек 2007.

  1. SUMASBROD

    SUMASBROD Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    64
    Компилю стандартный пример из PSDK в VC++2005, и при вызове CreateProcess вываливается необрабатываемое исключение с ошибкой доступа (Unhandled exception at 0x7c82f1d3 in Processes.exe: 0xC0000005: Access violation writing location 0x00415642.), походу ошибка при обращении к куче создаваемого процесса хотя хз.

    PS в VC++ 6.0 все компилится без проблем и при дальнейшем переносе проекта в 2005 тоже
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Все отлично и в 2005, правда самой IDE у меня нету, но cl /MD на ура собирает и запускается тоже.
     
  3. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Знакомые грабли - параметр командная строка для функции CreateProcess должна иметь тип LPTSTR - т.е. должна быть доступной на запись. VC6.0 использует по умолчанию ANSI варианты функций и вызывает CreateProcessA, которая соответсвенно выделяет внутренний буфер под строковые параметры конвертирует их с помощью MultiByteToWideChar и вызывает CreateProcessW. Внутренний буфер доступен на запись, поэтому проблемы не возникает. VC2005 по умолчанию использует UNICODE варианты функций, поэтому TEXT("Cmd") передаётся напрямую CreateProcessW которая и падает, т.к. буфер read-only. Соответсвенно правильнее будет писать так:

    Код (Text):
    1. TCHAR lpCmdLine[]=TEXT("Cmd");
    2. CreateProcess(NULL, lpCmdLine,....)
     
  4. SUMASBROD

    SUMASBROD Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    64
    Так и есть, надо лучше глядеть просто в MSDN

    The Unicode version of this function, CreateProcessW, will fail if this parameter is a const string

    Спасибо за ответы всем, отдельно roman_pro
     
  5. FlatL1ne

    FlatL1ne FlatL1ne

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    34
    Адрес:
    Underground
    Спасибо чувак, а то я тоже с естим мучаюсь.