Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

Job Object или CreateProcess   Найти похожие ветки 

 
v][x ©   (2004-03-01 17:52) [0]

Люди, проблема такая:
Запускаю процесс через CreateProcess, помещаю его в Job.
Процесс пытается создать на диске файл и записать в него чего-нибудь. И тут начинается фигня: файл, видимо по причинам TSecurityAttributes, не создается. Че делать люди?
В CreateProcess и CreateJobObject запихиваю стуктуру, заполненную так:

   sa:TSecurityAttributes;
...
   sa.nLength:=SizeOf(sa);
   sa.lpSecurityDescriptor:=nil;
   sa.bInheritHandle:=true;


 
Игорь Шевченко ©   (2004-03-01 18:04) [1]

Что говорит GetLastError ?


 
v][x ©   (2004-03-01 18:11) [2]

GetLastError не вызывал, т.к. процесс создается, запускается и нормально завершается. Даже ни одной ошибки не было.


 
Игорь Шевченко ©   (2004-03-01 18:20) [3]


> Че делать люди?


Вызывать GetLastError


 
v][x ©   (2004-03-01 18:29) [4]

И что будет? Мне не номер ошибки нужен, а убрать ее.
По просбьам трудящихся, вызвал GetLastError, возвращает 126. И что это такое? Как мне права-то проставить?


 
Romkin ©   (2004-03-01 18:53) [5]

Вместо GetLastError вызови raiseLastOSError
Тогда и поймешь, в чем дело


 
v][x ©   (2004-03-01 19:11) [6]

Вызвал:
System Error. Code 126. Не найден указанный модуль.

Все равно не понимаю


 
Игорь Шевченко ©   (2004-03-01 19:20) [7]


> файл, видимо по причинам TSecurityAttributes, не создается

Вот после создания файла и проверяй, почему он не создался.
Слишком мало информации (и кода), чтобы выдать диагноз.


 
v][x ©   (2004-03-01 19:23) [8]

Var hjob:THandle;
   jobli:JOBOBJECT_BASIC_LIMIT_INFORMATION;
   si:TStartupInfo;
   sa:TSecurityAttributes;
   pi:TProcessInformation;
   h:Array[0..1] of THandle;
   dw:DWORD;
   ReturnCode:Cardinal;
begin
   FillChar(si,SizeOf(si),0);
   FillChar(sa,SizeOf(sa),0);

   //????????? ????????? TSecurityAttributes
   sa.nLength:=SizeOf(sa);
   sa.lpSecurityDescriptor:=nil;
   sa.bInheritHandle:=true;

   //????????? ???????? TStartupInfo
   si.cb:=SizeOf(si);
   si.dwFlags:=STARTF_USESHOWWINDOW{ or STARTF_USESTDHANDLES};
   si.wShowWindow:=Show;

   FillChar(jobli,SizeOf(jobli),0);
   //??????????? ????????????? ???????
   jobli.PerJobUserTimeLimit.QuadPart:=CPUTime*10000;
   jobli.LimitFlags:=JOB_OBJECT_LIMIT_JOB_TIME and
                     JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION;
   //???????? ???????
   hjob:=CreateJobObject(@sa,nil);
   SetInformationJobObject(hjob,JobObjectBasicLimitInformation,@jobli,SizeOf(jobli));
   //???????? ????????, ? ????????????? ?????????
   if not CreateProcess(nil,PChar("cmd /c "+Path+" "+Attr),@sa,@sa,true,CREATE_SUSPENDED,nil,nil,si,pi) then
     Result:=GetLastError
   else
   begin
     AssignProcessToJobObject(hjob,pi.hProcess);
     //?????? ????????
     ResumeThread(pi.hThread);
     CloseHandle(pi.hThread);
     h[0]:=pi.hProcess;
     h[1]:=hjob;
     //???????? ????????? ????????, ??? ?????????? ??? SystemTime
     dw:=WaitForMultipleObjects(2,@h,FALSE,SystemTime);
     case dw-WAIT_OBJECT_0 of
       0:
         begin
           //??????? ???????? ??????
           if not GetExitCodeProcess(pi.hProcess,ReturnCode) then
             ReturnCode:=GetLastError;
           Result:=ReturnCode;
         end;
       1:
         begin
           //??????????? CPUTime
           Result:=10001;
         end;
       WAIT_TIMEOUT:
         begin
           TerminateJobObject(hjob,10002);
           Result:=10002;
         end;
    end;

    CloseHandle(pi.hProcess);
   end;{CreateProcess}
  CloseHandle(hjob);
end;


 
v][x ©   (2004-03-01 19:48) [9]

Тьфу ты блин!!!
Приговорить меня к пожизненному растрелу!

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

Я уже 4 часа пытаюсь этот код отладить.

Не смею больше задерживать.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
1-1082151596
Dionnis
2004-04-17 01:39
2004.05.02
Переход по закладкам элемента PageControl


1-1082284558
XmPL
2004-04-18 14:35
2004.05.02
системы счисления


8-1075984374
m-AAA-d
2004-02-05 15:32
2004.05.02
DelphiX D3DRM


1-1081763789
Hyboid
2004-04-12 13:56
2004.05.02
Привязка сообщений


14-1081487155
Dmitriy O.
2004-04-09 09:05
2004.05.02
Люди кто нить делал в Дельфях расчет корреляции ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский