Worker Codec Terisolasi dari Crash
HotPDF dapat memindahkan dekode gambar DCTDecode, JPXDecode, dan JBIG2Decode berisiko tinggi keluar dari proses host
Mode isolasi
cimAutomaticadalah default dan menggunakanHotPDFCodecWorker.exeketika tersedia di samping executable host, jika tidak ia mempertahankan jalur in-process yang kompatibelcimRequiredgagal dengan aman ketika worker hilang, tidak dapat dimulai, crash, kehabisan waktu, menolak input, atau melampaui batas keluarancimDisabledselalu menggunakan decoder in-process yang ada
Setelah worker yang tersedia menerima permintaan, cimAutomatic tidak mencoba ulang input yang gagal atau berbahaya di proses host
Batas proses
Setiap permintaan dekode berjalan dalam proses tersembunyi baru yang ditetapkan ke Windows Job Object proses tunggal
- Job Object menghentikan worker dan turunan yang dicoba ketika handle-nya ditutup
CodecWorkerMemoryLimitBytesmenerapkan batas memori ter-commit per proses dan default-nya 512 MiBCodecWorkerTimeoutMillisecondsdefault-nya 10.000 ms dan menghentikan worker yang macet- Input terenkode, global JBIG2 opsional, dan keluaran BGR24 menggunakan satu pemetaan memori bersama bernama acak dengan protokol lebar tetap berversi
- Kapasitas keluaran terdekode dibatasi oleh geometri gambar yang dideklarasikan dan
DecodeBudgetBytes - Permintaan JPEG resolusi rendah membawa dimensi target yang tepat dan mengembalikan geometri DCT tereduksi tanpa membangun raster worker resolusi penuh
Konfigurasi
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 kosong diselesaikan ke HotPDFCodecWorker.exe di samping aplikasi saat ini
Telemetri
GetLastCodecWorkerInfo melaporkan status, pengidentifikasi proses, kode keluar, milidetik yang berlalu, dan diagnostik sisi host yang dibatasi
GetLastJPEGReducedDecodeInfo melaporkan geometri sumber, skala, keluaran, dan scanline setelah permintaan JPEG tereduksi terisolasi
Status yang berbeda mencakup worker yang tidak tersedia atau tidak dapat diluncurkan, kehabisan waktu, crash, penolakan dekode, ketidakcocokan protokol, dan batas keluaran terdekode
Pembuatan dan penerapan
build-HotPDF-Codec-Worker.cmd
Perintah pembuatan mengeluarkan worker Win32 dan Win64 terpisah di bawah tools\CodecWorker\<platform>\Release; terapkan worker yang cocok dengan arsitektur proses host