Hi Matthew: The KSPROPSETID_BtAudio works for virtual driver A. But after I porting the function to another virtual driver, PropertyHandler_TopoFilter don't get called with GUID KSPROPSETID_BtAudio. If the KSPROPSETID_BtAudio is sent and TYPE is BASICSUPPORT, it will be handled. KSPROPERTY_JACK_DESCRIPTION and KSPROPERTY_JACK_DESCRIPTION2 will be sent and handled successfully though. Here is the code added to support KSPROPSETID_BtAudio: ---------------------------------------------------------------------------------------------------------------------- static PCPROPERTY_ITEM PropertiesTopoFilter[] = { { &KSPROPSETID_Jack, KSPROPERTY_JACK_DESCRIPTION, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, PropertyHandler_TopoFilter }, { &KSPROPSETID_Jack, KSPROPERTY_JACK_DESCRIPTION2, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, PropertyHandler_TopoFilter }, { &KSPROPSETID_BtAudio, KSPROPERTY_ONESHOT_RECONNECT, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, PropertyHandler_TopoFilter }, { &KSPROPSETID_BtAudio, KSPROPERTY_ONESHOT_DISCONNECT, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, PropertyHandler_TopoFilter } }; DEFINE_PCAUTOMATION_TABLE_PROP(AutomationTopoFilter, PropertiesTopoFilter); static PCFILTER_DESCRIPTOR MiniportFilterTopoDescriptor = { 0, // Version &AutomationTopoFilter, // AutomationTable ... ... }; STDMETHODIMP CMiniportTopology::Init( IN PUNKNOWN UnknownAdapter, IN PRESOURCELIST ResourceList, IN PPORTTOPOLOGY Port_) { .... ntStatus = CMiniportTopologyMSVAD::Init(UnknownAdapter, Port_); if (NT_SUCCESS(ntStatus)) { m_FilterDescriptor = &MiniportFilterTopoDescriptor; } return ntStatus; } ---------------------------------------------------------------------------------------------------------------------- Any suggestions? Thanks