diff --git a/reactos/drivers/wdm/audio/backpln/portcls/dma_slave.c b/reactos/drivers/wdm/audio/backpln/portcls/dma_slave.c index 95efdf09bdd..7b63c401e24 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/dma_slave.c +++ b/reactos/drivers/wdm/audio/backpln/portcls/dma_slave.c @@ -484,15 +484,20 @@ PcNewDmaChannel( ULONG MapRegisters; INTERFACE_TYPE BusType; ULONG ResultLength; + PCExtension* DeviceExt; IDmaChannelSlaveImpl * This; + DPRINT1("OutDmaChannel %p OuterUnknown %p PoolType %p DeviceDescription %p DeviceObject %p\n", + OutDmaChannel, OuterUnknown, PoolType, DeviceDescription, DeviceObject); + This = AllocateItem(PoolType, sizeof(IDmaChannelSlaveImpl), TAG_PORTCLASS); if (!This) { return STATUS_INSUFFICIENT_RESOURCES; } + DeviceExt = (PCExtension*) DeviceObject->DeviceExtension; Status = IoGetDeviceProperty(DeviceObject, DevicePropertyLegacyBusType, sizeof(BusType), (PVOID)&BusType, &ResultLength); if (NT_SUCCESS(Status)) @@ -500,7 +505,9 @@ PcNewDmaChannel( DeviceDescription->InterfaceType = BusType; } - Adapter = IoGetDmaAdapter(DeviceObject, DeviceDescription, &MapRegisters); + DPRINT1("Calling IoGetDmaAdapter\n"); + + Adapter = IoGetDmaAdapter(DeviceExt->PhysicalDeviceObject, DeviceDescription, &MapRegisters); if (!Adapter) { FreeItem(This, TAG_PORTCLASS); @@ -516,7 +523,7 @@ PcNewDmaChannel( This->MaxMapRegisters = MapRegisters; *OutDmaChannel = (PVOID)(&This->lpVtbl); - + DPRINT1("PcNewDmaChannel result %p\n", *OutDmaChannel); return STATUS_SUCCESS; } diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port_wavecyclic.c b/reactos/drivers/wdm/audio/backpln/portcls/port_wavecyclic.c index a2013628382..29e9d2f2496 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/port_wavecyclic.c +++ b/reactos/drivers/wdm/audio/backpln/portcls/port_wavecyclic.c @@ -139,6 +139,8 @@ IPortWaveCyclic_fnInit( PPOWERNOTIFY PowerNotify; IPortWaveCyclicImpl * This = (IPortWaveCyclicImpl*)iface; + DPRINT1("IPortWaveCyclic_Init entered\n"); + if (This->bInitialized) { DPRINT("IPortWaveCyclic_Init called again\n"); @@ -152,11 +154,21 @@ IPortWaveCyclic_fnInit( return STATUS_INVALID_PARAMETER; } + /* Initialize port object */ + This->pMiniport = Miniport; + This->pDeviceObject = DeviceObject; + This->bInitialized = TRUE; + This->pResourceList = ResourceList; + + /* increment reference on miniport adapter */ + Miniport->lpVtbl->AddRef(Miniport); + Status = Miniport->lpVtbl->Init(Miniport, UnknownAdapter, ResourceList, iface); if (!NT_SUCCESS(Status)) { DPRINT("IMiniportWaveCyclic_Init failed with %x\n", Status); Miniport->lpVtbl->Release(Miniport); + This->bInitialized = FALSE; return Status; } @@ -172,6 +184,7 @@ IPortWaveCyclic_fnInit( Status = Miniport->lpVtbl->GetDescription(Miniport, &This->pDescriptor); if (!NT_SUCCESS(Status)) { + DPRINT1("failed to get description\n"); Miniport->lpVtbl->Release(Miniport); return Status; } @@ -188,18 +201,11 @@ IPortWaveCyclic_fnInit( This->pPowerNotify = NULL; } - - /* Initialize port object */ - This->pMiniport = Miniport; - This->pDeviceObject = DeviceObject; - This->bInitialized = TRUE; - This->pResourceList = ResourceList; - - /* increment reference on miniport adapter */ - Miniport->lpVtbl->AddRef(Miniport); /* increment reference on resource list */ ResourceList->lpVtbl->AddRef(ResourceList); + + DPRINT1("IPortWaveCyclic successfully initialized\n"); return STATUS_SUCCESS; } @@ -314,7 +320,7 @@ IPortWaveCyclic_fnNotify( ServiceGroup->lpVtbl->RequestService (ServiceGroup); } -static const IPortWaveCyclicVtbl vt_IPortWaveCyclicVtbl = +static IPortWaveCyclicVtbl vt_IPortWaveCyclicVtbl = { IPortWaveCyclic_fnQueryInterface, IPortWaveCyclic_fnAddRef, @@ -506,8 +512,8 @@ NewPortWaveCyclic( if (!This) return STATUS_INSUFFICIENT_RESOURCES; - This->lpVtbl = (IPortWaveCyclicVtbl*)&vt_IPortWaveCyclicVtbl; - This->lpVtblSubDevice = (ISubdeviceVtbl*)&vt_ISubdeviceVtbl; + This->lpVtbl = &vt_IPortWaveCyclicVtbl; + This->lpVtblSubDevice = &vt_ISubdeviceVtbl; This->ref = 1; *OutPort = (PPORT)(&This->lpVtbl);