BoaSoft
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору procedure StartPnP(WaitTime:integer); const PNPMytexName = 'PNP_Create_Pipe_Event'; var DesiredAccess: DWord; InheritHandle: boolean; HEvent: LongInt; Count: LongInt; begin DesiredAccess:=SEMAPHORE_MODIFY_STATE; InheritHandle:=false; HEvent:= OpenEvent(DesiredAccess,InheritHandle,PChar(PNPMytexName)); Count:=WaitTime * 1000 div 100; while (HEvent = INVALID_HANDLE_VALUE) or (Count > 0) do begin Sleep(100); HEvent:= OpenEvent(DesiredAccess,InheritHandle,PChar(PNPMytexName)); Dec(count); end; if HEvent <> INVALID_HANDLE_VALUE then begin SetEvent(HEvent); CloseHandle(HEvent); end else WriteLog('ERROR: MyFactory unable StartPnP'); end; function WaitEndPnp(WaitProc: TWaitMsgProc; WaitTime:integer): boolean; var Count:integer; begin if WaitTime = 0 then WaitTime:= $FFFF; result:=false; Count:= WaitTime*1000 div 100; if CMP_WaitNoPendingInstallEvents(0) = WAIT_OBJECT_0 then exit; if CMP_WaitNoPendingInstallEvents(0) = WAIT_FAILED then exit; while (CMP_WaitNoPendingInstallEvents(100) = WAIT_TIMEOUT) and (Count>0) do begin if @WaitProc<>nil then WaitProc; dec(Count); result:=true; end; end; function UpdatePnpDrivers(WaitProc: TWaitMsgProc):boolean; begin if AdjustDriverPrivileges then begin DeleteProblemDevice; Enumerate; sleep(1000); result:= UpdatePnpDeviceDrivers = 0; end else result:=false; end; |