奇妙な問題が発生しました... Windows Vista+ の Recovery API を実装しようとしています。基本的には機能します。しかし、「RegisterApplicationRecoveryCallback」を呼び出そうとするたびに、StackImbalance 例外が発生します。
通常は無視できますが、デバッガーなしでプログラムを実行すると、スタックのバッファーオーバーフローなどが原因でクラッシュします...
[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