Zhujnt
驱动牛犊
驱动牛犊
  • 注册日期2004-02-16
  • 最后登录2004-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1462回复:2

*贴出源代码,错在哪*

楼主#
更多 发布于:2004-03-18 19:55
NTSTATUS
NetdiskErrorEvent(
IN PVOID TdiEventContext,
    IN NTSTATUS Status
    )
{
DbgPrint("网络不通或网络出现故障。。。。\n");
return STATUS_SUCCESS;
}

//---------------------------------

NTSTATUS
NetdiskSetEventHandler(
IN PDEVICE_EXTENSION pDeviceExt,
IN LONG EventType,
IN PVOID pEventHandler
)
{
NTSTATUS            status;
PIRP pIrp;
PDEVICE_OBJECT pDeviceObject;
KEVENT Event;
IO_STATUS_BLOCK IoStatus;

pDeviceObject = IoGetRelatedDeviceObject(pDeviceExt->pEndPointObject);

KeInitializeEvent(&Event, NotificationEvent, FALSE);

pIrp = TdiBuildInternalDeviceControlIrp(
TDI_SET_EVENT_HANDLER,
pDeviceObject,
pDeviceExt->pEndPointObject,
&Event,
&IoStatus
);

if( pIrp == NULL )
{
status = STATUS_INSUFFICIENT_RESOURCES;
DbgPrint("Insufficient Resources\n");
return status;
}

TdiBuildSetEventHandler(
pIrp,
pDeviceObject,
pDeviceExt->pEndPointObject,
NULL,
NULL,
EventType,
pEventHandler,
NULL
);

status = IoCallDriver(pDeviceObject, pIrp);

if( status == STATUS_PENDING )
{
DbgPrint("step1\n");
status = KeWaitForSingleObject( &Event, UserRequest, KernelMode, FALSE, NULL);
}

if( !NT_SUCCESS(status) )
{
DbgPrint("Fail To SetEventHandler \n");
return status;
}

DbgPrint("Success to SetEventHandler\n");

return IoStatus.Status;
}

//---------------------------------

status = NetdiskSetEventHandler(
pDeviceExt,
TDI_EVENT_DISCONNECT,
NetdiskDisconnectEvent
);
if( !NT_SUCCESS(status) )
{
return status;
}


______________________________________________
为什么老是 Failed to Set EventHandler ?
*学*
Zhujnt
驱动牛犊
驱动牛犊
  • 注册日期2004-02-16
  • 最后登录2004-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-19 08:38
怎么没人肯回复呀 :(
*学*
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-03-19 08:58
这是干什么的程序,能否公开啊
琢磨悟真知
游客

返回顶部