Codec worker-и, изолирани при crash
HotPDF може да изнесе декодирането на image-и с висок риск DCTDecode, JPXDecode и JBIG2Decode извън host процеса
Режими на изолация
cimAutomaticе по подразбиране и използваHotPDFCodecWorker.exe, когато е наличен до host изпълнимия файл; в противен случай запазва съвместимия in-process пътcimRequiredсе проваля затворено, когато worker-ът липсва, не може да стартира, crash-ва, не отговаря навреме, отхвърля входа или надхвърля лимит за изходcimDisabledвинаги използва съществуващите in-process декодери
След като наличен worker приеме заявка, cimAutomatic не повтаря провалени или злонамерени входове в host процеса
Граница на процеса
Всяка заявка за декодиране върви в свеж скрит процес, закачен за single-process Windows Job Object
- Job Object-ът терминира worker-а и всеки опитан наследник, когато handle-ът му се затвори
CodecWorkerMemoryLimitBytesналага таван на committed памет на процес и по подразбиране е 512 MiBCodecWorkerTimeoutMillisecondsпо подразбиране е 10,000 ms и терминира заседнал worker- Кодираният вход, опционалните JBIG2 globals и BGR24 изходът използват едно произволно именувано shared-memory нанасяне с версиониран протокол с фиксирана ширина
- Капацитетът на декодирания изход е ограничен от декларираната image геометрия и
DecodeBudgetBytes - Заявките за нискорезолюционен JPEG носят точни целеви размерности и връщат reduced-DCT геометрия, без да се изгражда full-resolution worker растер
Конфигурация
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;
Празен CodecWorkerExecutable се отнася до HotPDFCodecWorker.exe до текущото приложение
Телеметрия
GetLastCodecWorkerInfo докладва статус, идентификатор на процеса, exit код, измили милисекунди и ограничена host-страна диагностика
GetLastJPEGReducedDecodeInfo докладва source, scaled, output и scanline геометрия след изолирана reduced JPEG заявка
Различните статуси обхващат недостъпни или нестартируеми worker-и, timeout, crash, отхвърлено декодиране, несъответствие на протокола и лимити на декодирания изход
Билд и разполагане
build-HotPDF-Codec-Worker.cmd
Билд командата издава отделни Win32 и Win64 worker-и под tools\CodecWorker\<platform>\Release; разположете worker-а, съответстващ на архитектурата на host процеса