2010-06-25 21 views
11

是否有一個確定使用哪種.NET類型/屬性的一站式商店?如何從使用P/Invoke中知道要編組的類型?

例子將是這個樣子:

Native Type | .NET Type 
--------------------------------------- 
    int   | Integer 
    int*   | IntPtr (or is it ref int?) 
    LPCSTR   | [MarshalAs(UnmanagedType.LPStr)]String 
    ... 

Guidelines for custom structures: 
    ... 

另外,作爲相關的一邊,什麼是用於查找編組的聲明Win32功能最可靠的地方嗎?

回答

8

pinvoke.net是win32函數簽名的好資源。否則,你真的必須看看C/C++包含文件來找出調用約定和參數。複雜的結構有點困難,但最簡單的方法通常是在C#中使用StructLayout屬性聲明結構,以確保所有字段對齊。

我不知道這樣做的唯一一個包羅萬象的資源(這並不意味着它不存在,只是我不知道它),但有很多關於MSDN的信息關於這樣做。

+0

這回答了一邊,但這個問題呢?我問的原因是我需要P /從內部DLL的調用一些功能。 – 2010-06-25 16:45:05

+0

我只回答旁白。好吧,我編輯了我的答案。 – 2010-06-25 16:52:39

1

我喜歡interop assistant。給它你的聲明(函數或類型 - 如果它是該函數的參數,則需要該類型),它會爲你提供VB或C#代碼。

相關問題