[wdmaudiodev] AVStream and Wave Devices Failure Resolution!

  • From: Sam Tertzakian <sam@xxxxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Thu, 6 Oct 2005 13:22:09 -0700 (PDT)

Hi, 

I have finally found out why SysAudio is returning
STATUS_NOT_SUPPORTED and failing to create a wave
device.

SysAudio wants to register using
IoRegisterPlugPlayNotification() to get notificaiton
about device arrival/removal. Eventually this request
goes to the underlying bus driver (under my device).
That bus driver (which is relatively new) is returning
STATUS_NOT_SUPPORTED which finally goes back to
SysAudio.

So, I either have to intercept the IRP making the
request and hack a temporary fix, or I have to wait
for the bus driver to be fixed. 

All of this information comes from Richard Fricks at
MSFT. I really appreciate everybody's attempt to help
me.

Now, the only remaining question is...What do I do
with all these monkeys?



--- Matt Gonzalez <matt@xxxxxxxxxxxxx> wrote:


---------------------------------
    Yes, if you see the names in KS Studio then you
have the friendly namesOK.   Let me know how it goes
adding the mediums & interfaces.

Matt


Sam Tertzakian wrote:  
Hi, Matt,Well, I just tried what I think are friendly
names and there is nodifference.Are those the friendly
names? I GUIDs for in the INF file and they appear
asPin Name on the Pins.-----Original Message-----From:
wdmaudiodev-bounce@xxxxxxxxxxxxx[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx]
On Behalf Of Sam TertzakianSent: Thursday, October 06,
2005 8:36 AMTo: wdmaudiodev@xxxxxxxxxxxxxxxxxxxx:
[wdmaudiodev] Re: AVStream and Wave DevicesHi,
Matt,Isn't the friendly name this:
g_PINNAME_AUDIO_RENDER org_PINNAME_AUDIO_CAPTURE?It is
commented out in the example I sent you...but, that is
what I hadorinally...at some point in my testing I
decided to go with those othernames...probably because
they were in some other PortCls driver I
hadwritten.But, I will try those again, right
now...just to make sure...Or, if those are not the
"friendly names"...then maybe I don't know what
a"friendly name" is.-----Original Message-----From:
wdmaudiodev-bounce@xxxxxxxxxxxxx[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx]
On Behalf Of Matt GonzalezSent: Thursday, October 06,
2005 8:31 AMTo: wdmaudiodev@xxxxxxxxxxxxxxxxxxxx:
[wdmaudiodev] Re: AVStream and Wave DevicesThe first
thing I notice is that you don't have any friendly
names for your pins - the Name member of
KSPIN_DESCRIPTOR.  This may actually be all it takes. 
Try adding that - if that doesn't work, I'll do a
closer look.Windows Vista will use the friendly names
of the pins to name the wave devices, so you'll want
to do this anyhow.MattSam Tertzakian wrote:  
      
Hi, Matt,Thank you for your time...Yes, I have tried
several variations of the "needs" and "include"....I
justsent you one of the combinations. I am sure that
is not the problem. Thereis no doubt that SysAudio
sees my device...it is trying to register it,
butreturns STATUS_NOT_SUPPORTED.As for the GUID, yes,
I have tried several variations of that. In my
latestversion, I use "Wave" and "Topology" instead of
a GUID and I useKsCreateFilter twice and pass in
"Wave" and "Topology".Again, I just sent one of the
variations. I thought that perhaps it was because I
did not have a Topology filter. So,created that...as a
bonus, I get two STATUS_NOT_SUPPORTED, once for the   

    
Wave  
      
