0
我遇到了一個奇怪的問題......我試圖實現Windows Vista +的恢復API。 基本上它的工作原理。但每次我嘗試調用「RegisterApplicationRecoveryCallback」時,我都會遇到StackImbalance異常。Windows恢復API調用導致堆棧不平衡
通常情況下,你可以忽略它,但如果我沒有調試器中運行該程序,它崩潰,因爲在棧緩衝區溢出或類似的東西...
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
public delegate uint ApplicationRecoveryCallback(object pvParameter);
[DllImport("kernel32.dll", CallingConvention = CallingConvention.Winapi)]
public static extern uint RegisterApplicationRecoveryCallback([MarshalAs(UnmanagedType.FunctionPtr)]ApplicationRecoveryCallback pRecoveryCallback,
object pvParameter,
uint dwPingInterval,
uint dwFlags);
這是我的PInvoke實現。 這就是我的電話:
result = RecoveryAPI.RegisterApplicationRecoveryCallback(ApplicationRecovery, null, 5000, 0);
它不會工作。我已經嘗試將公約設置爲CDecl以及ThisCall。沒有什麼工作......
感謝 [R
嘗試更改您的'對象'參數在ApplicationRecoveryCallback和RegisterApplicationRecoveryCallback到'IntPtr'。我在猜測編組器不是直接將指針大小編組爲「對象」。 – shf301
同樣的問題...仍然堆棧不平衡 - .- – SharpShade