Crash-geïsoleerde codec-workers
HotPDF kan risicovolle DCTDecode-, JPXDecode- en JBIG2Decode-beelddecompressie uit het hostproces verplaatsen
Isolatiemodi
cimAutomaticis de standaard en gebruiktHotPDFCodecWorker.exewanneer deze naast de host-uitvoerbare schijf staat, anders behoudt deze het compatibele in-processpadcimRequiredfaalt veilig wanneer de worker ontbreekt, niet kan starten, crasht, een time-out oploopt, de invoer afwijst of een uitvoerlimiet overschrijdtcimDisabledgebruikt altijd de bestaande in-process-decoders
Zodra een beschikbare worker een verzoek accepteert, herhaalt cimAutomatic mislukte of kwaadaardige invoer niet in het hostproces
Procesgrens
Elk decodeerverzoek wordt uitgevoerd in een verse verborgen proces dat is toegewezen aan een single-process Windows-Job-Object
- Het Job-Object beëindigt de worker en eventuele geprobeerde descendenten wanneer het handvat sluit
CodecWorkerMemoryLimitBytespast een per-proces-bovengrens voor vastgelegd geheugen toe en is standaard 512 MiBCodecWorkerTimeoutMillisecondsis standaard 10.000 ms en beëindigt een hangende worker- Gecodeerde invoer, optionele JBIG2-globals en BGR24-uitvoer gebruiken één willekeurig benoemd gedeeld-geheugen-mapping met een versiegebaseerd protocol met vaste breedte
- De capaciteit van de gedecodeerde uitvoer wordt begrensd door de gedeclareerde beeldgeometrie en
DecodeBudgetBytes - Low-resolution-JPEG-verzoeken dragen exacte doeldimensies en retourneren gereduceerde-DCT-geometrie zonder een full-resolution-worker-raster te construeren
Configuratie
PDF.CodecIsolationMode := cimRequired;
PDF.CodecWorkerExecutable :=
'C:\Program Files\MyApp\HotPDFCodecWorker.exe';
PDF.CodecWorkerTimeoutMilliseconds := 5000;
PDF.CodecWorkerMemoryLimitBytes := 256 * 1024 * 1024;
Bitmap := PDF.ExtractLoadedImage(0);
if Bitmap = nil then
begin
PDF.GetLastCodecWorkerInfo(Info);
Writeln(Ord(Info.Status), ': ', Info.ErrorMessage);
end;
Een lege CodecWorkerExecutable lost op naar HotPDFCodecWorker.exe naast de huidige toepassing
Telemetrie
GetLastCodecWorkerInfo rapporteert de status, procesidentificatie, exitcode, verstreken milliseconden en een begrensde host-zijde-diagnostiek
GetLastJPEGReducedDecodeInfo rapporteert bron-, geschaalde, uitvoer- en scanlinegeometrie na een geïsoleerd gereduceerd JPEG-verzoek
Verschillende statussen dekken niet-beschikbare of niet-startbare workers, time-out, crash, decodeerafwijzing, protocolmismatch en decodeeruitvoer-limieten
Opbouw en implementatie
build-HotPDF-Codec-Worker.cmd
De opbouwopdracht produceert afzonderlijke Win32- en Win64-workers onder tools\CodecWorker\<platform>\Release; implementeer de worker die overeenkomt met de hostprocesarchitectuur