Crash-isolerede codec-arbejdere
HotPDF kan flytte højrisikoafkodning af billeder med DCTDecode, JPXDecode og JBIG2Decode ud af værtsprocessen
Isolationstilstande
cimAutomaticer standarden og brugerHotPDFCodecWorker.exe, når den findes ved siden af værtsprogrammets eksekverbare fil, ellers bevares den kompatible sti i processencimRequiredfejler lukket, når arbejderen mangler, ikke kan starte, går ned, får timeout, afviser inputtet eller overskrider en outputgrænsecimDisabledbruger altid de eksisterende afkodere i processen
Når en tilgængelig arbejder har accepteret en anmodning, forsøger cimAutomatic ikke igen at behandle mislykket eller ondsindet input i værtsprocessen
Procesgrænse
Hver afkodningsanmodning kører i en ny skjult proces, der er tildelt et Windows Job Object med én proces
- Job Object afslutter arbejderen og ethvert forsøgt underordnet program, når dets handle lukkes
CodecWorkerMemoryLimitBytesanvender en grænse for committed hukommelse pr. proces og er som standard 512 MiBCodecWorkerTimeoutMillisecondser som standard 10.000 ms og afslutter en fastlåst arbejder- Kodet input, valgfri JBIG2-globals og BGR24-output bruger én tilfældigt navngivet delt hukommelsesafbildning med en versioneret protokol med fast bredde
- Kapaciteten for afkodet output begrænses af den deklarerede billedgeometri og
DecodeBudgetBytes - JPEG-anmodninger med lav opløsning bærer præcise måldimensioner og returnerer reduceret-DCT-geometri uden at opbygge en fuldopløst arbejderraster
Konfiguration
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;En tom CodecWorkerExecutable opløses til HotPDFCodecWorker.exe ved siden af det aktuelle program
Telemetri
GetLastCodecWorkerInfo rapporterer status, procesidentifikator, afslutningskode, forløbne millisekunder og en afgrænset diagnosticering på værtssiden
GetLastJPEGReducedDecodeInfo rapporterer kilde-, skaleret-, output- og scanline-geometri efter en isoleret reduceret JPEG-anmodning
Adskilte statustilstande dækker utilgængelige eller ikke-startbare arbejdere, timeout, nedbrud, afkodningsafvisning, protokolmismatch og grænser for afkodet output
Bygning og udrulning
build-HotPDF-Codec-Worker.cmdByggekommandoen udsender separate Win32- og Win64-arbejdere under tools\CodecWorker\<platform>\Release; udrul arbejderen, der svarer til værtsprocessens arkitektur