當機隔離的程式碼轉換工作執行緒

HotPDF 可以把高風險的 DCTDecode、JPXDecode 與 JBIG2Decode 影像解碼移出主控程序

隔離模式

一旦可用的工作執行緒接受要求,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

遙測

GetLastCodecWorkerInfo 回報狀態、程序識別碼、結束碼、經過的毫秒數與有界的主控端診斷

GetLastJPEGReducedDecodeInfo 在隔離的縮減 JPEG 要求之後回報來源、縮放、輸出與掃描線幾何

相異的狀態涵蓋不可用或無法啟動的工作執行緒、逾時、當機、解碼拒絕、通訊協定不符與已解碼輸出上限

建置與部署

build-HotPDF-Codec-Worker.cmd

建置命令在 tools\CodecWorker\<platform>\Release 下產生個別的 Win32 與 Win64 工作執行緒;部署與主控程序架構相符的工作執行緒

相關 API