阅读:1757回复:5
WDM下如何延时?那位大虾知道在WDM模式的延时函数? 要精确到微秒级的 |
|
最新喜欢:![]()
|
沙发#
发布于:2001-07-27 10:20
呵呵,我可不是大虾。
NTSTATUS KeDelayExecutionThread( IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Interval ); 怎么样,interval可是以100ns为单位的,够等级吧。 |
|
|
板凳#
发布于:2001-07-27 10:52
开始也查到了这个函数
可是以看到后面有个"线程",就没细看了~:) 是不是该这样用 KeDelayExecutionThread(KernelMode, FALSE, 10); 而且我在驱动里可以不判断它的返回值吧,好像用户态才要判断,是么? 天!PLARGE_INTEGER是什么东西? typedef struct _LARGE_INTEGER { ULONG LowPart; LONG HighPart; } LARGE_INTEGER, *PLARGE_INTEGER; 我必须传一个64位的参数近去么? [Buddha 编辑于 2001-07-27 10:58] |
|
|
地板#
发布于:2001-07-27 12:29
Buddha,你说的没错,不要判断返回值,它就是将当前线程挂起指定的时间。
LARGE_INTEGER是64位的,不过你可以这样定义: LARGE_INTEGER timeToWait; timeToWait.QuadPart = (LONGLONG)-200000; (注意啦,用负数,quadpart也是large_integer可用的结构 ) 然后调用 KeDelayExecutionThread(KernelMode,FALSE, &timeToWait); 就OK了。很管用! |
|
|
地下室#
发布于:2001-07-27 15:27
果然是以德服人!!!!
搞了一个多小时没搞明白,还是看了你的贴子才豁然开朗 真的是很好是呢~~:) 再问一下,那个绝对时间(正值)怎么使用? DDK说什么和系统时间有关,没看懂~ |
|
|
5楼#
发布于:2001-07-27 16:42
呵呵,说实话我也没搞清楚啊。不求甚解,不求甚解啊。
还望高人指点,共盼之。。。 |
|
|