Exception 防止第三方dll崩溃PowerShell

Exception 防止第三方dll崩溃PowerShell,exception,powershell,crash,native,unmanaged,Exception,Powershell,Crash,Native,Unmanaged,我正在创建一个使用非托管API的PowerShell模块。其工作方式如下所示: PowerShell Module | ˅ .NET Wrapper DLL | ˅ Native DLL 本机DLL有两种方式来通信操作是否失败-将状态代码写入标准输出或抛出Win32异常。您可以通过调用API的UseExceptions()或dontuseeExceptions()来指定首选项。然而,这两种选择都很糟糕: 毫无例外,每当我成功调用函数

我正在创建一个使用非托管API的PowerShell模块。其工作方式如下所示:

PowerShell Module
       |
       ˅
.NET Wrapper DLL
       |
       ˅
   Native DLL
本机DLL有两种方式来通信操作是否失败-将状态代码写入标准输出或抛出Win32异常。您可以通过调用API的
UseExceptions()
dontuseeExceptions()
来指定首选项。然而,这两种选择都很糟糕:

  • 毫无例外,每当我成功调用函数时,
    0
    就会显示在屏幕上。如果函数调用失败,屏幕上将显示警告消息。这不仅使检测错误变得困难,而且还使模块向用户的输出变得杂乱无章
  • 对于异常,如果出现小错误,整个PowerShell进程将崩溃,因为它是Win32异常而不是.NET异常
  • 有没有办法防止Win32异常导致整个PowerShell进程崩溃?或者有没有办法拦截这个DLL的标准输出并自己解析状态代码


    我使用的API是广泛使用的。

    在.NET包装器DLL中,尝试捕获SEHException,看看是否可以捕获Win32异常。另一个选择是使用CLI/C++编写.NET包装器,然后使用C++异常处理机制来捕获异常。在.NET包装器DLL中,

    < P>尝试捕获SEHExtExchange,看看是否可以捕获Win32异常。另一个选择是使用CLI/C++编写.NET包装器,然后使用C++异常处理机制来捕获异常。