SCSI_WMI_REQUEST_BLOCK 結構 (storport.h)
此結構是 SCSI_REQUEST_BLOCK 的特殊版本,可與 WMI 命令搭配使用。
語法
typedef struct _SCSI_WMI_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR WMISubFunction;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR Reserved1;
UCHAR WMIFlags;
UCHAR Reserved2[2];
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID DataPath;
PVOID Reserved3;
PVOID OriginalRequest;
PVOID SrbExtension;
ULONG Reserved4;
ULONG Reserved6;
UCHAR Reserved5[16];
} SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK;
成員
Length
指定這個結構位元組的大小。
Function
SRB_FUNCTION_WMI,指定要求是 WMI 要求。 如果此成員未設定為 SRB_FUNCTION_WMI,迷你埠驅動程式應該會失敗要求。
SrbStatus
傳回已完成要求的狀態。 此成員應該先由迷你埠驅動程序設定,再通知 OS 特定驅動程式要求已完成,方法是使用 RequestComplete 呼叫 ScsiPortNotification。 此成員的值可以是SCSI_REQUEST_BLOCK中針對 SrbStatus 列出的任何值。
WMISubFunction
指出要執行的 WMI 動作。 迷你埠驅動程式會呼叫 ScsiPortWmiDispatchFunction ,並將 MinorFunction 設定為此值。 子函式值會對應至識別 WMI 作業的 WMI 次要 IRP 編號。
PathId
指出要求的 SCSI 埠或總線。 這個值是以零起始。 如果在 WMIFlags 中設定SRB_WMI_FLAGS_ADAPTER_REQUEST,則會保留此成員。
TargetId
指出總線上的目標控制器或裝置。 如果在 WMIFlags 中設定SRB_WMI_FLAGS_ADAPTER_REQUEST,則會保留此成員。
Lun
指出裝置的邏輯單元編號。 如果在 WMIFlags 中設定SRB_WMI_FLAGS_ADAPTER_REQUEST,則會保留此成員。
Reserved1
保留供系統使用,且無法供迷你埠驅動程式使用。
WMIFlags
指出如果已設定SRB_WMI_FLAGS_ADAPTER_REQUEST且 PathId、 TargetId和 Lun 保留,則WMI要求適用於適配卡。 否則, WMIFlags 會是 NULL,表示要求適用於 PathId、 TargetId 和 Lun 所指定的裝置。
Reserved2[2]
保留供系統使用,且無法供迷你埠驅動程式使用。
SrbFlags
指出要求的各種參數和選項。 SrbFlags 是唯讀的。 此成員會一起設定為下列一或多個旗標 ORed:
SRB_FLAGS_DATA_IN
指出數據會從裝置傳輸到系統。
SRB_FLAGS_DATA_OUT
表示數據會從系統傳輸到裝置。
SRB_FLAGS_NO_DATA_TRANSFER
表示此要求沒有數據傳輸。 如果已設定,則會清除旗標SRB_FLAGS_DATA_OUT、SRB_FLAGS_DATA_IN和SRB_FLAGS_UNSPECIFIED_DIRECTION。
SRB_FLAGS_DISABLE_SYNCH_TRANSFER
如果可能的話,表示 HBA 應該針對此傳輸要求執行異步 I/O。 如果先前已交涉同步 I/O,則 HBA 必須先重新交涉異步 I/O,才能執行傳輸。
SRB_FLAGS_DISABLE_DISCONNECT
表示 HBA 不應允許目標在處理此要求期間中斷與 SCSI 總線的連線。
DataTransferLength
指出數據緩衝區位元組的大小。 迷你埠驅動程式會呼叫 ScsiPortWmiDispatchFunction ,並將 BufferSize 設定為此值。 如果發生下限,迷你埠驅動程序必須將此成員更新為實際傳輸的位元元組數目。
TimeOutValue
指出要求可以在OS特定埠驅動程式視為逾時之前的秒內執行間隔。因為埠驅動程式已經執行,所以不需要迷你埠驅動程式才能進行時間要求。
DataBuffer
指向數據緩衝區。 迷你埠驅動程式會呼叫 ScsiPortWmiDispatchFunction , 並將 Buffer 設定為此值。 迷你埠驅動程式可以使用此值作為數據指標,不論 HBA PORT_CONFIGURATION_INFORMATION中的 MapBuffers 值為何。 迷你埠驅動程式無法使用 DMA 直接將數據傳送至緩衝區。
DataPath
指定此要求的 WMI 資料路徑。 迷你埠驅動程式會呼叫 ScsiPortWmiDispatchFunction ,並將 DataPath 設定為此值。
Reserved3
保留供系統使用,且無法供迷你埠驅動程式使用。
OriginalRequest
指向此要求的 IRP。 此成員與迷你埠驅動程序無關。
SrbExtension
指向 Srb 延伸模組。 如果迷你埠驅動程式在HW_INITIALIZATION_DATA中 將 SrbExtensionSize 設定為零,則不得使用此成員。 SrbExtension 上的記憶體不會由 OS 特定的埠驅動程式初始化,而迷你埠驅動程式決定的數據可以直接由 HBA 存取。 您可以使用 SrbExtension 指標呼叫 ScsiPortGetPhysicalAddress 來取得對應的實體位址。
Reserved4
保留供系統使用,且無法供迷你埠驅動程式使用。
Reserved6
保留供系統使用,且無法供迷你埠驅動程式使用。 此成員從 Windows Server 2003 SP1 開始有效。
Reserved5[16]
保留供系統使用,且無法供迷你埠驅動程式使用。
備註
Windows NT 記憶體類別和篩選驅動程式可以將WMI SRB 傳送至系統埠驅動程式。 系統埠驅動程式會代表迷你埠驅動程序處理特定 WMI 要求。 如果埠驅動程式無法處理 WMI 要求,它會將要求轉送至迷你埠驅動程式。
只有在迷你埠驅動程式在 PORT_CONFIGURATION_INFORMATION 結構中設定 WmiDataProvider 時,才會從埠驅動程式接收 WMI 要求。 如果迷你埠驅動程序支援要求,它應該藉由呼叫 ScsiPortNotification 兩次來處理並完成要求,首先使用 RequestComplete,然後使用 NextRequest (或 NextLuRequest) 。
如需在迷你埠驅動程序中支援 WMI 的相關信息,請參閱 Windows Management Instrumentation。
規格需求
需求 | 值 |
---|---|
標頭 | storport.h (包括 Storport.h、Srb.h、Storport.h、Minitape.h) |