static void netmap_dev_pager_dtor(void *handle) { struct netmap_vm_handle_t *vmh = handle; struct cdev *dev = vmh->dev; struct netmap_priv_d *priv = vmh->priv; (void)dev; D("handle %p", handle); netmap_dtor(priv); kfree(vmh, M_DEVBUF); #if 0 dev_rel(dev); #endif }
NTSTATUS ioctlClose(PDEVICE_OBJECT DeviceObject, PIRP Irp) { struct netmap_priv_d *priv = NULL; PIO_STACK_LOCATION irpSp; irpSp = IoGetCurrentIrpStackLocation(Irp); priv = irpSp->FileObject->FsContext; if (priv != NULL) { netmap_dtor(priv); } Irp->IoStatus.Status = STATUS_SUCCESS; IoCompleteRequest( Irp, IO_NO_INCREMENT ); return Irp->IoStatus.Status; }