Processos de codec isolados contra falhas

O HotPDF consegue retirar do processo anfitrião a descodificação de imagens DCTDecode, JPXDecode e JBIG2Decode, que é de risco elevado

Isolation modes

Depois de um worker disponível aceitar um pedido, cimAutomatic não repete no processo anfitrião entradas que falharam ou que sejam maliciosas

Process boundary

Cada pedido de descodificação corre num processo oculto novo, atribuído a um Windows Job Object de processo único

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;

Um vazio CodecWorkerExecutable resolves to HotPDFCodecWorker.exe beside the current application

Telemetry

GetLastCodecWorkerInfo reporta o estado, o identificador do processo, o exit code, os milissegundos decorridos e um diagnóstico delimitado do lado do anfitrião

GetLastJPEGReducedDecodeInfo reporta a geometria de origem, escalada, de saída e de scanline após um pedido JPEG reduzido isolado

Estados distintos cobrem workers indisponíveis ou impossíveis de lançar, timeout, crash, rejeição na descodificação, incompatibilidade de protocolo e limites da saída descodificada

Build and deployment

build-HotPDF-Codec-Worker.cmd

O comando de build emite workers Win32 e Win64 separados em tools\CodecWorker\<platform>\Release; distribua o worker que corresponde à arquitetura do processo anfitrião

APIs relacionadas