ScsiPortWmiPostProcess 函式 (scsiwmi.h)
ScsiPortWmiPostProcess 例程會更新 WMI SRB 的要求內容。
語法
void ScsiPortWmiPostProcess(
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] UCHAR SrbStatus,
[in] ULONG BufferUsed
);
參數
[in] RequestContext
這個 SRB 要求內容的指標。
[in] SrbStatus
指定任何有效的 SRB 狀態。 如果傳遞至迷你埠驅動程序的輸出緩衝區太小而無法包含要求中的所有數據,迷你埠驅動程式會將 SrbStatus 設定為SRB_STATUS_DATA_OVERRUN。
[in] BufferUsed
如果 SrbStatus 指出成功,迷你埠驅動程式會將 BufferUsed 設定為寫入緩衝區的數據位元組數目。 如果 SrbStatus 是SRB_STATUS_DATA_OVERRUN,迷你埠驅動程式會將 BufferUsed 設定為成功完成 SRB 所需的位元組數目。
傳回值
無
備註
迷你埠驅動程式必須在處理 WMI SRB 要求並準備好完成之後呼叫 ScsiPortWmiPostProcess 。
針對同步 SRB,會在回呼例程中呼叫 ScsiPortWmiPostProcess 。
針對擱置的 SRB,ScsiPortWmiPostProcess 會在處理 SRB 之後呼叫,並在完成之前呼叫。
如果迷你埠驅動程式將 SrbStatus 設定為 SRB_STATUS_DATA_OVERRUN 並設定 BufferUsed,則配置緩衝區等於或大於 BufferUsed 位元組的連續相同 WMI SRB 應該會成功。 如果驅動程式設定了在呼叫 ScsiPortWmiPostProcess 且 SrbStatus 等於 SRB_STATUS_DATA_OVERRUN 時完成要求所需的 BufferUsed 確切值,就應該達到此目的。 針對可變大小的輸出結構,SRB 的輸入數據緩衝區應該有足夠的資訊來判斷確切的 BufferUsed 值。 如果輸入數據緩衝區未包含足夠的資訊,則驅動程式應該永遠不會因為SRB_STATUS_DATA_OVERRUN而失敗相同的SRB 兩次。 相反地,驅動程式應該設定SRB_STATUS_DATA_OVERRUN,並先要求輸出緩衝區所需的最小大小,然後設定SRB_STATUS_SUCCESS,並指出輸出緩衝區內容中的失敗。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | scsiwmi.h (包括 Miniport.h、Scsi.h) |