2012-12-31 191 views
1

可能重複:
What’s the equivalent to IntPtr (C#) in Java?Java等價於IntPtr.ZERO?

是否有相當於Java的C#的IntPtr.ZERO?如果沒有,傳遞給JNA庫接口調用時是否有任何方法實現相同的行爲?

我使用這個片段代表IntPtr.ZERO:通過成爲該的Kernel32 JNA接口?:

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

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

我將實現相同的行爲如此: CreateProcess(target, null, 0, 0, false, 4, ZERO, null, sInfo, pInfo)

+1

對不起,看起來像是指IntPtr而不是IntPtr.Zero。 –

+0

我不是在尋找相當於_IntPtr_,我需要相當於_IntPtr.ZERO_。 – Jire

+0

我相信'null'通常在JNA中等價使用。 – msandiford

回答

0

我不是C#程序員,但如果我正確理解IntPtr.ZERO,那麼就沒有Java等價物。 Java引用可以爲空或分配,不存在這樣的第三種情況。

如果您向我們展示您正在努力完成的任務,那麼您認爲您需要這一點,我們可能會指出您朝着正確的方向(無雙關語意圖)。


編輯:應對來自@Jire評論:

有很可能是一種方法,你直接想要的東西,但它似乎是一個艱難的道路,試圖地圖NTDLL和的Kernel32接口直接進入Java通過JNA。正如你發現的那樣,它們是兩個完全不同的世界,有很多東西不直接翻譯。

我建議編寫自己的DLL,它接受來自java應用程序的命令式請求,使用更適合JNA的更簡單的類型,然後調用適當的本機窗口調用。

有關JNA可以在本機代碼和Java之間映射的數據類型列表,請參閱JNA - Mapping Types

如果您決定必須在不插入dll的情況下執行此操作,祝您好運,如果您已成功,請發佈代碼供其他人查看。

+0

我正在嘗試編寫本地Windows調用來運行程序從字節數組(沒有真正的程序擊中硬盤驅動器)的Java軟件 這是我想要轉換的:http://pastebin.com/7Maq937s 這裏是我的Kernel32接口(這也定義了結構):http://pastebin.com/8acqJY8R 這是我的NtDll接口:http://pastebin.com/Q2CgHD37 我遇到的問題正在轉換C#類的功能,這是我在這裏寫的最多的:http:// pastebin。com/8fUybMc1 我不明白的是寫在評論。我的問題大多是重複的。 – Jire