阅读:1502回复:3
*贴出源代码,100分纠错*
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 Resourcesn"); return status; } TdiBuildSetEventHandler( pIrp, pDeviceObject, pDeviceExt->pEndPointObject, NULL, NULL, EventType, pEventHandler, NULL ); status = IoCallDriver(pDeviceObject, pIrp); if( status == STATUS_PENDING ) { DbgPrint("step1n"); status = KeWaitForSingleObject( &Event, UserRequest, KernelMode, FALSE, NULL); } if( !NT_SUCCESS(status) ) { DbgPrint("Fail To SetEventHandler n"); return status; } DbgPrint("Success to SetEventHandlern"); return IoStatus.Status; } //--------------------------------- status = NetdiskSetEventHandler( pDeviceExt, TDI_EVENT_DISCONNECT, NetdiskDisconnectEvent ); if( !NT_SUCCESS(status) ) { return status; } //_________________________________________ 为什么总老是 Fail To SetEventHandler ! [编辑 - 3/19/04 by Zhujnt] |
|
|
沙发#
发布于:2004-03-31 12:29
谢谢各位,我已经搞定了
|
|
|
板凳#
发布于:2004-03-24 17:01
嘿,你要看看KeWaitForSingleObject的返回值是什么啊!也许是pending呢!
|
|
地板#
发布于:2004-03-22 13:39
status 的值是多少啊?
|
|