如何将值传递给此方法?

Dol*_*olu 5 c# asp.net

我在该类中有一个dll以下方法

 [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
    bool SetIPAddress([MarshalAs(UnmanagedType.BStr)] ref string lpszIPAddress, int dwPortNumber, int dwPassWord);
Run Code Online (Sandbox Code Playgroud)

如何将值传递给此方法:

public FP_CLOCKLib._DFP_CLOCK   ff = new FP_CLOCKLib.FP_CLOCK();
Run Code Online (Sandbox Code Playgroud)

从C#访问OCX库时,拒绝创建类似“灾难性故障”的实例

bool status = ff.SetIPAddress(ref ip, 5005, 0);
Run Code Online (Sandbox Code Playgroud)

它抛出错误

System.Runtime.InteropServices.COMException(0x8000FFFF):灾难性故障(来自HRESULT的异常:0x8000FFFF(E_UNEXPECTED))位于System.RuntimeType.ForwardCallToInvokeMember(String memberName,BindingFlags标志,对象目标,Int32 [] aWrapperTypes,MessageDatab_gDataData)中。 FP_CLOCKClass.SetIPAddress(String&lpszIPAddress,Int32 dwPortNumber,Int32 dwPassWord)

Joe*_*ips 1

这可能是您的问题,以下步骤可能会有所帮助。

此问题是 URLMON.dll 已知问题的神秘表现。KB945701 - http://support.microsoft.com/default.aspx?scid=kb;EN-US;945701

我们执行了以下修复,解决了该问题:

  1. 单击开始
  2. 单击运行
  3. 键入注册表
  4. 然后单击“确定”
  5. 找到并单击以下注册表子项: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701

注意 如果 FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701 子项不存在,则必须手动创建它

  1. 右键单击 FEATURE_IGNORE_ZONES_INITIALIZATION_FAILURE_KB945701 ,指向新建,然后单击 DWORD 值
  2. 键入 w3wp.exe 以命名新的注册表项
  3. 然后按 ENTER 键
  4. 右键单击 w3wp.exe
  5. 然后点击修改
  6. 在值数据框中
  7. 类型1
  8. 然后单击“确定”
  9. 退出注册表编辑器。
  10. 重新启动系统

https://forums.iis.net/t/1148764.aspx?灾难性+失败+异常+来自+HRESULT+0x8000FFFF+E_UNEXPECTED+