none
请教DllImportAttribute.SetLastError属性的作用? RRS feed

  • 问题

  • 在调用win32 API时,会用到DllImport特性类,该类中有一个属性是SetLastError,文档在此:

    https://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.dllimportattribute.setlasterror(v=vs.80).aspx

    我对该属性大概的理解是,如果将它设为true,那么会在api函数执行完成后调用SetLastError这个API,从而将api函数执行期间发生的错误代码set到调用者的线程中,调用者可以通过调用Marshal.GetLastWin32Error()来获知api函数返回的错误。

    但问题是我尝试把SetLastError设为false,通过传入错误的参数故意令api函数出错,随后我仍然通过Marshal.GetLastWin32Error()得到了错误码,设为true也一样,那这样一来,SetLastError设不设还有什么区别呢?求解答,感谢。

    2015年9月11日 5:45

答案