[wdmaudiodev] Problem in running property handler routine

  • From: "Yong Liu" <ly.didiom@xxxxxxxxx>
  • To: wdmaudiodev <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 21 Feb 2007 13:13:33 -0500

<!--StartFragment-->I am developing a virtual audio driver following MSVAD
from DDK. The structure
of the driver is that the driver receives audio data from a service (user
mode)
through deviceiocontrol by setting IOCTL_KS_PROPERTY, and the driver is
tested
in graphedit. The property is defined in filter not pin, also in
CMiniportWaveCyclicMSVAD, I declared a pointer to
CMiniportWaveCyclicStreamMSVAD, so that when calling NewStream, the pointer
is
assigned to the new stream. This will let the filter to access to pin. In
the
property handler routine, there is an error to access the dma buffer. Here
is
part of the code:

CMiniportWaveCyclicMSVAD *that;
that = (CMiniportWaveCyclicMSVAD *)PropertyRequest->MajorTarget;

if (PropertyRequest->Verb & KSPROPERTY_TYPE_SET)
{
if (PropertyRequest->PropertyItem->Id != KSPROPERTY_XXX)
{
                               return ntStatus;
}
// validate buffer size.
               if (PropertyRequest->InstanceSize < 3200)
               {
return ntStatus;
}
if( that->m_pNewStream == NULL )
{
return ntStatus;
}

ASSERT(NULL!=that->m_pNewStream->m_pvDmaBuffer);   ---------error
RtlCopyMemory(that->m_pNewStream->m_pvDmaBuffer, PropertyRequest->Instance,
3200);

ntStatus = STATUS_SUCCESS;
}

m_pNewStream is the pointer declared in CMiniportWaveCyclicMSVAD, and it is
assigned to the new stream when created in ::NewStream. m_pvDmaBuffer is the

pointer to the buffer assigned to the dma. I am puzzled that m_pNewStream !=

NULL, but m_pvDmaBuffer == NULL.

Thanks for your help.

Yong

Other related posts:

  • » [wdmaudiodev] Problem in running property handler routine