共用方式為


SCSI_WMI_REQUEST_BLOCK 結構 (srb.h)

此結構是 SCSI_REQUEST_BLOCK 的特殊版本,可與 WMI 命令搭配使用。

注意 SCSI 埠驅動程式和 SCSI 迷你埠驅動程式模型未來可能會改變或無法使用。 相反地,我們建議使用 Storport 驅動程式Storport 迷你埠 驅動程式模型。
 

語法

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且 已保留PathIdTargetId和 Lun,則 WMI 要求適用於適配 。 否則, WMIFlags 會是 NULL,表示要求適用於 PathIdTargetIdLun 所指定的裝置。

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

規格需求

需求
標頭 srb.h (包含 Storport.h、Srb.h、Storport.h、Minitape.h)

另請參閱

HW_INITIALIZATION_DATA (SCSI)

PORT_CONFIGURATION_INFORMATION (SCSI)

SCSI_REQUEST_BLOCK

ScsiPortNotification

ScsiPortWmiDispatchFunction