@@ -2028,7 +2028,10 @@ USBHUB_FdoHandlePnp(
2028
2028
{
2029
2029
Status = USBHUB_ParentFDOStartDevice (DeviceObject , Irp );
2030
2030
}
2031
- break ;
2031
+
2032
+ Irp -> IoStatus .Status = Status ;
2033
+ IoCompleteRequest (Irp , IO_NO_INCREMENT );
2034
+ return Status ;
2032
2035
}
2033
2036
2034
2037
case IRP_MN_QUERY_DEVICE_RELATIONS :
@@ -2059,17 +2062,17 @@ USBHUB_FdoHandlePnp(
2059
2062
2060
2063
Irp -> IoStatus .Information = (ULONG_PTR )DeviceRelations ;
2061
2064
Irp -> IoStatus .Status = Status ;
2062
- return ForwardIrpAndForget ( DeviceObject , Irp ) ;
2065
+ break ;
2063
2066
}
2064
2067
case RemovalRelations :
2065
2068
{
2066
2069
DPRINT ("IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / RemovalRelations\n" );
2067
- return ForwardIrpAndForget ( DeviceObject , Irp ) ;
2070
+ break ;
2068
2071
}
2069
2072
default :
2070
2073
DPRINT ("IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / Unknown type 0x%lx\n" ,
2071
2074
Stack -> Parameters .QueryDeviceRelations .Type );
2072
- return ForwardIrpAndForget ( DeviceObject , Irp ) ;
2075
+ break ;
2073
2076
}
2074
2077
break ;
2075
2078
}
@@ -2078,10 +2081,11 @@ USBHUB_FdoHandlePnp(
2078
2081
{
2079
2082
DPRINT ("IRP_MN_QUERY_STOP_DEVICE\n" );
2080
2083
Irp -> IoStatus .Status = STATUS_SUCCESS ;
2081
- return ForwardIrpAndForget ( DeviceObject , Irp ) ;
2084
+ break ;
2082
2085
}
2083
2086
case IRP_MN_REMOVE_DEVICE :
2084
2087
{
2088
+ // Should be reworked later in this commits set
2085
2089
DPRINT ("IRP_MN_REMOVE_DEVICE\n" );
2086
2090
Irp -> IoStatus .Status = STATUS_SUCCESS ;
2087
2091
IoCompleteRequest (Irp , IO_NO_INCREMENT );
@@ -2093,29 +2097,33 @@ USBHUB_FdoHandlePnp(
2093
2097
}
2094
2098
case IRP_MN_QUERY_BUS_INFORMATION :
2095
2099
{
2100
+ // Function drivers and filter drivers do not handle this IRP.
2096
2101
DPRINT ("IRP_MN_QUERY_BUS_INFORMATION\n" );
2097
2102
break ;
2098
2103
}
2099
2104
case IRP_MN_QUERY_ID :
2100
2105
{
2101
2106
DPRINT ("IRP_MN_QUERY_ID\n" );
2107
+ // Function drivers and filter drivers do not handle this IRP.
2102
2108
break ;
2103
2109
}
2104
2110
case IRP_MN_QUERY_CAPABILITIES :
2105
2111
{
2112
+ //
2113
+ // If a function or filter driver does not handle this IRP, it
2114
+ // should pass that down.
2115
+ //
2106
2116
DPRINT ("IRP_MN_QUERY_CAPABILITIES\n" );
2107
2117
break ;
2108
2118
}
2109
2119
default :
2110
2120
{
2111
2121
DPRINT (" IRP_MJ_PNP / unknown minor function 0x%lx\n" , Stack -> MinorFunction );
2112
- return ForwardIrpAndForget ( DeviceObject , Irp ) ;
2122
+ break ;
2113
2123
}
2114
2124
}
2115
2125
2116
- Irp -> IoStatus .Status = Status ;
2117
- IoCompleteRequest (Irp , IO_NO_INCREMENT );
2118
- return Status ;
2126
+ return ForwardIrpAndForget (DeviceObject , Irp );
2119
2127
}
2120
2128
2121
2129
NTSTATUS
0 commit comments