liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1437回复:4

安装 Driver 时为什么会出现 Overlapped I/O operation is in progress?

楼主#
更多 发布于:2003-06-09 12:15
各位 DX,偶写的一个非常简单的 Driver(就是只含有一个 空DriverEntry)的空架子,在用下面函数安装的时候总是会出现
错误号为 error 997(Overlapped I/O operation is in progress) 的错误,这是为什么呢?
我很菜了,以前从没做过 Driver 方面的事情,请 DX 们不吝赐教。

BOOL LoadDeviceDriver( const TCHAR * Name, const TCHAR * Path, HANDLE * lphDevice )
{
SC_HANDLE schSCManager;
BOOL okay;

schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );

// Remove old instances
RemoveDriver( schSCManager, Name );

// Ignore success of installation: it may already be installed.
InstallDriver( schSCManager, Name, Path );

// Ignore success of start: it may already be started.
StartDriver( schSCManager, Name );

// Do make sure we can open it.
okay = OpenDevice( Name, lphDevice );

  CloseServiceHandle( schSCManager );

return okay;
}
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-09 18:05
搞定了。

ps: 这个网真是超级慢啊。我晕死,怕了!
kxgchina
驱动小牛
驱动小牛
  • 注册日期2002-04-01
  • 最后登录2005-05-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-09 19:44
怎么解决的,讲解一下,关注ing!
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-09 20:40
是我自己的问题,上面的代码中
RemoveDriver( schSCManager, Name );
InstallDriver( schSCManager, Name, Path );
StartDriver( schSCManager, Name );
都是自己的方法。

其中 RemoveDriver 的时候,因为有先前通过 OpenDevice 得到的句柄没有释放,所以 Remove 的状态一直为 Pending,直到那个句柄被释放为止。
kxgchina
驱动小牛
驱动小牛
  • 注册日期2002-04-01
  • 最后登录2005-05-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-10 09:16
谢谢讲解,呵呵
游客

返回顶部