Codec Workers con aislamiento ante crashes

HotPDF puede sacar del proceso host la decodificación de imágenes de alto riesgo DCTDecode, JPXDecode y JBIG2Decode

Modos de aislamiento

Una vez que un worker disponible acepta una solicitud, cimAutomatic no reintenta la entrada fallida o maliciosa en el proceso host

Frontera de proceso

Cada solicitud de decodificación corre en un proceso oculto recién creado asignado a un Windows Job Object de proceso único

Configuración

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;

Un CodecWorkerExecutable vacío se resuelve a HotPDFCodecWorker.exe junto a la aplicación actual

Telemetría

GetLastCodecWorkerInfo reporta el estado, el identificador de proceso, el código de salida, los milisegundos transcurridos y un diagnóstico acotado del lado del host

GetLastJPEGReducedDecodeInfo reporta la geometría de source, escalado, salida y scanline tras una solicitud JPEG reducida aislada

Los estados diferenciados cubren workers no disponibles o no lanzables, timeout, crash, rechazo de decodificación, mismatch de protocolo y límites de salida decodificada

Build y despliegue

build-HotPDF-Codec-Worker.cmd

El comando de build emite workers Win32 y Win64 separados bajo tools\CodecWorker\<platform>\Release; despliegue el worker que coincida con la arquitectura del proceso host

APIs relacionadas