阅读:1349回复:3
请帮下忙,看下这段代码
DDK上的MUX例子,虚拟网卡
请哪位大大能帮忙注释下这段代码,非常感激! NTSTATUS PtDispatch( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ) /*++ 程序IRP发给这个设备 Routine Description: Process IRPs sent to this device. Arguments: DeviceObject - pointer to a device object Irp - pointer to an I/O Request Packet Return Value: NTSTATUS - STATUS_SUCCESS always - change this when adding real code to handle ioctls. --*/ { PIO_STACK_LOCATION irpStack; NTSTATUS status = STATUS_SUCCESS; ULONG inlen, outlen; PVOID buffer; NDIS_STRING KeyName; WCHAR Device[100]; irpStack = IoGetCurrentIrpStackLocation(Irp); DBGPRINT(MUX_LOUD, ("==>PtDispatch %d\n", irpStack->MajorFunction)); switch (irpStack->MajorFunction) { case IRP_MJ_CREATE: break; case IRP_MJ_CLOSE: break; case IRP_MJ_DEVICE_CONTROL: { buffer = Irp->AssociatedIrp.SystemBuffer; inlen = irpStack->Parameters.DeviceIoControl.InputBufferLength; switch (irpStack->Parameters.DeviceIoControl.IoControlCode) { // // Add code here to handle ioctl commands. // } break; } default: break; } Irp->IoStatus.Information = 0; Irp->IoStatus.Status = status; IoCompleteRequest(Irp, IO_NO_INCREMENT); DBGPRINT(MUX_LOUD, ("<== Pt Dispatch\n")); return status; } |
|
沙发#
发布于:2007-05-06 21:11
这段代码什么都没有作,除了直接返回成功操作。可以简单写为:
NTSTATUS PtDispatch( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ) { NTSTATUS status = STATUS_SUCCESS; PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(Irp); DBGPRINT(MUX_LOUD, ("==>PtDispatch %d\n", irpStack->MajorFunction)); Irp->IoStatus.Information = 0; Irp->IoStatus.Status = status; IoCompleteRequest(Irp, IO_NO_INCREMENT); DBGPRINT(MUX_LOUD, ("<== Pt Dispatch\n")); return status; } |
|
|
板凳#
发布于:2007-05-07 16:39
谢谢斑竹
|
|
地板#
发布于:2007-05-15 01:57
引用第0楼hammly于2007-05-06 15:00发表的 请帮下忙,看下这段代码 : ...过来晃一下...真的是除了完成IRP以外,什么都没有做...外加输出而已!!! |
|
|