共用方式為


PSCSIWMI_EXECUTE_METHOD回呼函式 (scsiwmi.h)

系統會呼叫迷你埠驅動程式的 HwScsiWmiExecuteMethod 例程來執行與數據區塊相關聯的方法。 此例程是選擇性的。

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

語法

PSCSIWMI_EXECUTE_METHOD PscsiwmiExecuteMethod;

BOOLEAN PscsiwmiExecuteMethod(
  [in]      PVOID DeviceContext,
  [in]      PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in]      ULONG GuidIndex,
  [in]      ULONG InstanceIndex,
  [in]      ULONG MethodId,
  [in]      ULONG InBufferSize,
  [in]      ULONG OutBufferSize,
  [in, out] PUCHAR Buffer
)
{...}

參數

[in] DeviceContext

指向傳遞至 ScsiPortWmiDispatchFunction 的迷你埠驅動程式定義內容值。

[in] RequestContext

指向迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunction 的SCSIWMI_REQUEST_CONTEXT結構。

[in] GuidIndex

將數據區塊的索引指定至迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunction 之 SCSI_WMILIB_CONTEXT 結構中的 GUID 清單。

[in] InstanceIndex

如果 GuidIndex 指定的區塊有多個實例, InstanceIndex 會指定 實例。

[in] MethodId

指定要執行之方法的識別碼。 迷你埠驅動程式會將方法標識元定義為數據區塊中的專案。

[in] InBufferSize

表示輸入數據位元組的大小。 如果沒有輸入數據, InBufferSize 為零。

[in] OutBufferSize

指出緩衝區中可用的輸出數據位元組數目。

[in, out] Buffer

指向保存輸入數據的緩衝區,並從方法接收輸出數據。 如果緩衝區太小而無法接收所有輸出,迷你埠驅動程式會呼叫 ScsiPortWmiPostProcess ,並具有SRB_STATUS_DATA_OVERRUN和所需的大小。

傳回值

HwScsiWmiExecuteMethod 會在要求擱置時傳回SRB_STATUS_PENDING,如果要求已完成,則傳回非零 SRB 狀態值。 此例程傳回的SRB狀態值與傳入 ScsiPortWmiPostProcess的內容相同。 雖然傳回值數據類型是 BOOLEAN,但 HwScsiWmiExecuteMethod 例程實際上會傳回 SRB 狀態值。

備註

當迷你埠驅動程式收到 SRB 時,式成員設定為 SRB_FUNCTION_WMI,它會使用初始化SCSI_WMILIB_CONTEXT結構的指標呼叫 ScsiPortWmiDispatchFunction,並將 MinorFunction 設定為 Srb-WmiSubFunction> 如果 MinorFunction 指出執行方法的要求,SCSI 埠驅動程式會呼叫迷你埠驅動程式的 HwScsiWmiExecuteMethod 例程。

如果迷你埠驅動程式未實作 HwScsiWmiExecuteMethod 例程,則必須 SCSI_WMILIB_CONTEXT在 miniport 驅動程式傳遞至 ScsiPortWmiDispatchFunction 時,將 ExecuteWmiMethod 設定為 NULL。 在此情況下,埠驅動程式會將SRB_STATUS_ERROR傳回給呼叫端。

如果方法產生輸出,迷你埠驅動程序應該先檢查 OutBufferSize 中的輸出緩衝區大小,再執行任何可能有副作用或不應該執行兩次的作業。 例如,如果方法傳回計數器群組的值,然後重設計數器,迷你埠驅動程序應該先檢查緩衝區大小,再重設計數器。 這可確保埠驅動程式可以使用較大的緩衝區安全地重新傳送要求。 如果緩衝區太小,迷你埠驅動程序應該使用 SRB_STATUS_DATA_OVERRUN 呼叫 ScsiPortWmiPostProcess ,以及滿足要求所需的輸出緩衝區大小。

迷你埠驅動程式會執行 方法,並在任何情況下將輸出寫入緩衝區。 從 HwScsiWmiExecuteMethod 傳回之前,迷你埠驅動程式會使用適當的 SrbStatus 值和輸出緩衝區中使用的位元元組數目呼叫 ScsiPortWmiPostProcess

規格需求

需求
目標平台 桌面
標頭 scsiwmi.h (包含 Scsiwmi.h)

另請參閱

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess