BSOD occurs when a new message send from user mode to kernel mode legacy driver.

Hi all. I have a file system legacy filter driver. I try to send messages to the driver from user mode it works fine. When I try to send new messages(not existing in the driver) from my user-mode application I face BSOD issues. Thanks in advance. Can you please prove a solution?
I have shared the sample code below.

NTSTATUS cwDevIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
{
LONG lControlCode;
NTSTATUS status;
PIO_STACK_LOCATION ioStack;
status = STATUS_SUCCESS;
ioStack = IoGetCurrentIrpStackLocation(Irp);
inBuf = Irp->AssociatedIrp.SystemBuffer;
outBuf = Irp->AssociatedIrp.SystemBuffer;
lControlCode = ioStack->Parameters.DeviceIoControl.IoControlCode;
Irp->IoStatus.Information = 0;// Set the status field to zero for completion
switch(lControlCode)
{
case 1:
break;
case 2:
break;
default:
IoSkipCurrentIrpStackLocation( Irp );// this is where bsod happens
return IoCallDriver( , Irp );
}
Irp->IoStatus.Status = status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return status;
}

You haven’t provided enough details for anyone to help you…You need to at least post the !analyze -v. Also your output is incomplete (IoCallDriver argument is missing).

And, because I need to say it, you should be writing a Minifilter.