diff --git a/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp b/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp index 390c62bc9c2..1ffeb4597d5 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp @@ -552,6 +552,7 @@ CIrpQueue::GetMappingWithTag( { // no irp available m_OutOfMapping = TRUE; + DPRINT("GetMappingWithTag no mapping available\n"); return STATUS_NOT_FOUND; } @@ -611,6 +612,7 @@ CIrpQueue::GetMappingWithTag( StreamData->CurStreamHeader = (PKSSTREAM_HEADER)((ULONG_PTR)StreamData->CurStreamHeader + StreamData->CurStreamHeader->Size); } + DPRINT("GetMappingWithTag Tag %p Buffer %p Flags %lu ByteCount %lx\n", Tag, VirtualAddress, *Flags, *ByteCount); // done return STATUS_SUCCESS; } @@ -654,6 +656,12 @@ CIrpQueue::ReleaseMappingWithTag( // remove irp from used list CurEntry = ExInterlockedRemoveHeadList(&m_FreeIrpList, &m_IrpListLock); + if (CurEntry == NULL) + { + // this should not happen + DPRINT("ReleaseMappingWithTag Tag %p not found\n", Tag); + return STATUS_NOT_FOUND; + } // sanity check PC_ASSERT(CurEntry); @@ -743,6 +751,11 @@ CIrpQueue::ReleaseMappingWithTag( // complete the request IoCompleteRequest(Irp, IO_SOUND_INCREMENT); } + else + { + // there are still some headers not consumed + ExInterlockedInsertHeadList(&m_FreeIrpList, &Irp->Tail.Overlay.ListEntry, &m_IrpListLock); + } return STATUS_SUCCESS; } diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp b/reactos/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp index 7a6b60874db..f4da81971ff 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp @@ -228,7 +228,7 @@ CPortWavePci::Init( IN PRESOURCELIST ResourceList) { IMiniportWavePci * Miniport; - PSERVICEGROUP ServiceGroup; + PSERVICEGROUP ServiceGroup = 0; NTSTATUS Status; PPINCOUNT PinCount; PPOWERNOTIFY PowerNotify;