SCSI_PNP_REQUEST_BLOCK結構 (minitape.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 驅動程式要求已完成。 迷你埠驅動程式會透過呼叫 StorPortNotification 例程,以通知類型為 RequestComplete,向 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 延伸模組的指標。 如果迷你埠驅動程式在 HW_INITIALIZATION_DATA 結構中將 SrbExtensionSize 設定為零,則不得使用此成員。 Storport 驅動程式不會初始化這個成員所指向的記憶體。 HBA 可以直接存取迷你埠驅動程式寫入 SRB 擴充功能的數據。 迷你埠驅動程式可以藉由呼叫 storPortGetPhysicalAddress 例程 來取得 SRB 延伸模組的實體位址。
SrbPnPFlags
PNP 旗標。 目前,唯一允許的旗標是SRB_PNP_FLAGS_ADAPTER_REQUEST,這表示 PNP 要求適用於適配卡,而不是適配卡上的其中一個裝置。 如果設定此旗標,miniport 驅動程式應該忽略 PathId、TargetId和 Lun中的值。
Reserved
保留供系統使用。
Reserved4[16]
保留供系統使用。
言論
Storport 驅動程式會將 SCSI_PNP_REQUEST_BLOCK 要求傳送至迷你埠驅動程式,以通知小型埠驅動程式 Windows 隨插即用事件,這些事件會影響連線到適配卡的存儲設備。
Storport 驅動程式會呼叫 HwStorBuildIo,以將 SRB 傳遞至迷你埠驅動程式。 HwStorBuildIo 會檢查 SRB 的 函式 成員,以判斷 SRB 的類型。 如果 函式 成員設定為 SRB_FUNCTION_PNP,SRB 是 類型 SCSI_PNP_REQUEST_BLOCK結構。
要求
要求 | 價值 |
---|---|
標頭 | minitape.h (包括 Storport.h、Minitape.h、Srb.h) |