首页 > 解决方案 > 如何将值传递给此方法?

问题描述

我在那个类中有一个dll,下面的方法

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

如何将值传递给此方法:

public FP_CLOCKLib._DFP_CLOCK   ff = new FP_CLOCKLib.FP_CLOCK();

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

bool status = ff.SetIPAddress(ref ip, 5005, 0);

它抛出了错误

System.Runtime.InteropServices.COMException (0x8000FFFF):在 System.RuntimeType.ForwardCallToInvokeMember (String memberName, BindingFlags flags, Object target, Int32 [] aWrapperTypes, MessageData & msgData) 在 FP_CLOCKLib 发生灾难性故障(来自 HRESULT 的异常:0x8000FFFF (E_UNEXPECTED))。 FP_CLOCKClass.SetIPAddress(String& lpszIPAddress, Int32 dwPortNumber, Int32 dwPassWord)

标签: c#asp.net

解决方案


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

此问题是 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?Catastrophic+failure+Exception+from+HRESULT+0x8000FFFF+E_UNEXPECTED+


推荐阅读