Microsoft Visual Studio (C++).
. .
CreateProcess . :
.
lpCommandLine , CreateProcess . , . , .exe.
lpApplicationName NULL, lpCommandLine.
lpProcessAttributes. . NULL .
lpThreadAttributes. . NULL .
bInheritHandles. , . . , .
dwCreationFlags. . ( ):
CREATE_NEW_CONSOLE - , .
CREATE_NEW_PROCESS_GROUP - - .
CREATE_SEPARATE_WOW_VDM - ( Windows NT): , Virtual DOS Machine (VDM).
CREATE_SHARED_WOW_VDM - ( Windows NT): CreateProcess Virtual DOS Machine.
HIGH_PRIORITY_CLASS - , .
IDLE_PRIORITY_CLASS - , .
NORMAL_PRIORITY_CLASS - , - .
REALTIME_PRIORITY_CLASS - , .
lpEnvironment. . NULL, . = .
lpCurrentDirectory. . NULL, .
LpStartupInfo. , . STARTUPINFO . . STARTUPINFO , cb .
|
|
STARTUPINFO sti;//
ZeroMemory(&sti,sizeof(STARTUPINFO));//
sti.cb=sizeof(STARTUPINFO);//
lpProcessInformation PROCESS_INFORMATION . Windows.
CreateProcess STARTUPINFO PROCESS_INFORMATION:
CreateProcess.
, CreateProcess TRUE PROCESS_INFORMATION, :
:
, WinMain, ( ).
ExitProcess.
TerminateProcess ( ).
.
(detached processes). , , . Explorer. , .
() Sleep():
VOID Sleep(
DWORD dwMilliseconds //
);
Sleep , . () , .
Sleep, . .
CreateThread :
HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
lpSecurityAttributes - , .
dwStackSize - . .
lpStartAddress - , . ( ).
lpParameter - long 32 , .
dwCreationFlags - 32 , (, ..).
lpThreadId - , .
:
for (i=0;i<num;i++) {
hThread[i]=CreateThread(NULL,//
0, //
LPTHREAD_START_ROUTINE) unit, //
(LPVOID)i, //
0, //
&IDThread);//
if (hThread[i] == NULL)
printf(" #%d\n", i);
else
printf(" %Lu #%d\n",hThread[i], i); }
|
|