很多底层操作的函数,Visual Studio 2005.NET 的API 库中并没有提供,这个时候,我
们就要在C#开发中调用Win32 的函数来进行相应的操作。一大批Win32 底层操作的函数
都存在于cordll.dll 动态链接库中。
调用Win32 的申明:
using System.Runtime.InteropServices;
调用“cordll.dll”里的Win32 函数SetCleanRebootFlag( … )和KernelIoControl( … )
可以实现WINCE 系统重新启动, 定义的代码如下:
- [DllImport("Coredll.dll")]
- extern static int KernelIoControl(int dwIoControlCode, IntPtr lpInBuf, int nInBufSize, IntPtr
- lpOutBuf, int nOutBufSize, ref int lpBytesReturned);
- [DllImport("Coredll.dll")]
- extern static void SetCleanRebootFlag();
- public void HardReset()
- {
- int IOCTL_HAL_REBOOT = 0x101003C;
- int bytesReturned = 0;
- SetCleanRebootFlag();
- KernelIoControl(IOCTL_HAL_REBOOT,IntPtr.Zero,0, IntPtr.Zero, 0, ref bytesReturned);
- }
然后在程序里需要重启的地方直接调用HardReset()这个函数即可。