印刷に失敗し、既存ファイルが削除される

適用対象: Windows 8Windows 8.1Windows 10

現象


以下のシナリオを考えます。 
  • 印刷の出力先として、既存のファイルを指定します
  • リーダー アプリのような他のアプリケーションが、指定したファイルをメモリ マップド ファイルとして開いています
上記のシナリオにおいて、印刷に失敗し、以下のエラー メッセージが表示されます。
ハンドルが不正です。
また、出力先として指定した既存のファイルが削除されます。

原因


この問題は、印刷するアプリケーションから呼び出される StartDocPrinter API の動作により発生します。この API は、印刷の出力先ファイルに対して最初に排他的アクセスを試みますが、それに失敗すると、当該ファイルを削除します。

解決方法


この問題が発生した場合、再度印刷を行います。

回避策


この問題を回避するには、印刷の際に出力先ファイルとして新規のファイルを指定します。