Author: janderwald Date: Sun Mar 22 11:27:52 2015 New Revision: 66853 URL: http://svn.reactos.org/svn/reactos?rev=66853&view=rev Log: [SYSAUDIO][KMIXER] - convert to pnp software device
Modified: trunk/reactos/drivers/wdm/audio/filters/kmixer/kmixer.c trunk/reactos/drivers/wdm/audio/sysaudio/main.c trunk/reactos/media/inf/wdmaudio.inf Modified: trunk/reactos/drivers/wdm/audio/filters/kmixer/kmixer.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/filters/kmixer/kmixer.c?rev=66853&r1=66852&r2=66853&view=diff ============================================================================== --- trunk/reactos/drivers/wdm/audio/filters/kmixer/kmixer.c [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/filters/kmixer/kmixer.c [iso-8859-1] Sun Mar 22 11:27:52 2015 @@ -40,13 +40,15 @@ NTSTATUS NTAPI -KMix_InstallDevice( - IN PDRIVER_OBJECT DriverObject) +KMix_AddDevice( + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT PhysicalDeviceObject) { NTSTATUS Status; UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\kmixer"); PDEVICE_OBJECT DeviceObject; PKMIXER_DEVICE_EXT DeviceExtension; + PDEVICE_OBJECT NextDeviceObject; DPRINT1("KMix_InstallDevice called\n"); @@ -80,8 +82,12 @@ /* set io flags */ DeviceObject->Flags |= DO_DIRECT_IO | DO_POWER_PAGABLE; + /* clear initializing flag */ DeviceObject->Flags &= ~ DO_DEVICE_INITIALIZING; + + NextDeviceObject = IoAttachDeviceToDeviceStack(DeviceObject, PhysicalDeviceObject); + KsSetDevicePnpAndBaseObject(DeviceExtension->KsDeviceHeader, NextDeviceObject, DeviceObject); DPRINT("KMix_InstallDevice result %x\n", Status); return STATUS_SUCCESS; @@ -110,6 +116,7 @@ DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = KsDefaultForwardIrp; DriverObject->MajorFunction[IRP_MJ_PNP] = KMix_Pnp; DriverObject->DriverUnload = KMix_Unload; + DriverObject->DriverExtension->AddDevice = KMix_AddDevice; - return KMix_InstallDevice(DriverObject); + return STATUS_SUCCESS; } Modified: trunk/reactos/drivers/wdm/audio/sysaudio/main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/sysaudio/main.c?rev=66853&r1=66852&r2=66853&view=diff ============================================================================== --- trunk/reactos/drivers/wdm/audio/sysaudio/main.c [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/sysaudio/main.c [iso-8859-1] Sun Mar 22 11:27:52 2015 @@ -131,17 +131,17 @@ NTSTATUS NTAPI -SysAudio_InstallDevice( - IN PDRIVER_OBJECT DriverObject) +SysAudio_AddDevice( + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT PhysicalDeviceObject) { NTSTATUS Status; UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\sysaudio"); UNICODE_STRING SymlinkName = RTL_CONSTANT_STRING(L"\\DosDevices\\sysaudio"); - PDEVICE_OBJECT DeviceObject; + PDEVICE_OBJECT DeviceObject, NextDeviceObject; SYSAUDIODEVEXT *DeviceExtension; - - DPRINT("SysAudio_InstallDevice called\n"); + DPRINT("SysAudio_AddDevice called\n"); /* Create the device */ Status = IoCreateDevice(DriverObject, @@ -160,7 +160,7 @@ } /* Register device interfaces */ - Status = SysAudioRegisterDeviceInterfaces(DeviceObject); + Status = SysAudioRegisterDeviceInterfaces(PhysicalDeviceObject); if (!NT_SUCCESS(Status)) { /* Failed to register @@ -215,6 +215,10 @@ /* clear initializing flag */ DeviceObject->Flags &= ~ DO_DEVICE_INITIALIZING; + /* atttach to device stack */ + NextDeviceObject = IoAttachDeviceToDeviceStack(DeviceObject, PhysicalDeviceObject); + KsSetDevicePnpAndBaseObject(DeviceExtension->KsDeviceHeader, NextDeviceObject, DeviceObject); + /* register shutdown notfication */ IoRegisterShutdownNotification(DeviceObject); @@ -259,7 +263,8 @@ /* Sysaudio needs to do work on pnp, so handle it */ DriverObject->MajorFunction[IRP_MJ_PNP] = SysAudio_Pnp; DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = SysAudio_Shutdown; - - /* Call our initialization function */ - return SysAudio_InstallDevice(DriverObject); -} + DriverObject->DriverExtension->AddDevice = SysAudio_AddDevice; + + /* done */ + return STATUS_SUCCESS; +} Modified: trunk/reactos/media/inf/wdmaudio.inf URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/inf/wdmaudio.inf?rev=66853&r1=66852&r2=66853&view=diff ============================================================================== --- trunk/reactos/media/inf/wdmaudio.inf [iso-8859-1] (original) +++ trunk/reactos/media/inf/wdmaudio.inf [iso-8859-1] Sun Mar 22 11:27:52 2015 @@ -25,8 +25,8 @@ ExcludeFromSelect = WDMAUDIO_CopyFilesOnlyId [GenericMfg] -;%WDM_KMIXER.DeviceDesc% = WDM_KMIXER, SW\{B7EAFDC0-A680-11D0-96D8-00AA0051E51D} -;%WDM_SYSAUDIO.DeviceDesc% = WDM_SYSAUDIO, SW\{A7C7A5B0-5AF3-11D1-9CED-00A024BF0407} +%WDM_KMIXER.DeviceDesc% = WDM_KMIXER, SW\{B7EAFDC0-A680-11D0-96D8-00AA0051E51D} +%WDM_SYSAUDIO.DeviceDesc% = WDM_SYSAUDIO, SW\{A7C7A5B0-5AF3-11D1-9CED-00A024BF0407} %WDM_WDMAUD.DeviceDesc% = WDM_WDMAUD, SW\{CD171DE3-69E5-11D2-B56D-0000F8754380} ;%WDM_DRMKAUD.DeviceDesc% = WDM_DRMKAUD, SW\{EEC12DB6-AD9C-4168-8658-B03DAEF417FE} @@ -51,11 +51,11 @@ [DeviceRegistration] ; Kmixer swenum install -;HKLM,%RunOnce%,"WDM_KMIXER0",,"rundll32.exe streamci.dll,StreamingDeviceSetup %WDM_KMIXER.DeviceId%,%KSNAME_Filter%,%KSCATEGORY_MIXER%,%17%\WDMAUDIO.inf,WDM_KMIXER.Interface.Install" -;HKLM,%RunOnce%,"WDM_KMIXER1",,"rundll32.exe streamci.dll,StreamingDeviceSetup %WDM_KMIXER.DeviceId%,%KSNAME_Filter%,%KSCATEGORY_AUDIO%,%17%\WDMAUDIO.inf,WDM_KMIXER.Interface.Install" +HKLM,%RunOnce%,"WDM_KMIXER0",,"rundll32.exe streamci.dll,StreamingDeviceSetup %WDM_KMIXER.DeviceId%,%KSNAME_Filter%,%KSCATEGORY_MIXER%,%17%\WDMAUDIO.inf,WDM_KMIXER.Interface.Install" +HKLM,%RunOnce%,"WDM_KMIXER1",,"rundll32.exe streamci.dll,StreamingDeviceSetup %WDM_KMIXER.DeviceId%,%KSNAME_Filter%,%KSCATEGORY_AUDIO%,%17%\WDMAUDIO.inf,WDM_KMIXER.Interface.Install" ; Sysaudio swenum install -;HKLM,%RunOnce%,"WDM_SYSAUDIO",,"rundll32.exe streamci.dll,StreamingDeviceSetup %WDM_SYSAUDIO.DeviceId%,%KSNAME_Filter%,%KSCATEGORY_SYSAUDIO%,%17%\WDMAUDIO.inf,WDM_SYSAUDIO.Interface.Install" +HKLM,%RunOnce%,"WDM_SYSAUDIO",,"rundll32.exe streamci.dll,StreamingDeviceSetup %WDM_SYSAUDIO.DeviceId%,%KSNAME_Filter%,%KSCATEGORY_SYSAUDIO%,%17%\WDMAUDIO.inf,WDM_SYSAUDIO.Interface.Install" ; WDMAud install HKLM,%RunOnce%,"WDM_WDMAUD",,"rundll32.exe streamci.dll,StreamingDeviceSetup %WDM_WDMAUD.DeviceId%,%KSNAME_Filter%,%KSCATEGORY_WDMAUD%,%17%\WDMAUDIO.inf,WDM_WDMAUD.Interface.Install"