Absturzisolierte Codec-Worker
HotPDF kann die risikoreiche Dekodierung von Bildern mit DCTDecode, JPXDecode und JBIG2Decode aus dem Hostprozess auslagern
Isolierungsmodi
cimAutomaticist der Standard und verwendetHotPDFCodecWorker.exe, wenn es neben der Host-Executable verfügbar ist, andernfalls bleibt der kompatible prozessinterne Pfad erhaltencimRequiredschlägt geschlossen fehl, wenn der Worker fehlt, nicht starten kann, abstürzt, das Zeitlimit überschreitet, die Eingabe zurückweist oder eine Ausgabegrenze übersteigtcimDisabledverwendet immer die vorhandenen prozessinternen Dekoder
Sobald ein verfügbarer Worker eine Anfrage annimmt, versucht cimAutomatic fehlgeschlagene oder bösartige Eingaben nicht erneut im Hostprozess
Prozessgrenze
Jede Dekodieranfrage läuft in einem neuen ausgeblendeten Prozess, der einem Windows Job Object für einen einzelnen Prozess zugewiesen ist
- Das Job Object beendet den Worker und alle versuchten Nachkommen beim Schließen seines Handles
CodecWorkerMemoryLimitBytessetzt eine Obergrenze für den reservierten Speicher pro Prozess und beträgt standardmäßig 512 MiBCodecWorkerTimeoutMillisecondsbeträgt standardmäßig 10.000 ms und beendet einen blockierten Worker- Kodierte Eingabe, optionale JBIG2-Globals und BGR24-Ausgabe verwenden eine zufällig benannte Shared-Memory-Zuordnung mit einem versionierten Protokoll fester Breite
- Die Kapazität dekodierter Ausgabe ist durch deklarierte Bildgeometrie und
DecodeBudgetBytesbegrenzt - JPEG-Anfragen mit niedriger Auflösung übergeben genaue Zielabmessungen und liefern reduzierte DCT-Geometrie, ohne im Worker ein Raster voller Auflösung aufzubauen
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;
Ein leerer Wert für CodecWorkerExecutable wird zu HotPDFCodecWorker.exe neben der aktuellen Anwendung aufgelöst
Telemetrie
GetLastCodecWorkerInfo meldet Status, Prozesskennung, Exitcode, vergangene Millisekunden und eine begrenzte hostseitige Diagnose
GetLastJPEGReducedDecodeInfo meldet Quell-, skalierte, Ausgabe- und Scanline-Geometrie nach einer isolierten reduzierten JPEG-Anfrage
Getrennte Statuswerte decken nicht verfügbare oder nicht startbare Worker, Zeitüberschreitung, Absturz, Ablehnung der Dekodierung, Protokollabweichung und Grenzen für dekodierte Ausgabe ab
Build und Bereitstellung
build-HotPDF-Codec-Worker.cmd
Der Build-Befehl erzeugt getrennte Win32- und Win64-Worker unter tools\CodecWorker\<platform>\Release; stellen Sie den zur Architektur des Hostprozesses passenden Worker bereit