SCSI_WMI_REQUEST_BLOCK結構 (minitape.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中 MapBuff ers 的值為何,迷你埠驅動程式都可以使用此值作為數據指標。 迷你埠驅動程式無法使用 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 WmiDataProvider 時,才會從埠驅動程式接收 WMI 要求。 如果迷你埠驅動程序支援要求,它應該處理並完成要求,方法是呼叫 ScsiPortNotification 兩次,先使用 RequestComplete,然後使用 NextRequest (或 NextLuRequest)。
如需在迷你埠驅動程式中支援 WMI 的詳細資訊,請參閱 Windows Management Instrumentation。
要求
要求 | 價值 |
---|---|
標頭 | minitape.h (包括 Storport.h、Srb.h、Storport.h、Minitape.h) |