|
本帖最后由 yangdai 于 2011-1-2 15:45 编辑
下面的程式,sleep 正常值為1556,
換成Hsleep,在4台不同cpu的桌上電腦測試
1台可以正確跑出預期的97(沒超頻)
1台有時97,有時1556(e8400 超頻)找不出規則
1台1556(q9550 超頻)
1台1556(沒超頻)
筆電1台 195 左右
真是奇怪,ZwDelayExecution 改為ntDelayExecution
也是一樣
有高手能指點一二嗎?
謝謝
$timer=TimerInit()
for $i=1 to 100
Hsleep(1)
next
MsgBox (0,1,TimerDiff($timer))
Func HSleep($iMicroSeconds,$hDll=False)
Local $hStruct, $bLoaded
If Not $hDll Then
$hDll=DllOpen("ntdll.dll")
$bLoaded=True
EndIf
$hStruct=DllStructCreate("int64 time;")
DllStructSetData($hStruct,"time",-1*($iMicroSeconds*10))
DllCall($hDll,"dword","ZwDelayExecution","int",0,"ptr",DllStructGetPtr($hStruct))
If $bLoaded Then DllClose($hDll)
EndFunc |
|