阅读:1042回复:0
求助:关于PacketOpen()函数的问题!
下面是PacketOpen()的代码,我是从Window 2000 DDK中的Packet例子里修改的,
我就加了一段申请内存,和分配buffer的代码,结果每次一打开协议驱动,机器就重启,不知道为什么,难道是这个函数里不让申请内存吗,感觉不大可能啊,请哪位大侠指教! ( 注:open->SBufferPool在 PacketBindAdapter()里申请了, NdisAllocateBufferPool( &status, &open->SBufferPool, TRANSMIT_PACKETS); ) POPEN_INSTANCE open; NTSTATUS status = STATUS_SUCCESS; PVOID p=NULL; NDIS_STATUS Status; PNDIS_BUFFER buffer=NULL; DebugPrint(("OpenAdapter\n")); if(DeviceObject == Globals.ControlDeviceObject) { Irp->IoStatus.Status = status; IoCompleteRequest(Irp, IO_NO_INCREMENT); return status; } open = DeviceObject->DeviceExtension; DebugPrint(("AdapterName :%ws\n", open->AdapterName.Buffer)); IoIncrement(open); // // Check to see whether you are still bound to the adapter // if(!open->Bound) { status = STATUS_DEVICE_NOT_READY; } if (NDIS_STATUS_SUCCESS == NdisAllocateMemoryWithTag(&p, MAX_PACKET_LEN,'BHH')) { NdisAllocateBuffer(&status,open->SBufferPool,&buffer,p,MAX_PACKET_LEN); } Irp->IoStatus.Information = 0; Irp->IoStatus.Status = status; IoCompleteRequest (Irp, IO_NO_INCREMENT); IoDecrement(open); return status; |
|