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
創作者介紹

傑克鼠的下午茶

傑克鼠 發表在 痞客邦 PIXNET 留言(0) 人氣()