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 狀態。 如果傳遞至迷你埠驅動程序的輸出緩衝區太小,無法包含來自要求的所有數據,miniport 驅動程式會將 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 應該會成功。 如果驅動程式設定 BufferUsed 的確切值,當呼叫 ScsiPortWmiPostProcess 且 SrbStatus 等於 SRB_STATUS_DATA_OVERRUN 時,應該達到此目的。 對於可變大小的輸出結構,SRB 的輸入數據緩衝區應該有足夠的資訊來判斷確切 BufferUsed 值。 如果輸入數據緩衝區未包含足夠的資訊,則驅動程式不應該在SRB_STATUS_DATA_OVERRUN時失敗相同的SRB 兩次。 相反地,驅動程式應該設定SRB_STATUS_DATA_OVERRUN,並先要求輸出緩衝區所需的最小大小,然後設定SRB_STATUS_SUCCESS並指出輸出緩衝區內容中的失敗。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | scsiwmi.h (包括 Miniport.h、Scsi.h) |