Usando SetFilePointer em C # tem unblanced a pilha

Ok, estou usando a função SetFilePointer em c # com o .NET 4.0. Abaixo estão as dllimports que eu usei para chamar essa função:

[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);

Sempre que executo o código que usa a função SetFilePointer no depurador, recebo essa exceção:

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.

Sempre que eu executo o mesmo código fora do depurador, não obtenho a exceção acima.

Abaixo está o código que estou usando para fazer as chamadas para SetFilePointer:

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

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

Há algo de errado com minhas assinaturas de dllimport?

questionAnswers(2)

yourAnswerToTheQuestion