1 KFLOATING_SAVE saveData ;
2 NTSTATUS status;
3 int i = 0 ;
4 double tem = 0 , sum = 0 ;
5
6 //////////开启浮点运算环境
7 status = KeSaveFloatingPointState(&saveData);
8
9 if ( ! NT_SUCCESS(status))
10 return ;
11
12 //浮点运算操作
13
14 //////////关闭浮点运算环境
15 KeRestoreFloatingPointState(&saveData);
内核下进行浮点运算很特殊~~
正确操作应该向上面代码一样
在贴个抄来的内核sleep()函数
1 void KeSleep(ULONG uMiniseconds)
2 {
3 KTIMER ktimer;
4 LARGE_INTEGER liTimerout;
5 liTimerout.QuadPart=-(LONG)(uMiniseconds*10000);
6 KeInitializeTimer(&ktimer);
7 KeWaitForSingleObject(&ktimer,Executive,KernelMode,FALSE,&liTimerout);
8 }
不过效率貌似有待改进....有时间在说吧~~那个xxxdelay函数也可以的