SCSI_WMI_REQUEST_BLOCK 結構 (storport.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且 PathIdTargetIdLun 保留,則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

規格需求

需求
標頭 storport.h (包括 Storport.h、Srb.h、Storport.h、Minitape.h)

另請參閱

HW_INITIALIZATION_DATA (SCSI)

PORT_CONFIGURATION_INFORMATION (SCSI)

SCSI_REQUEST_BLOCK

ScsiPortNotification

ScsiPortWmiDispatchFunction