break;
}
}
- Status = STATUS_SUCCESS;
+ // Here we should leave Status as is.
+ Status = Irp->IoStatus.Status;
break;
}
case IRP_MN_QUERY_CAPABILITIES:
// handle device interface requests
//
Status = HandleQueryInterface(IoStack);
+
+ //
+ // If a bus driver does not export the requested interface, it
+ // should leave Status as is.
+ //
+ if (Status == STATUS_NOT_SUPPORTED)
+ Status = Irp->IoStatus.Status;
+
break;
}
case IRP_MN_REMOVE_DEVICE:
//
// FIXME: implement support for real hubs
//
- UNIMPLEMENTED
+ UNIMPLEMENTED;
Status = STATUS_NOT_IMPLEMENTED;
}
break;
// generate setup packet
//
CtrlSetup.bmRequestType.B = 0;
- CtrlSetup.bmRequestType._BM.Recipient = BMREQUEST_TO_DEVICE;
- CtrlSetup.bmRequestType._BM.Type = BMREQUEST_CLASS;
+ CtrlSetup.bmRequestType.Recipient = BMREQUEST_TO_DEVICE;
+ CtrlSetup.bmRequestType.Type = BMREQUEST_CLASS;
CtrlSetup.bRequest = Urb->UrbControlVendorClassRequest.Request;
CtrlSetup.wValue.W = Urb->UrbControlVendorClassRequest.Value;
CtrlSetup.wIndex.W = Urb->UrbControlVendorClassRequest.Index;
//
// data direction is device to host
//
- CtrlSetup.bmRequestType._BM.Dir = BMREQUEST_DEVICE_TO_HOST;
+ CtrlSetup.bmRequestType.Dir = BMREQUEST_DEVICE_TO_HOST;
}
//
// initialize setup packet
//
CtrlSetup.bmRequestType.B = 0;
- CtrlSetup.bmRequestType._BM.Recipient = BMREQUEST_TO_DEVICE;
- CtrlSetup.bmRequestType._BM.Type = BMREQUEST_VENDOR;
+ CtrlSetup.bmRequestType.Recipient = BMREQUEST_TO_DEVICE;
+ CtrlSetup.bmRequestType.Type = BMREQUEST_VENDOR;
CtrlSetup.bRequest = Urb->UrbControlVendorClassRequest.Request;
CtrlSetup.wValue.W = Urb->UrbControlVendorClassRequest.Value;
CtrlSetup.wIndex.W = Urb->UrbControlVendorClassRequest.Index;
//
// data direction is device to host
//
- CtrlSetup.bmRequestType._BM.Dir = BMREQUEST_DEVICE_TO_HOST;
+ CtrlSetup.bmRequestType.Dir = BMREQUEST_DEVICE_TO_HOST;
}
//
{
CHubController * Controller = (CHubController*)BusContext;
- DPRINT1("USBH_InterfaceReference\n");
+ DPRINT("USBI_InterfaceReference\n");
//
// add reference
{
CHubController * Controller = (CHubController*)BusContext;
- DPRINT1("USBH_InterfaceDereference\n");
+ DPRINT("USBI_InterfaceDereference\n");
//
// release
PVOID BusContext,
BOOLEAN Enable)
{
- UNIMPLEMENTED
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
ULONG HubSymNameBufferLength,
PULONG HubSymNameActualLength)
{
- UNIMPLEMENTED
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
PVOID HubBusContext,
PVOID DeviceHandle)
{
- UNIMPLEMENTED
+ UNIMPLEMENTED;
return NULL;
}
PVOID BusContext,
PVOID DeviceHandle)
{
- UNIMPLEMENTED
+ UNIMPLEMENTED;
}
VOID
PVOID BusContext,
PULONG CurrentFrame)
{
- UNIMPLEMENTED
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
PVOID BusContext,
PURB Urb)
{
- UNIMPLEMENTED
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
PULONG BusInformationBufferLength,
PULONG BusInformationActualLength)
{
- UNIMPLEMENTED
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
ULONG P1,
ULONG P2)
{
- UNIMPLEMENTED
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
InterfaceHub->SetDeviceHandleData = USBHI_SetDeviceHandleData;
}
+ InterfaceHub->InterfaceReference(InterfaceHub->BusContext);
//
// request completed
//
InterfaceDI->EnumLogEntry = USBDI_EnumLogEntry;
}
+ InterfaceDI->InterfaceReference(InterfaceDI->BusContext);
//
// request completed
//