in ibazel/process_group/process_group_windows.go [43:91]
func (pg *winProcessGroup) Start() error {
	if pg.job != 0 {
		return errors.New("job already started")
	}
	err := pg.root.Start()
	if err != nil {
		return err
	}
	pg.job, err = createJobObject()
	if err != nil {
		return err
	}
	pg.ioport, err = syscall.CreateIoCompletionPort(syscall.InvalidHandle, syscall.Handle(0), 0, 1)
	if err != nil {
		return err
	}
	port := jobObjectAssociationCompletionPort{
		CompletionKey:  pg.job,
		CompletionPort: pg.ioport,
	}
	err = setInformationJobObject(pg.job, jobObjectAssociateCompletionPortInformation, uintptr(unsafe.Pointer(&port)), unsafe.Sizeof(port))
	if err != nil {
		return err
	}
	process, err := syscall.OpenProcess(processAllAccess, false, uint32(pg.root.Process.Pid))
	if err != nil {
		return err
	}
	err = assignProcessToJobObject(pg.job, process)
	if err != nil {
		return err
	}
	err = ntResumeProcess(process)
	if err != nil {
		return err
	}
	syscall.CloseHandle(process)
	return nil
}