In MSVAD Simple, whenever you press the 'play' button in a media player (played into the MSVAD device), a new stream is created: CMiniportWaveCyclic::NewStream > CMiniportWaveCyclicStream::CMiniportWaveCyclicStream > CMiniportWaveCyclicStreamMSVAD::CMiniportWaveCyclicStreamMSVAD > CSaveData::CSaveData (m_SaveData data member) > CSaveData::InitializeWorkItems > ExAllocatePoolWithTag (for static CSaveData::m_pWorkItems) But! But! But! ... The only place where that pool memory (for work items) is freed - is in CSaveData::DestroyWorkItems - which is only called in CAdapterCommon::~CAdapterCommon. CAdapterCommon::~CAdapterCommon in turn, is only called when the driver is unloaded. Hence we have here a gross memory leak in MSVAD. I am surprised that no one has ever discovered this. Unless I am missing something? (if so, what am I missing?) Don ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/