Главная страница
    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.038 c
4-1078669492
DoG
2004-03-07 17:24
2004.05.02
Виртуальная КЛАВА !!!


3-1081251387
Sergey-ZZZ
2004-04-06 15:36
2004.05.02
Конвертация DBF в MSSQL


1-1081858010
ЕвгенийК
2004-04-13 16:06
2004.05.02
Обладатели Delphi 5 или BCB 5 дайте DsgnIntf.dcu PLS!


1-1082034740
DimonNew
2004-04-15 17:12
2004.05.02
Изменить название листа Excel


1-1081967236
tytus
2004-04-14 22:27
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский