diff --git a/drivers/ksfilter/ks/irp.c b/drivers/ksfilter/ks/irp.c index 91302e67299..01ee18c2832 100644 --- a/drivers/ksfilter/ks/irp.c +++ b/drivers/ksfilter/ks/irp.c @@ -150,6 +150,7 @@ KsReadFile( IN KPROCESSOR_MODE RequestorMode) { PDEVICE_OBJECT DeviceObject; + PIO_STACK_LOCATION IoStack; PIRP Irp; NTSTATUS Status; BOOLEAN Result; @@ -216,6 +217,16 @@ KsReadFile( return STATUS_INSUFFICIENT_RESOURCES; } + /* setup the rest of irp */ + Irp->RequestorMode = RequestorMode; + Irp->Overlay.AsynchronousParameters.UserApcContext = PortContext; + Irp->Tail.Overlay.OriginalFileObject = FileObject; + + /* setup irp stack */ + IoStack = IoGetNextIrpStackLocation(Irp); + IoStack->FileObject = FileObject; + IoStack->Parameters.Read.Key = Key; + /* send the packet */ Status = IoCallDriver(DeviceObject, Irp); @@ -250,6 +261,7 @@ KsWriteFile( IN KPROCESSOR_MODE RequestorMode) { PDEVICE_OBJECT DeviceObject; + PIO_STACK_LOCATION IoStack; PIRP Irp; NTSTATUS Status; BOOLEAN Result; @@ -316,6 +328,16 @@ KsWriteFile( return STATUS_INSUFFICIENT_RESOURCES; } + /* setup the rest of irp */ + Irp->RequestorMode = RequestorMode; + Irp->Overlay.AsynchronousParameters.UserApcContext = PortContext; + Irp->Tail.Overlay.OriginalFileObject = FileObject; + + /* setup irp stack */ + IoStack = IoGetNextIrpStackLocation(Irp); + IoStack->FileObject = FileObject; + IoStack->Parameters.Write.Key = Key; + /* send the packet */ Status = IoCallDriver(DeviceObject, Irp);