問題タブ [print-spooler-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
687 参照

c# - GETJob() Win32 Print spooler api 64bit パラメータが正しくありません。修正方法は?

getJob()を 64 ビットの printerspooler API から動作させようとしています。

私は次の定義を使用します(他の人がSOで使用しているように)

しかし、これはデバッグ中でなく、64ビットではない場合にのみ機能します。

64ビットでは、Windowsエラーが発生します:パラメーターが正しくありません。

これを修正するにはどうすればよいですか?

Int32 を IntPtr (64 ビットで 4=>8 バイト) に変更し、逆の IntPtr => Int32 に変更してみました。無駄に..

ドキュメントはこちら: https://docs.microsoft.com/en-us/windows/desktop/printdocs/getjob :

また、ref を out に変更し、ref/out を lpJob パラメータに入れてみましたが、これでもうまくいかないようです。

次に何を試すことができますか?

編集

うまくいくように見えるのは次のとおりです。

次のように使用します。

編集2

動作しないようですが、動作するように見えることもありますが、単体テストでは csproj ファイルの変更に気付かなかったので、最終的に 32 ビットに対してテストを続けていました。

csproj に次の行を追加すると機能します (32 ビットで実行し、64 ビットにすると失敗します)。