4

我在 Windows7 和 VS2010 上使用 C# 编写了 32 位代码,使用 .Net 3.5,它运行没有任何问题,现在我使用 .Net 4.0 将其转换为 64 位,但是当我的代码调用 CloseHandle 时出现错误。

错误 - CloseHandle
System.Runtime.InteropServices.SEHException (0x80004005):外部组件已引发异常。

unsafe
{
    fixed (byte* p = readBuffer)
    {
         IntPtr intPtr = (IntPtr)p;
         this.ReadFile(ref sourceFile, (ulong)buffer_size, intPtr, ref nNumBytesRead);

         if (intPtr != IntPtr.Zero)
         {
             try
             {
                 FunctionSqudf.CloseHandle(intPtr);
             }
             catch (Exception ex)
             {
                  Hardware.LogHardware.Error("CloseHandle", ex);
             }
         }
      }
  }


    [SecuritySafeCritical]
    [DllImport("kernel32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    internal static extern bool CloseHandle(IntPtr hObject);

任何帮助表示赞赏。

4

1 回答 1

4

您不能使用CloseHandle指向用户内存的指针。您需要分配 aHANDLE才能关闭它。你期望CloseHandle关闭什么?

于 2012-09-25T19:22:43.027 回答