Crash-Isolated Codec Workers
HotPDF có thể đưa việc giải mã ảnh rủi ro cao DCTDecode, JPXDecode, và JBIG2Decode ra khỏi tiến trình host
Chế độ cô lập
cimAutomaticlà mặc định và dùngHotPDFCodecWorker.exekhi nó có sẵn bên cạnh tệp thực thi host, nếu không nó giữ đường dẫn trong tiến trình tương thíchcimRequiredthất bại an toàn khi worker bị thiếu, không khởi động được, sập, hết thời gian, từ chối đầu vào, hoặc vượt giới hạn đầu racimDisabledluôn dùng các bộ giải mã trong tiến trình hiện có
Khi một worker có sẵn chấp nhận một yêu cầu, cimAutomatic không thử lại đầu vào lỗi hoặc độc hại trong tiến trình host
Ranh giới tiến trình
Mỗi yêu cầu giải mã chạy trong một tiến trình ẩn mới được gán cho một Windows Job Object đơn tiến trình
- Job Object chấm dứt worker và mọi hậu duệ bị cố gắng khi handle của nó đóng
CodecWorkerMemoryLimitBytesáp dụng trần bộ nhớ đã cam kết theo tiến trình và mặc định là 512 MiBCodecWorkerTimeoutMillisecondsmặc định là 10.000 ms và chấm dứt một worker treo- Đầu vào đã mã hóa, globals JBIG2 tùy chọn, và đầu ra BGR24 dùng một ánh xạ bộ nhớ dùng chung có tên ngẫu nhiên với giao thức chiều rộng cố định có phiên bản
- Dung lượng đầu ra đã giải mã bị giới hạn bởi hình học ảnh được khai báo và
DecodeBudgetBytes - Yêu cầu JPEG độ phân giải thấp mang kích thước đích chính xác và trả về hình học reduced-DCT mà không dựng raster worker toàn độ phân giải
Cấu hình
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;
Một CodecWorkerExecutable rỗng giải quyết thành HotPDFCodecWorker.exe bên cạnh ứng dụng hiện tại
Đo lường
GetLastCodecWorkerInfo báo cáo trạng thái, định danh tiến trình, mã thoát, mili giây đã trôi qua, và một chẩn đoán phía host có giới hạn
GetLastJPEGReducedDecodeInfo báo cáo hình học nguồn, thu nhỏ, đầu ra, và scanline sau một yêu cầu JPEG giảm cô lập
Các trạng thái riêng biệt bao phủ worker không có sẵn hoặc không khởi chạy được, hết thời gian, sập, từ chối giải mã, không khớp giao thức, và giới hạn đầu ra đã giải mã
Xây dựng và triển khai
build-HotPDF-Codec-Worker.cmd
Lệnh xây dựng phát ra worker Win32 và Win64 riêng dưới tools\CodecWorker\<platform>\Release; hãy triển khai worker khớp kiến trúc tiến trình host