SCSI_PNP_REQUEST_BLOCK 結構 (srb.h)
SCSI_PNP_REQUEST_BLOCK 結構是用於隨插即用 (PNP) 要求的特殊SCSI_REQUEST_BLOCK版本。
語法
typedef struct _SCSI_PNP_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR PnPSubFunction;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
STOR_PNP_ACTION PnPAction;
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID SenseInfoBuffer;
struct _SCSI_REQUEST_BLOCK *NextSrb;
PVOID OriginalRequest;
PVOID SrbExtension;
ULONG SrbPnPFlags;
ULONG Reserved;
UCHAR Reserved4[16];
} SCSI_PNP_REQUEST_BLOCK, *PSCSI_PNP_REQUEST_BLOCK;
成員
Length
SCSI_PNP_REQUEST_BLOCK 結構的大小 ,以位元組為單位。
Function
要執行的作業。 對於 SCSI_PNP_REQUEST_BLOCK 結構,這個成員一律會設定為 SRB_FUNCTION_PNP。
SrbStatus
已完成要求的狀態。 迷你埠驅動程序應該先設定此值,再通知 Storport 驅動程式要求已完成。 迷你埠驅動程式會透過呼叫具有 RequestComplete 通知類型的 StorPortNotification 例程,通知 Storport 驅動程式已完成要求。 如需可能的狀態值清單,請參閱 SCSI_REQUEST_BLOCK。
PnPSubFunction
目前未使用此成員。 迷你埠驅動程式會忽略此成員。
PathId
要求的 SCSI 埠或總線標識碼。 此值是以零為起始。
TargetId
總線上的目標控制器或裝置標識碼。
Lun
裝置的 LUN) (邏輯單元編號。
PnPAction
要執行的隨插即用動作。 此成員可以有下列其中一個值:
SrbFlags
Miniport 驅動程序應該忽略此成員。
DataTransferLength
Miniport 驅動程序應該忽略此成員。
TimeOutValue
在 Storport 驅動程序判斷要求逾時之前,要求可執行的間隔,以秒為單位。
DataBuffer
Miniport 驅動程序應該忽略此成員。
SenseInfoBuffer
Miniport 驅動程序應該忽略此成員。
NextSrb
Miniport 驅動程序應該忽略此成員。
OriginalRequest
Miniport 驅動程序應該忽略此成員。
SrbExtension
SRB 延伸模組的指標。 如果迷你埠驅動程式將 SrbExtensionSize 設定為 HW_INITIALIZATION_DATA 結構中的零,則不得使用此成員。 Storport 驅動程式不會初始化這個成員所指向的記憶體。 HBA 可以直接存取迷你埠驅動程式寫入 SRB 擴充功能的數據。 迷你埠驅動程式可以藉由呼叫 StorPortGetPhysicalAddress 例程來取得 SRB 延伸模組的實體位址。
SrbPnPFlags
PNP 旗標。 目前,唯一允許的旗標是SRB_PNP_FLAGS_ADAPTER_REQUEST,這表示 PNP 要求適用於適配卡,而不是適配卡上的其中一個裝置。 如果設定此旗標,迷你埠驅動程序應該忽略 PathId、 TargetId和 Lun 中的值。
Reserved
保留供系統使用。
Reserved4[16]
保留供系統使用。
備註
Storport 驅動程式會將 SCSI_PNP_REQUEST_BLOCK 要求傳送至迷你埠驅動程式,以通知迷你埠驅動程式的 Windows 隨插即用事件,這些事件會影響連線到適配卡的存儲設備。
Storport 驅動程式會呼叫 HwStorBuildIo ,以將 SRB 傳遞至迷你埠驅動程式。 HwStorBuildIo 會檢查 SRB 的 Function 成員,以判斷 SRB 的類型。 如果 Function 成員設定為 SRB_FUNCTION_PNP,SRB 是 類型為 SCSI_PNP_REQUEST_BLOCK 的結構。
規格需求
需求 | 值 |
---|---|
標頭 | srb.h (包含 Storport.h、Minitape.h、Srb.h) |