Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 368 of file pin_wavert.cpp.
{ PMINIPORTWAVERTSTREAM Stream; NTSTATUS Status; ISubdevice *ISubDevice; PSUBDEVICE_DESCRIPTOR Descriptor; CPortPinWaveRT * This; PCLOSESTREAM_CONTEXT Ctx = (PCLOSESTREAM_CONTEXT)Context; This = (CPortPinWaveRT*)Ctx->Pin; if (This->m_Stream) { if (This->m_State != KSSTATE_STOP) { This->m_Stream->SetState(KSSTATE_STOP); KeStallExecutionProcessor(10); } } Status = This->m_Port->QueryInterface(IID_ISubdevice, (PVOID*)&ISubDevice); if (NT_SUCCESS(Status)) { Status = ISubDevice->GetDescriptor(&Descriptor); if (NT_SUCCESS(Status)) { Descriptor->Factory.Instances[This->m_ConnectDetails->PinId].CurrentPinInstanceCount--; } ISubDevice->Release(); } if (This->m_Format) { FreeItem(This->m_Format, TAG_PORTCLASS); This->m_Format = NULL; } if (This->m_IrpQueue) { This->m_IrpQueue->Release(); } // complete the irp Ctx->Irp->IoStatus.Information = 0; Ctx->Irp->IoStatus.Status = STATUS_SUCCESS; IoCompleteRequest(Ctx->Irp, IO_NO_INCREMENT); // free the work item IoFreeWorkItem(Ctx->WorkItem); // free work item ctx FreeItem(Ctx, TAG_PORTCLASS); if (This->m_Stream) { Stream = This->m_Stream; This->m_Stream = NULL; DPRINT("Closing stream at Irql %u\n", KeGetCurrentIrql()); Stream->Release(); } }