Использование SetFilePointer в C # привело к небалансировке стека

Хорошо, я использую функцию SetFilePointer в C # с .NET 4.0. Ниже приведены dllimports, которые я использовал для вызова этой функции:

[DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
static extern uint SetFilePointer([In] SafeFileHandle hFile, [In] long lDistanceToMove, [Out] out int lpDistanceToMoveHigh, [In] EMoveMethod dwMoveMethod);

Всякий раз, когда я запускаю код, который использует функцию SetFilePointer в отладчике, я получаю это исключение:

PInvokeStackImbalance was detected Message: A call to PInvoke function 'MyDiskStuff!MyDiskStuff.HardDisk::SetFilePointer' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.

Всякий раз, когда я запускаю один и тот же код за пределами отладчика, я не получаю вышеуказанное исключение.

Ниже приведен код, который я использую для вызовов SetFilePointer:

public enum EMoveMethod : uint
    {
        Begin = 0,
        Current = 1,
        End = 2
    }

uint retvalUint = SetFilePointer(mySafeFileHandle, myLong, out myInt, EMoveMethod.Begin);

Что-то не так с моими подписями dllimport?

Ответы на вопрос(2)

Ваш ответ на вопрос