2

染料サブプリンターがあり、プログラムで印刷する画像を送信しようとしています。
Windows 7 64b で C# 4.0 を使用して PrintDocument と PrintPage を使用しています。
印刷に失敗し、Windows に次のエラーが表示されます。

The print spooler failed to load a plug-in module 
C:\Windows\system32\spool\DRIVERS\x64\3\S6145UI.DLL, error code 0xc1

プリンタは、Windows のデフォルトの [印刷] ダイアログで正常に動作します。
通常のレーザープリンターで印刷すると、コードは正常に機能します。
私は完全に困惑しています。

4

1 に答える 1

1

エラーコード 0xc1

それは ERROR_BAD_EXE_FORMAT です。64 ビット バージョンの Windows では珍しいエラーではなく、プリンター ドライバーの重大なエラーです。64 ビット プロセスが 32 ビット DLL をロードしようとすると、このエラーが発生します。またはその逆です。

ここでは明らかにドライバーに問題があるため、更新を探す必要があります。考えられる回避策は、プログラムを強制的に別のモードで実行することです。マネージ プログラムでは簡単に実行できます。EXE プロジェクト、[プロパティ]、[ビルド] タブを右クリックします。プラットフォーム ターゲット設定を変更し、AnyCPU と x86 の間で切り替えます。VS2012 では、[32 ビット モードを優先] チェックボックスを切り替えます。実際にこれが機能するかどうかはわかりませんが、スプーラは独自のサブシステムです。従来のプリンタ ドライバに対してスプーラを強制的に 32 ビット モードで実行する方法があると思います。superuser.com で問い合わせてください。

于 2013-03-02T02:46:34.657 に答える