Crash-Isolated Codec Workers
HotPDF môže presunúť dekódovanie obrázkov s vysokým rizikom DCTDecode, JPXDecode a JBIG2Decode mimo hostiteľského procesu
Režimy izolácie
cimAutomaticje predvolený a používaHotPDFCodecWorker.exe, keď je k dispozícii vedľa hostiteľského spustiteľného súboru, inak zachováva kompatibilnú cestu v rámci procesucimRequiredzlyhá uzavretý, keď pracovník chýba, nedá sa spustiť, spadne, vyprší mu čas, odmietne vstup alebo prekročí limit výstupucimDisabledvždy používa existujúce dekodéry v rámci procesu
Keď dostupný pracovník prijme požiadavku, cimAutomatic neopakuje neúspešný alebo škodlivý vstup v hostiteľskom procese
Hranica procesu
Každá požiadavka na dekódovanie beží v novom skrytom procese priradenom k objektu úlohy systému Windows s jedným procesom
- Objekt úlohy ukončí pracovníka a všetkých pokusov o potomkov, keď sa zatvorí jeho popisovač
CodecWorkerMemoryLimitBytesaplikuje strop vyhradenej pamäte na proces a predvolene je 512 MiBCodecWorkerTimeoutMillisecondsje predvolene 10 000 ms a ukončí zaseknutého pracovníka- Kódovaný vstup, voliteľné globály JBIG2 a výstup BGR24 používajú jedno náhodne pomenované mapovanie zdieľanej pamäte s verzovaným protokolom s pevnou šírkou
- Kapacita dekódovaného výstupu je ohraničená deklarovanou geometriou obrázka a
DecodeBudgetBytes - Požiadavky JPEG s nízkym rozlíšením nesú presné cieľové rozmery a vracajú geometriu zníženého DCT bez vytvárania rastra pracovníka v plnom rozlíšení
Konfigurácia
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;
Prázdny CodecWorkerExecutable sa vyrieši na HotPDFCodecWorker.exe vedľa aktuálnej aplikácie
Telemetria
GetLastCodecWorkerInfo hlási stav, identifikátor procesu, kód ukončenia, uplynuté milisekundy a ohraničenú diagnostiku na strane hostiteľa
GetLastJPEGReducedDecodeInfo hlási geometriu zdroja, zmenšenia, výstupu a riadkov po izolovanej požiadavke na znížený JPEG
Rôzne stavy pokrývajú nedostupných alebo nespustiteľných pracovníkov, časový limit, pád, odmietnutie dekódovania, nesúlad protokolu a limity dekódovaného výstupu
Zostavenie a nasadenie
build-HotPDF-Codec-Worker.cmd
Príkaz na zostavenie vytvára samostatných pracovníkov Win32 a Win64 v tools\CodecWorker\<platform>\Release; nasaďte pracovníka zodpovedajúceho architektúre hostiteľského procesu