Как Windows передает аргументы программе? (И есть ли функция SetCommandLine?) - PullRequest
1 голос
/ 28 марта 2011

Как точка входа получает аргументы из командной строки? Я просмотрел разборку одного и обнаружил, что он вызывает __getmainargs, чтобы получить аргументы. Есть ли способ "__setmainargs"? Я знаю, что CreateProcess уже делает это, но я хочу увидеть, как CreateProcess делает это

Ответы [ 2 ]

0 голосов
/ 28 марта 2011

На уровне Win32 приложение вызовет GetCommandLine() в какой-то момент, чтобы получить командную строку, которая была дана для вызова CreateProcess().Соответствующего вызова SetCommandLine нет, поэтому после запуска нового процесса невозможно «изменить» его аргументы командной строки.

0 голосов
/ 28 марта 2011

AFAIK аргументы передаются в памяти как одна строка, так что на самом деле есть только один аргумент - разбиение на несколько выполняется вашей программой. Ядро получает аргумент от вызова CreateProcess() и помещает его в предопределенную область памяти при настройке нового процесса.

Но это только мое полуобразованное предположение.

...