2016-05-13 23 views
0

特定のドライバを使用してHP M506プリンタに印刷しようとすると、ソフトウェアがEndPage()への最初の呼び出しで失敗しています。 HPユニバーサルプリントドライバを使用しても失敗することはありませんが、お客様はそれが遅いと言われて使用することを躊躇しています。コードは15歳で、その期間に何百もの異なる種類のプリンタに印刷されているはずです。特定のプリンタタイプでEndPageが失敗する理由

プリンタがデフォルトとして設定されている場合のみ失敗します。デフォルトであっても、別のプリンタに切り替えてから、もう一度印刷ダイアログで元の状態に戻すことができます。

お客様はWindows 7を使用しており、私はWindows 7で問題を再現できます(プリンタを貸し出しています)。彼らはWindows 10でも試してみましたが、そこでは失敗しています。私はWindows 10(またはWindows 8.1)で再現できません。

EndPage()の呼び出しは、失敗した場合-1を返します。これに関する拡張エラー情報がないことがわかっている限りです。コードはPrintDlg()を使用しています。私はPrintDlgEx()を試しましたが、違いはありません。

PrintDlg()から返された後のDEVMODE構造体のDriverVersionフィールドとDriverExtraフィールドは両方ともゼロであり、私はその時点で何かが既に間違っていることを示しています。

アプリケーションは現在Visual Studio 2013でビルドされており、C/C++で記述されています(C#がスローされますが、問題を解決するためにC#コードを実行する必要はありません)。上記のWindowsのすべてのバージョンは64ビットです。

+0

プリンタAPIエラーの診断を取得できません。プリンタドライバが処理しています。ポップアップがなく、アプリケーションログに何もない場合は、何が間違っているかを知る方法がありません。この問題に対するHPからのサポートを得ることは、長い目で見れば分かりますが、それには何が必要ですか。 –

答えて

0

さて、私はそれを "固定"しました。 PrintDlg()の呼び出しの前に、DEARGODEはGlobalAlloc()で割り当てられ、GlobalLock()でロックされ、いくつかのフィールドが設定され、GlobalUnlock()でアンロックされました。 GlobalLock()とGlobalUnlock()を削除しました。

関連する問題