Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 691 of file filter.c.
{ IKsFilter * Filter; IKsFilterImpl * This; NTSTATUS Status; /* obtain filter from object header */ Status = IKsFilter_GetFilterFromIrp(Irp, &Filter); if (!NT_SUCCESS(Status)) return Status; /* get our real implementation */ This = (IKsFilterImpl*)CONTAINING_RECORD(Filter, IKsFilterImpl, Header.OuterUnknown); /* does the driver support notifications */ if (This->Filter.Descriptor && This->Filter.Descriptor->Dispatch && This->Filter.Descriptor->Dispatch->Close) { /* call driver's filter close function */ Status = This->Filter.Descriptor->Dispatch->Close(&This->Filter, Irp); } if (NT_SUCCESS(Status) && Status != STATUS_PENDING) { /* save the result */ Irp->IoStatus.Status = Status; /* complete irp */ CompleteRequest(Irp, IO_NO_INCREMENT); /* remove our instance from the filter factory */ IKsFilter_RemoveFilterFromFilterFactory(This, This->Factory); /* free object header */ KsFreeObjectHeader(This->ObjectHeader); } else { /* complete and forget */ Irp->IoStatus.Status = Status; /* complete irp */ CompleteRequest(Irp, IO_NO_INCREMENT); } /* done */ return Status; }