1

重複の可能性:
JavaのIntPtr(C#)に相当するものは何ですか?

C#のIntPtr.ZEROに相当するJavaはありますか?ない場合、JNAライブラリインターフェイス呼び出しに渡されたときに同じ動作を実現する方法はありますか?

私はこのスニペットを使用してIntPtr.ZEROを表します:

private static final IntByReference ZERO = new IntByReference(0);

このKernel32JNAインターフェースに渡されたときに同じ動作を実現しますか?:

boolean CreateProcess(String lpApplicationName, String commandLine,
        int processAttributes, int threadAttributes,
        boolean inheritHandles, int creationFlags,
        IntByReference environment, String currentDirectory,
        STARTUPINFO startupInfo, PROCESS_INFORMATION processInformation);

そのように: CreateProcess(target, null, 0, 0, false, 4, ZERO, null, sInfo, pInfo)

4

1 に答える 1

0

私は C# プログラマーではありませんが、IntPtr.ZERO を正しく理解していれば、同等の Java はありません。Java 参照は null または代入のいずれかであり、このような 3 番目のケースはありません。

あなたが何を達成しようとしているのか、これが必要だと思うところを見せていただければ、おそらく正しい方向に向けることができます (しゃれは意図されていません)。


編集: @Jire からのコメントへの応答:

やりたいことを直接実行する方法があるかもしれませんが、JNA を介して NtDll および Kernel32 インターフェイスを Java に直接マップしようとするのは、困難な道のように思えます。お気づきのように、これらは 2 つのまったく異なる世界であり、直接翻訳できないことがたくさんあります。

JNA でうまく機能する単純な型を使用して、Java アプリケーションからのコマンド スタイルの要求を受け入れ、適切なネイティブ ウィンドウ呼び出しを呼び出す独自の DLL を作成することをお勧めします。

JNA がネイティブ コードと Java の間でマッピングできるデータ型のリストについては、 「 JNA - マッピング型」を参照してください。

DLL を介在させずにこれを行う必要があると判断した場合は、幸運を祈ります。成功した場合は、他の人が見ることができるようにコードを投稿してください。

于 2012-12-31T21:10:51.310 に答える