NewFreedom
驱动小牛
驱动小牛
  • 注册日期2003-02-14
  • 最后登录2010-09-28
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1739回复:7

有关KeWaitForSingleObject的问题

楼主#
更多 发布于:2003-08-14 10:20
请问有没有人用过 NTSTATUS
  KeWaitForSingleObject(
  IN PVOID  Object,
  IN KWAIT_REASON  WaitReason,
  IN KPROCESSOR_MODE  WaitMode,
  IN BOOLEAN  Alertable,
  IN PLARGE_INTEGER  Timeout  OPTIONAL
  );

在ddk里面 WaitReason 只有看到设成 \" Executive \"
但是在ddk的sample code里面 , 有些有用到这个service 的code
有些设定成 \"suspend\"这个是什么意思呢 , 什么样的作用 ?  谢谢
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-15 14:15
的确在DDK中有不同的Reason
并且DDK中有这样的代码:
typedef enum _KWAIT_REASON {
    Executive,
    FreePage,
    PageIn,
    PoolAllocation,
    DelayExecution,
    Suspended,
    UserRequest,
    WrExecutive,
    WrFreePage,
    WrPageIn,
    WrPoolAllocation,
    WrDelayExecution,
    WrSuspended,
    WrUserRequest,
    WrEventPair,
    WrQueue,
    WrLpcReceive,
    WrLpcReply,
    WrVirtualMemory,
    WrPageOut,
    WrRendezvous,
    Spare2,
    Spare3,
    Spare4,
    Spare5,
    Spare6,
    WrKernel,
    MaximumWaitReason
    } KWAIT_REASON;

至于具体的含义我也不能肯定,实在抱歉,如果你知道了请不要忘记告诉我一下,谢谢
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-21 20:33
你只管设. 你甚至可以设定一个不存在的VALUE. 只要后面的MODE填写KERNEL MODE, 就不会出问题.
这个VALUE是给调度器看的.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
Ares
驱动小牛
驱动小牛
  • 注册日期2001-03-28
  • 最后登录2020-04-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望114点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-08-22 10:26
极度佩服中!
易水
robin12
驱动牛犊
驱动牛犊
  • 注册日期2002-02-11
  • 最后登录2014-03-27
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望63点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-23 22:55
看osr的文章说,此值在除错调试时有用。
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-24 10:34
究竟具体怎么使用这个函数呢?哪位大虾给详细讲讲
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
dlianghui
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2003-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-09-17 17:47
void PnpStopDevice( IN PWDM2_DEVICE_EXTENSION dx)
{
// Stop I/O ASAP
dx->IODisabled = true;

// Do nothing if we\'re already stopped
if( !dx->GotResources)
return;

// Wait for any pending I/O operations to complete
dx->Stopping = true;
KeResetEvent(&dx->StoppingEvent);
UnlockDevice(dx);
UnlockDevice(dx);  //why is two times
KeWaitForSingleObject( &dx->StoppingEvent, Executive, KernelMode, FALSE, NULL);
DebugPrint(\"PnpStopDevice: All pending I/O completed\");
dx->Stopping = false;

// Stop our device before passing down
StopDevice(dx);

// Bump usage count back up again
LockDevice(dx);
LockDevice(dx);
}
看看这个吧
yangmin26
驱动小牛
驱动小牛
  • 注册日期2003-02-22
  • 最后登录2012-11-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-09-17 18:31
Lu0回帖;羡慕
YM KILL YOU
游客

返回顶部