return SP_RETURN_FOUND;
}
-static FORCEINLINE VOID
-__FdoSrbPnp(
- __in PXENVBD_FDO Fdo,
- __in PSCSI_PNP_REQUEST_BLOCK Srb
- )
-{
- if (!(Srb->SrbPnPFlags & SRB_PNP_FLAGS_ADAPTER_REQUEST)) {
- PXENVBD_PDO Pdo;
-
- Pdo = __FdoGetPdo(Fdo, Srb->TargetId);
- if (Pdo) {
- PdoSrbPnp(Pdo, Srb);
- PdoDereference(Pdo);
- }
- }
-}
-
BOOLEAN
FdoBuildIo(
__in PXENVBD_FDO Fdo,
return TRUE;
// dont pass to StartIo
- case SRB_FUNCTION_PNP:
- __FdoSrbPnp(Fdo, (PSCSI_PNP_REQUEST_BLOCK)Srb);
- Srb->SrbStatus = SRB_STATUS_SUCCESS;
- break;
case SRB_FUNCTION_ABORT_COMMAND:
Srb->SrbStatus = SRB_STATUS_ABORT_FAILED;
break;
}
}
-VOID
-PdoSrbPnp(
- __in PXENVBD_PDO Pdo,
- __in PSCSI_PNP_REQUEST_BLOCK Srb
- )
-{
- switch (Srb->PnPAction) {
- case StorQueryCapabilities: {
- PSTOR_DEVICE_CAPABILITIES DeviceCaps = Srb->DataBuffer;
- PXENVBD_CAPS Caps = FrontendGetCaps(Pdo->Frontend);
-
- if (Caps->Removable)
- DeviceCaps->Removable = 1;
- if (Caps->Removable)
- DeviceCaps->EjectSupported = 1;
- if (Caps->SurpriseRemovable)
- DeviceCaps->SurpriseRemovalOK = 1;
-
- DeviceCaps->UniqueID = 1;
-
- } break;
-
- default:
- break;
- }
-}
-
//=============================================================================
// PnP Handler
static FORCEINLINE VOID