Windows Atomik Dosya Yayını

Headless belge kaydetme, eksiksiz baytlarını atomik değişimle yayınlamadan önce hedef dizinde münhasır bir staging dosyası hazırlar ve flush eder

Windows'ta geçici ERROR_ACCESS_DENIED, ERROR_SHARING_VIOLATION ve ERROR_LOCK_VIOLATION hataları, MOVEFILE_REPLACE_EXISTING ve MOVEFILE_WRITE_THROUGH ile en fazla sekiz MoveFileEx denemesine izin verir

Denemeler arasındaki beklemeler 1, 2, 4, 8, 16, 16 ve 16 milisaniyedir; istenen beklemeler toplamda en fazla 63 milisaniyedir; gerçek geçen süreyi işletim sistemi zamanlaması ve syscall süresi belirler

Cancellation, her denemeden önce ve her bekleme öncesi ve sonrası gözlenir; tamamlanmış başarılı bir atomik değişim, yayın sınırıdır

Kalıcı kilitlenme veya erişim kısıtları orijinal hedefi korur ve son yakalanan Windows hatasını bildirir; diğer işletim sistemi hataları hemen başarısız olur

Başarısız belge kaydetmeleri, sahipli staging dosyalarını temizler; yayın, mevcut bir hedefi silmez veya kısmi kopyaya düşmez

Aynı özel yol, sıradan kaydetmeleri, imzalı PDF'leri ve bağımsız belge timestamp'lerini yayınlar; Linux fsync ve rename yolunu kullanmaya devam eder

Gerçek kabul

Testler gerçek Windows silme-reddi dosya tanıtıcıları tutar, başka bir iş parçacığında geçici bir kilidi serbest bırakır, kalıcı kilitleri tutar, yeniden deneme sırasında iptal eder ve salt-okunur değişimi dener

Her Windows hedefi ayrıca 500 eksiksiz atomik değişim ve native reload ile 50 gerçek belge kaydetmesi yapar; kaynak baytları korur ve staging-dosyası temizliğini denetler

Ayrı bir yalnızca-WinAPI probe, HotPDF veya Cairo olmadan orijinal kesintili erişim-reddi hatasını yeniden üretir; bu, sebebi gözlenmemiş bir process'e atfetmeden yayın sınırını tanımlar

SaveToFile · İmzalama workflow'ları