Как создать процесс с помощью аргумента «LPTHREAD_START_ROUTINE lpStartAddress»? - PullRequest
1 голос
/ 22 августа 2010

Я хочу создать процесс с синтаксисом, подобным следующему, за исключением того, что я не хочу создавать поток

     hThread = CreateThread( 
        NULL,              // no security attribute 
        0,                 // default stack size 
        InstanceThread,    // thread proc
        (LPVOID) hPipe,    // thread parameter 
        0,                 // not suspended 
        &dwThreadId);      // returns thread ID 

Но я проверил ссылку на CreateProcess и образец:

BOOL result = ::CreateProcess(
  L"C:\\Windows\\NOTEPAD.exe",
  NULL,
  NULL,
  NULL,
  FALSE,
  NORMAL_PRIORITY_CLASS,
  NULL,
  NULL,
  &startupInfo,
  &processInformation
);

Кажется, я должен указать существующий исполняемый файл для создания процесса? Как я могу создать его с помощью обратного вызова, похожего на InstanceThread?

Ответы [ 2 ]

1 голос
/ 22 августа 2010

Вы не можете сделать это.Процессы и темы разные.Вы не можете создать процесс, просто указав адрес функции в вашем исполняемом файле.

Однако вы можете создать свой процесс с некоторым аргументом командной строки, который ваш процесс читает и затем использует для вызова целевой функции, которую выхочу.

Чего вы пытаетесь достичь?

0 голосов
/ 22 августа 2010

Возможно, посмотрите, как Cygwin реализует fork().Unix fork() - это то, что вы хотите здесь.

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