Workers de codec isolés contre les crashs

HotPDF peut déplacer hors du processus hôte le décodage d’images à risque élevé DCTDecode, JPXDecode et JBIG2Decode

Modes d’isolation

Dès qu’un worker disponible accepte une requête, cimAutomatic ne réessaie pas une entrée échouée ou malveillante dans le processus hôte

Frontière de processus

Chaque requête de décodage s’exécute dans un processus caché nouveau, affecté à un Windows Job Object à processus unique

Configuration

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;

Une valeur CodecWorkerExecutable vide est résolue en HotPDFCodecWorker.exe à côté de l’application courante

Télémétrie

GetLastCodecWorkerInfo rapporte l’état, l’identifiant du processus, le code de sortie, les millisecondes écoulées et un diagnostic hôte borné

GetLastJPEGReducedDecodeInfo rapporte la géométrie source, mise à l’échelle, de sortie et de ligne d’analyse après une requête JPEG réduite isolée

Des états distincts couvrent les workers indisponibles ou impossibles à lancer, l’expiration, le crash, le rejet de décodage, l’incompatibilité de protocole et les limites de sortie décodée

Compilation et déploiement

build-HotPDF-Codec-Worker.cmd

La commande de compilation produit des workers Win32 et Win64 séparés dans tools\CodecWorker\<platform>\Release ; déployez le worker correspondant à l’architecture du processus hôte

API associées