2012-05-02 8 views
3

64ビットとしてコンパイルされた.netプロセスでDhcpGetClientInfoを呼び出しようとしています。64ビットプロセスでDhcpGetClientInfoを呼び出せません

[DllImport(@"dhcpsapi.dll", CharSet = CharSet.Unicode, SetLastError = true)] 
internal static extern UInt32 DhcpGetClientInfo(
    String ServerIpAddress, 
    ref DHCP_SEARCH_INFO SearchInfo, 
    out IntPtr ClientInfo); 

いくつかの点に注意するプロセスが動作する32ビットとしてコンパイルされ

  • 返されるエラーコードは20013です。error codesによれば、「DHCP JETデータベースへのアクセス中にエラーが発生しました。このエラーの詳細については、DHCPサーバーのイベントログを参照してください。ただし、サーバー上のイベントログには何もありません。また、すべてのDHCP固有のログを有効にして、何も表示されないようにしました。
+0

DHCP_SEARCH_INFOのフィールドをマーシャリングする方法を確認できますか? – AbdElRaheim

+0

組合はちょっと以下のようでなければならないので、[StructLayout(LayoutKind.Explicit)] パブリック構造体ClientSearchInfo {\t [FieldOffset(0)] \tパブリックINT検索タイプ。 [FieldOffset(4)] \t public IntPtr ClientIpAddress; [FieldOffset(4)] \t public IntPtr ClientHardwareAddress; \t [FieldOffset(4)] \t public IntPtr ClientName; }または単に行うことができ [StructLayout(LayoutKind.Explicit)] パブリック構造体ClientSearchInfo {\t [FieldOffset(0)] \t公共int型の検索タイプ。 [FieldOffset(4)] \t public IntPtr SearchValue; } – AbdElRaheim

答えて

0

おそらくあなたの問題はUInt32の使用です。ちなみに、私は、UInt32は廃止されました(非CLS準拠)と考えています。

関連する問題