WinCE系統若想要重新啟動,沒有.NET的Managed函數可用,須倚靠 Coredll.dll的KernelIoControl完成,以下是用Managed包裝後的重啟函數,使用方法很簡單,直接呼叫ResetSystem()即可:
Private Const FILE_DEVICE_HAL As Integer = &H101
Private Const METHOD_BUFFERED As Integer = 0 Private Const FILE_ANY_ACCESS As Integer = 0
Private Function CTL_CODE( _ ByVal DeviceType As Integer, _ ByVal Func As Integer, _ ByVal Method As Integer, _ ByVal Access As Integer) As Integer
Return (DeviceType << 16) Or (Access << 14) Or (Func << 2) Or Method
End Function
Declare Function KernelIoControl Lib "CoreDll.dll" _ (ByVal dwIoControlCode As Integer, _ ByVal lpInBuf As IntPtr, _ ByVal nInBufSize As Integer, _ ByVal lpOutBuf As IntPtr, _
ByVal nOutBufSize As Integer, _ ByRef lpBytesReturned As Integer _ ) As Integer
Private Function ResetSystem() As Integer
Dim bytesReturned As Integer = 0 Dim IOCTL_HAL_REBOOT As Integer = CTL_CODE(FILE_DEVICE_HAL, _ 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
Return KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, _
IntPtr.Zero, 0, bytesReturned) End Function
沒有留言:
張貼留言