Worker ตัวถอดรหัสแบบแยกการขัดข้อง

HotPDF สามารถย้ายการถอดรหัสภาพที่มีความเสี่ยงสูง DCTDecode, JPXDecode และ JBIG2Decode ออกจากกระบวนการโฮสต์

โหมดการแยก

เมื่อ worker ที่พร้อมใช้ยอมรับคำขอแล้ว cimAutomatic จะไม่ลองอินพุตที่ล้มเหลวหรือที่เป็นอันตรายอีกในกระบวนการโฮสต์

ขอบเขตกระบวนการ

คำขอถอดรหัสแต่ละรายการทำงานในกระบวนการที่ซ่อนใหม่ที่กำหนดให้กับ Windows Job Object แบบกระบวนการเดียว

การกำหนดค่า

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 ข้างแอปพลิเคชันปัจจุบัน

Telemetry

GetLastCodecWorkerInfo รายงานสถานะ ตัวระบุกระบวนการ รหัสออก จำนวนมิลลิวินาที และการวินิจฉัยฝั่งโฮสต์แบบจำกัด

GetLastJPEGReducedDecodeInfo รายงานเรขาคณิตต้นทาง แบบย่อ เอาต์พุต และ scanline หลังคำขอ JPEG แบบลดแบบแยก

สถานะที่ต่างกันครอบคลุม worker ที่ใช้ไม่ได้หรือรันไม่ได้ หมดเวลา ขัดข้อง การปฏิเสธการถอดรหัส โปรโตคอลไม่ตรงกัน และขีดจำกัดเอาต์พุตที่ถอดรหัส

การสร้างและการปรับใช้

build-HotPDF-Codec-Worker.cmd

คำสั่ง build ปล่อย worker Win32 และ Win64 แยกกันภายใต้ tools\CodecWorker\<platform>\Release ปรับใช้ worker ที่ตรงกับสถาปัตยกรรมกระบวนการโฮสต์

API ที่เกี่ยวข้อง