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);
どんな助けでも大歓迎です。