Stack=IoGetCurrentIrpStackLocation(Irp);
switch(Stack->Parameters.DeviceIoControl.IoControlCode)
{
case Kill:
iBuffer = oBuffer = Irp->AssociatedIrp.SystemBuffer;
if(oBuffer && oBuffer)
{
if(Stack->Parameters.DeviceIoControl.InputBufferLength !=0)
{
KillProc(i);
s = STATUS_SUCCESS;
}
}
break;
case Terminate:
iBuffer = oBuffer = Irp->AssociatedIrp.SystemBuffer;
if(oBuffer && oBuffer)
{
if(Stack->Parameters.DeviceIoControl.InputBufferLength !=0)
{
MyTerminateProcess = (typeZwTerminateProcess)i;
s = STATUS_SUCCESS;
}
}
break;
case Open:
iBuffer = oBuffer = Irp->AssociatedIrp.SystemBuffer;
if(oBuffer && oBuffer)
{
if(Stack->Parameters.DeviceIoControl.InputBufferLength !=0)
{
MyOpenProcess = (typeZwOpenProcess)i;
s = STATUS_SUCCESS;
}
}
break;
}
Irp->IoStatus.Status = STATUS_SUCCESS;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return s;