and now for the Topology.Here is some of the stuff you
asked for...I have removed comments to reduceclutter
and eliminate some word-wrapping issues.I have not
included my Topology filter since I am pretty that is
not theproblem. If the problem is not here, then I'll
send it separately.constGUIDCaptureFilterCategories
[CAPTURE_FILTER_CATEGORIES_COUNT] = {   STATICGUIDOF
(KSCATEGORY_AUDIO),   STATICGUIDOF
(KSCATEGORY_CAPTURE),   STATICGUIDOF
(KSCATEGORY_RENDER)};DECLARE_SIMPLE_FRAMING_EX (  
AudioDefaultAllocatorFraming,   STATICGUIDOF
(KSMEMORY_TYPE_KERNEL_NONPAGED),  
KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY |      
KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY,  
NUM_FRAMES,   0,   FRAME_SIZE,   FRAME_SIZE  
);KSDATARANGE_AUDIO     AudioFormat ={  {               sizeof(
KSDATARANGE_AUDIO ),            0,              0,              0,              
STATICGUIDOF(
KSDATAFORMAT_TYPE_AUDIO ),              STATICGUIDOF(
KSDATAFORMAT_SUBTYPE_PCM ),             STATICGUIDOF(
KSDATAFORMAT_SPECIFIER_WAVEFORMATEX )   },      2,      16,     16,
8000    8000};const PKSDATARANGE
AudioCapturePinDataRanges[
CAPTURE_PIN_DATA_RANGE_COUNT ] = {   (PKSDATARANGE)
&AudioFormat};KSDATARANGE PinDataRangesBridge[ 1 ] ={ 
{     sizeof(KSDATARANGE),     0,     0,     0,    
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),    
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_ANALOG),    
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE) 
}};PKSDATARANGE PinDataRangePointersBridge[ 1 ] ={  
&PinDataRangesBridge[0]};constKSPIN_DESCRIPTOR_EXAudioPinDescriptorTemplate[
NUM_AUDIO_PINS + 2 ] = {        // Audio Render Pin:
AUDIO_PIN_RENDER        //      {               &AudioCapturePinDispatch,       
                                
NULL,           {                       NULL,                   0,              
                                NULL,           
0,                      SIZEOF_ARRAY( AudioCapturePinDataRanges ),              
AudioCapturePinDataRanges,                      KSPIN_DATAFLOW_IN,              
                
KSPIN_COMMUNICATION_BOTH,&KSCATEGORY_AUDIO,             
&KSNODETYPE_SPEAKER,                    //&g_PINNAME_AUDIO_RENDER,              
        0       
},              KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY |          
KSPIN_FLAG_FIXED_FORMAT,                1,                          
                        0,                                      
&AudioDefaultAllocatorFraming,          reinterpret_cast
<PFNKSINTERSECTHANDLEREX>               
(CAudioPin::IntersectHandler)           },      // Audio Capture
Pin: AUDIO_PIN_CAPTURE  //      {               &AudioCapturePinDispatch,
        NULL,           {                       NULL,                           
0,                                      
NULL,                           0,                      SIZEOF_ARRAY(
AudioCapturePinDataRanges ),            
AudioCapturePinDataRanges,                                              
KSPIN_DATAFLOW_OUT,   
                        KSPIN_COMMUNICATION_BOTH,                       
&KSCATEGORY_AUDIO,    
                        &KSAUDFNAME_RECORDING_CONTROL,          
//&g_PINNAME_AUDIO_CAPTURE,                     0                    
                        },              KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY |  
        
KSPIN_FLAG_FIXED_FORMAT,                1,                          
                0,                                      
&AudioDefaultAllocatorFraming,                  reinterpret_cast
<PFNKSINTERSECTHANDLEREX>               
(CAudioPin::IntersectHandler)   },      // Audio Render
BRIDGE Pin      //      {               NULL,           NULL,           {       
                0,                      NULL,                   0,              
NULL,                   SIZEOF_ARRAY(PinDataRangePointersBridge),               
PinDataRangePointersBridge,                     KSPIN_DATAFLOW_OUT,             
KSPIN_COMMUNICATION_BRIDGE,                     (GUID *)
&KSCATEGORY_AUDIO,                      NULL,                   0               
},      
KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY |          
KSPIN_FLAG_FIXED_FORMAT,                1,                          
                        0,                                              
NULL,                                                                   NULL    
                                                        },      // Audio 
Capture BRIDGE
Pin     //      {               NULL,           NULL,           {               
        0,                      NULL,                   0,                      
