I must have missed an email. I assume you want me to set the intefaces member and mediums member of the pins. I know I have tried the interfaces, but I don't think I have tried mediums...but, somehow it did not seem to me (for a reason I cannot remember) that I need that. I will try it. --- 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/