wengyu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2006-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2196回复:8

好痛苦,定时器问题,机器蓝屏了!

楼主#
更多 发布于:2004-03-04 16:51
小弟想测试一下在passthru中使用定时器(2000环境下),安装后机器在也启动不了了,总时蓝屏。
我在passthru下作了如下修改:
在passthru.h中添加:
// add timer
PNDIS_MINIPORT_TIMER  pTimer;

/////add timer function
extern
VOID
TimerFunction(
IN PVOID  SystemSpecific1,
    IN PVOID  FunctionContext,
    IN PVOID  SystemSpecific2,
    IN PVOID  SystemSpecific3
    );

在passthru.c中添加:
VOID
TimerFunction(
IN PVOID  SystemSpecific1,
    IN PVOID  FunctionContext,
    IN PVOID  SystemSpecific2,
    IN PVOID  SystemSpecific3
    )
{
DbgPrint ("hello");
}


在MPInitialize中添加:
//Initialize a timer
NdisMInitializeTimer(   pTimer,

pAdapt->MiniportHandle,

(PNDIS_TIMER_FUNCTION)TimerFunction,

NULL );
//Set the timer
NdisMSetPeriodicTimer(
pTimer,
1000 //1000 MillisecondsPeriod=1 second
    );
不知道是哪里出错了。

顺便问一下能不能 不装机解决机器重启的问题?
出现蓝屏不能启动真是太痛苦了。

x_j_ting
驱动牛犊
驱动牛犊
  • 注册日期2003-03-30
  • 最后登录2005-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-04 20:12
我也是新手,我是这样用的,你看看行不行啊?
/*定时器函数*/
void   TimerFunc(IN PKDPC Dpc,
IN PVOID DeferredContext,
IN PVOID SystemArgument1,
IN PVOID SystemArgument2)
{
  /* 自定义动作*/
}
/*全局变量*/
KTIMER Timer;
KDPC           Dpc;
LARGE_INTEGER        interval;
/*入口函数*/
NTSTATUS DriverEntry(.......)
{
  ............
  ............
  //
  // 设置定时器
  //
   interval.QuadPart=-1000;
   KeInitializeTimer(&Timer);
   KeInitializeDpc(&Dpc,TimerFunc,NULL);
   KeSetTimerEx(&Timer,interval,500,&Dpc);
  ............
  ............
}
wengyu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2006-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-04 21:21
老兄,谢谢你的回复
你给我的代码好像是一般的驱动程序定时器的使用
在这里,需要类似 ndis×××这样的函数

不知你是否知道如何解决 机器启动是蓝屏问题?
dweep
驱动牛犊
驱动牛犊
  • 注册日期2003-12-20
  • 最后登录2007-12-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-05 09:35
蓝屏报什么错啊?用SI跟踪调一下。

NdisMInitializeTimer要放在NdisMSetAttributesEx后面的,你注意了吗?……
ftp://Landy:ydnaL@210.25.133.57 用于驱动资料文档软件代码上传下载 位于中国教育科研网内 开放时间:24×7
wengyu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2006-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-05 15:52
在使用定时器前,我仔细读了ddk的文档
我把NdisMInitializeTimer方在了NdisMSetAttributesEx的后面
在Status = NDIS_STATUS_SUCCESS;这条语句前

蓝屏是win2000系统启动时候蓝屏
系统启动不了
wengyu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2006-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-03-05 18:44
嘿,我的问题解决了
初步认为是NdisMInitializeTimer(
&pAdapt->PacketProcessTimer,
MiniportAdapterHandle,
(PNDIS_TIMER_FUNCTION)PacketProcessTimerCallback,
pAdapt);
的第三个参数错了
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
6楼#
发布于:2004-03-07 23:54
至少我认为你的代码有一个错误:
PNDIS_MINIPORT_TIMER pTimer;
NdisMInitializeTimer( pTimer,

pAdapt->MiniportHandle,

(PNDIS_TIMER_FUNCTION)TimerFunction,

NULL );

错误就在你的定义上,你仔细比较一下下面的这个代码:
NDIS_TIMER timer;
NdisInitializeTimer( &timer, func, NULL );
NdisSetTimer( &timer, 2000 );
longriver2003
驱动小牛
驱动小牛
  • 注册日期2003-09-14
  • 最后登录2005-03-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-08-26 09:56
至少我认为你的代码有一个错误:
PNDIS_MINIPORT_TIMER pTimer;
NdisMInitializeTimer( pTimer,

pAdapt->MiniportHandle,

(PNDIS_TIMER_FUNCTION)TimerFunction,

NULL );

错误就在你的定义上,你仔细比较一下下面的这个代码:
NDIS_TIMER timer;
NdisInitializeTimer( &timer, func, NULL );
NdisSetTimer( &timer, 2000 );


NdisMInitializeTimer与NdisInitializeTimer两个是有区别的。

我的是按照这个来的(wengyu100说是按这个解决问题的):NdisMInitializeTimer(
&pAdapt->PacketProcessTimer,
MiniportAdapterHandle,
(PNDIS_TIMER_FUNCTION)PacketProcessTimerCallback,
pAdapt);
但是我的死活通不过,不知何故?
给分才有动力!所以我坚决给分!
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-08-26 11:57
NdisMInitializeTimer
NdisMInitializeTimer initializes a timer object associated with a driver’s MiniportTimer function.

VOID
  NdisMInitializeTimer(
    IN OUT PNDIS_MINIPORT_TIMER  Timer,
    IN NDIS_HANDLE  MiniportAdapterHandle,
    IN PNDIS_TIMER_FUNCTION  TimerFunction,
    IN PVOID  FunctionContext
    );
Parameters

Timer
Pointer to caller-supplied, resident storage for a timer object.

应该这样调用吧,:)
NDIS_MINIPORT_TIMER Timer;
NdisMInitializeTimer(
    &Timer,
    ...
    );


The timer object is opaque to the caller, but, when it has been initialized, this pointer is a required parameter to the NdisM..Timer functions.


[编辑 -  8/26/04 by  tooflat]
游客

返回顶部