2012-06-22 3 views
0

저는 C++ 코드를 C#으로 다시 작성하고 있습니다. 리팩토링하는 코드는 C++에서 AddIPAddress을 사용하지만 C#에서 같은 작업을 수행 할 수있는 방법을 찾을 수 없습니다. 누구든지 도와 줄 수 있습니까?바인딩 IP 주소

답변

4

P/Invoke을 사용하여 메서드를 직접 호출 할 수 있습니다. This page에 대한 세부 정보 (및 샘플)가 있습니다.

DllImport("iphlpapi.dll", EntryPoint = "AddIPAddress", SetLastError = true)] 
private static extern UInt32 AddIPAddress(UInt32 Address, UInt32 IpMaskint, int IfIndex, out int NTEContext, out int NTEInstance); 
+0

+1 좋은 대답 :

기본적인 아이디어는 extern로 선언하고, DllImport 속성으로 장식하여 네이티브 메소드에 해당하는 C#을 방법을 만드는 것입니다. 이 방법은 완벽하게 작동합니다. – Botonomous

+0

마지막 두 매개 변수는'IntPtr'이 아니어야합니다. 그렇지 않으면 코드는 32 비트 시스템에서만 작동합니다 (대신'uint' 또는'int' 여야합니다). – ildjarn

+0

@ildjarn 이전에이 메서드를 사용하지 않았습니다. 이것은 메소드를 호출하는 방법보다 p/invoke의 존재에 대한 답이 많았습니다. 즉, AddIPAddress의 마지막 두 매개 변수는'PULONG'입니다. 32 비트 시스템에서는 32 비트, 64 비트 시스템에서는 64 비트가 될 것입니다. – dlev