C++的GetLastError用C#怎么实现
时间: 2023-07-12 19:43:41 浏览: 189
在C#中获取系统错误码,可以使用System.Runtime.InteropServices命名空间中的Marshal类,其中提供了一个GetLastWin32Error方法,可以返回最近调用的Win32 API函数的错误代码。示例代码如下:
```csharp
using System.Runtime.InteropServices;
...
[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr CreateFile(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile);
...
IntPtr handle = CreateFile("file.txt", GENERIC_READ, FILE_SHARE_READ, IntPtr.Zero, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero);
if (handle == INVALID_HANDLE_VALUE)
{
int errorCode = Marshal.GetLastWin32Error();
Console.WriteLine("Failed to open file. Error code: {0}", errorCode);
}
```
其中,CreateFile是一个Win32 API函数,用于打开或创建一个文件。当函数调用失败时,可以使用Marshal.GetLastWin32Error方法来获取错误代码。
阅读全文