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固有のログを有効にして、何も表示されないようにしました。
DHCP_SEARCH_INFOのフィールドをマーシャリングする方法を確認できますか? – AbdElRaheim
組合はちょっと以下のようでなければならないので、[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