Trouble getting MCE to see BDA swtuner example driver

Ok, I shall try to pass that GUID_BUS_INTERFACE_STANDARD request down to the USB bus and return the response.

I’ve found in the WDK that the KSMEDIUMSETID_Standard interface is mapped to the REFERENCE_BUS_INTERFACE interface in ks.h:

typedef struct {
//
// Standard interface header
//

INTERFACE Interface;

//
// Standard bus interfaces
//

PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject;
PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject;
PFNQUERYREFERENCESTRING QueryReferenceString;

} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE;

#define STATIC_REFERENCE_BUS_INTERFACE STATIC_KSMEDIUMSETID_Standard
#define REFERENCE_BUS_INTERFACE KSMEDIUMSETID_Standard

This is actually a documented interface:

http://msdn.microsoft.com/en-us/library/ff557584(v=VS.85).aspx

Did you implement this interface?

Thx
Nick Clarke
www.redsoftsys.com

Hi Tim

I’ve also checked the documentation for IRP_MN_QUERY_INTERFACE and BUS_INTERFACE_STANDARD and am unsure as to whether to pass this IRP down to the USBD driver, without blocking, or to block the IRP while getting the response from USBD then return the interface.

I suppose, that because I’m a ‘fake’ bus sitting on top of USB, that I should do as suggested in the documentation for IRP_MN_QUERY_INTERFACE:

“A driver must not queue this IRP if the IRP requests an interface that the driver does not support. A driver must check Parameters.QueryInterface.InterfaceType in its IO_STACK_LOCATION structure. If the interface is not one the driver supports, the driver must pass the IRP to the next lower driver in the device stack without blocking.”

Can you confirm how you handled this IRP?

Many thanks
Nick Clarke
www.redosftsys.com

xxxxx@redsoftsys.com wrote:

I’ve also checked the documentation for IRP_MN_QUERY_INTERFACE and BUS_INTERFACE_STANDARD and am unsure as to whether to pass this IRP down to the USBD driver, without blocking, or to block the IRP while getting the response from USBD then return the interface.

“A driver must not queue this IRP if the IRP requests an interface that the driver does not support. A driver must check Parameters.QueryInterface.InterfaceType in its IO_STACK_LOCATION structure. If the interface is not one the driver supports, the driver must pass the IRP to the next lower driver in the device stack without blocking.”

Can you confirm how you handled this IRP?

We did not handle it. We just passed it along, in both the FDO and PDO.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.