Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Content-Type: text/plain; charset="iso-8859-1" From: Christopher January To: cygwin AT cygwin DOT com Subject: Re: A real fork() on NT Date: Wed, 30 Jan 2002 11:03:00 +0000 X-Mailer: KMail [version 1.3.1] References: <006e01c1a96a$f60429a0$aace0544 AT CX535256D> In-Reply-To: <006e01c1a96a$f60429a0$aace0544@CX535256D> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-Id: > When looking at XP's CreateProcessW (or rather, CreateProcessInternalW) I > noticed something strange about the way it creates a process. It seems > that NT is sort of capable of a fork() command. The function > NtCreateProcess appears to create a "blank" process, into which you can put > anything you want. After NtCreateProcess, kernel32 maps the EXE into that > new process's memory space, creates a thread, and finally calls > NtResumeThread to start its execution. > > If this long, nasty, scattered function could be reverse engineered, it > should be possible to create a true fork() for NT, instead of doing the > normal cygwin "hack" method. Coincidentally, I was looking into a similar thing myself. Windows NT has a POSIX subsystem that's capable of doing fork()'s so it is obviously possible. Have you any ideas of the arguments passed to the function or what it returns? Chris -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/