X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fdrivers%2Fwdm%2Faudio%2Flegacy%2Fwdmaud%2Fmmixer.c;h=9887d0974a2d08f77940a180b8728ef30d3560ba;hp=8623b5333ef55e73bae739afde0146576c799572;hb=3e9107ceecf96beab7f480084c54467119979948;hpb=1f993d692ceedf12ba9eabaf543f24d6ec7e773d diff --git a/reactos/drivers/wdm/audio/legacy/wdmaud/mmixer.c b/reactos/drivers/wdm/audio/legacy/wdmaud/mmixer.c index 8623b5333ef..9887d0974a2 100644 --- a/reactos/drivers/wdm/audio/legacy/wdmaud/mmixer.c +++ b/reactos/drivers/wdm/audio/legacy/wdmaud/mmixer.c @@ -471,6 +471,32 @@ WdmAudControlOpenMixer( return SetIrpIoStatus(Irp, STATUS_SUCCESS, sizeof(WDMAUD_DEVICE_INFO)); } +NTSTATUS +WdmAudControlCloseMixer( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PWDMAUD_DEVICE_INFO DeviceInfo, + IN PWDMAUD_CLIENT ClientInfo, + IN ULONG Index) +{ + /* Remove event associated to this client */ + if (MMixerClose(&MixerContext, DeviceInfo->DeviceIndex, ClientInfo, EventCallback)) + { + DPRINT1("Failed to close mixer\n"); + return SetIrpIoStatus(Irp, STATUS_UNSUCCESSFUL, sizeof(WDMAUD_DEVICE_INFO)); + } + + /* Dereference event */ + if (ClientInfo->hPins[Index].NotifyEvent) + { + ObDereferenceObject(ClientInfo->hPins[Index].NotifyEvent); + ClientInfo->hPins[Index].NotifyEvent = NULL; + } + + /* FIXME: do we need to free ClientInfo->hPins ? */ + return SetIrpIoStatus(Irp, STATUS_SUCCESS, sizeof(WDMAUD_DEVICE_INFO)); +} + NTSTATUS NTAPI WdmAudGetControlDetails(