NULL,           
SIZEOF_ARRAY(PinDataRangePointersBridge),               
PinDataRangePointersBridge,                     KSPIN_DATAFLOW_IN,              
KSPIN_COMMUNICATION_BRIDGE,                     (GUID *)
&KSCATEGORY_AUDIO,                      NULL,                   0               
},      
KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY |          
KSPIN_FLAG_FIXED_FORMAT,                1,                          
        0,                                      NULL,                           
                        NULL                                    
},};#define NODE_ADC    0#define NODE_DAC       1#define
NODE_VOL        2#define NODE_SUM       3#define PIN_IN 1               // looks
like "i" for input#define PIN_OUT       0               // looks like "o"
for outputconst KSNODE_DESCRIPTOR FilterNodes[] ={   {
      NULL,                                            &KSNODETYPE_ADC,        
// Type
      NULL                    // Name   },   {      
NULL,                                          &KSNODETYPE_DAC,        // Type  
    
NULL                    // Name   },};const
KSTOPOLOGY_CONNECTION FilterConnections[] ={    // Render
path.   //      { KSFILTER_NODE, AUDIO_PIN_RENDER,
NODE_DAC, PIN_IN },     { NODE_DAC,     PIN_OUT,
KSFILTER_NODE,  AUDIO_PIN_RENDER_BRIDGE },      // Capture
path.   //      { KSFILTER_NODE,        AUDIO_PIN_CAPTURE_BRIDGE,
NODE_ADC,PIN_IN },      { NODE_ADC,      PIN_OUT,
KSFILTER_NODE,  AUDIO_PIN_CAPTURE }};//
CaptureFilterDescription://const KSFILTER_DESCRIPTOR
CaptureFilterDescriptor = {     &CaptureFilterDispatch,
        NULL,KSFILTER_DESCRIPTOR_VERSION,   
KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING,   
&XXXXNAME_Filter,       // I call KsCreateFilter so this is
ignoredanyway   DEFINE_KSFILTER_PIN_DESCRIPTORS
(AudioPinDescriptorTemplate),   
DEFINE_KSFILTER_CATEGORIES (CaptureFilterCategories),
DEFINE_KSFILTER_NODE_DESCRIPTORS( FilterNodes
),DEFINE_KSFILTER_CONNECTIONS(FilterConnections),       
NULL};-----Original Message-----From:
wdmaudiodev-bounce@xxxxxxxxxxxxx[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx]
On Behalf Of Matt GonzalezSent: Wednesday, October 05,
2005 5:07 PMTo: wdmaudiodev@xxxxxxxxxxxxxxxxxxxx:
[wdmaudiodev] Re: AVStream and Wave DevicesHere's what
I have in my INF that's different:My "include" and
"needs" lines are different; here's mine:Include=
ks.inf, ksfilter.inf,
wdmaudio.infNeeds=KS.RegistrationNeeds=WDMAUDIO.RegistrationAlsoInstall=ks.registration(ks.inf),wdmaudio.registration(wdmaudio.inf)You've
got this:XXX_FILTER_REF_GUID     = "XXXX0"but it's a
real GUID in your actual INF file, right?  And you're
passing that same GUID in your filter descriptor as
the reference guid?What you have here looks OK,
though.  I would guess that the problem is with your
filter descriptor.  If you like, go ahead and post the
whole thing (filter, pins, nodes, connections,
everything).Matt******************WDMAUDIODEV
addresses:Post message:
mailto:wdmaudiodev@xxxxxxxxxxxxxxxxxxxxxx:   
mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribeUnsubscribe:

mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribeModerator:
   mailto:wdmaudiodev-moderators@xxxxxxxxxxxxxxxx to
WDMAUDIODEV
page:http://www.wdmaudiodev.com/******************WDMAUDIODEV
addresses:Post message:
mailto:wdmaudiodev@xxxxxxxxxxxxxxxxxxxxxx:   
mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribeUnsubscribe:

mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribeModerator:
   mailto:wdmaudiodev-moderators@xxxxxxxxxxxxxxxx to
WDMAUDIODEV page:http://www.wdmaudiodev.com/     
    
******************WDMAUDIODEV addresses:Post message:
mailto:wdmaudiodev@xxxxxxxxxxxxxxxxxxxxxx:   
mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribeUnsubscribe:

mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribeModerator:
   mailto:wdmaudiodev-moderators@xxxxxxxxxxxxxxxx to
WDMAUDIODEV
page:http://www.wdmaudiodev.com/******************WDMAUDIODEV
addresses:Post message:
mailto:wdmaudiodev@xxxxxxxxxxxxxxxxxxxxxx:   
mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribeUnsubscribe:

mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribeModerator:
   mailto:wdmaudiodev-moderators@xxxxxxxxxxxxxxxx to
WDMAUDIODEV
page:http://www.wdmaudiodev.com/******************WDMAUDIODEV
addresses:Post message:
mailto:wdmaudiodev@xxxxxxxxxxxxxxxxxxxxxx:   
mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribeUnsubscribe:

mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribeModerator:
   mailto:wdmaudiodev-moderators@xxxxxxxxxxxxxxxx to
WDMAUDIODEV page:http://www.wdmaudiodev.com/  


******************WDMAUDIODEV addresses:Post message:
mailto:wdmaudiodev@xxxxxxxxxxxxxxxxxxxxxx:   
mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribeUnsubscribe:

mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribeModerator:
   mailto:wdmaudiodev-moderators@xxxxxxxxxxxxxxxx to
WDMAUDIODEV page:http://www.wdmaudiodev.com/

******************

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/

Other related posts:

  • » [wdmaudiodev] AVStream and Wave Devices Failure Resolution!