4

Windows7およびVS2010でC#で記述されたコードがあります。.Net3.5を使用して32ビットで問題なく実行されています。現在、.Net 4.0を使用して64ビットに変換しましたが、コードでCloseHandleを呼び出すとエラーが発生しました。

エラー
-CloseHandleSystem.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ユーザーメモリへのポインタでは使用できません。閉じるには、を割り当てる必要がありHANDLEます。何CloseHandleを閉じる予定ですか?

于 2012-09-25T19:22:43.027 に答える