Как Windows командные строки представлены ОС? - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь понять, как Windows обрабатывает командные строки. Документация MSDN помогает лишь незначительно.

Как связаны следующие вещи:

  • CreateProcessA() и CreateProcessW() аргументы lpApplicationName и lpCommandLine
  • GetCommandLineA() и GetCommandLineW() возвращаемые значения
  • WinMain() и wWinMain() аргумент lpCmdLine
  • main() и wmain() аргумент argv
  • C глобальные переменные __argc, __argv, __wargv
  • CommandLineToArgvW()
  • Запуск исполняемого файла на основе командной строки, введенной в cmd.exe или PowerShell

В частности:

  • Как Windows хранит командные строки процессов внутри себя?
  • Что из перечисленного выше наиболее близко к этому представлению?
  • Изменилось ли представление между Windows версиями?
  • На представление влияют настройки кодовой страницы?
  • Существуют ли командные строки, которые не могут быть представлены (в частности, кодовые страницы или вообще) и что произойдет, если вы попытаетесь передать их CreateProcess()? (Например, Unix, аргумент командной строки не может иметь нулевой байт, поскольку фундаментальное представление, взятое execve(), является массивом байтовых строк с нулевым символом в конце.)
  • CreateProcess() может принимать либо lpApplicationName или lpCommandLine или оба одновременно. Если вы зададите оба варианта, эта ОС объединит их внутренне в одну строку, которая затем будет передана созданному процессу в качестве командной строки?

Вопросы, связанные с данной:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...