PSCSIWMI_SET_DATABLOCK回呼函式 (scsiwmi.h)
會呼叫迷你埠驅動程式 HwScsiWmiSetDataBlock 例程,以變更單一數據區塊實例中的所有數據項。 此例程是選擇性的。
語法
PSCSIWMI_SET_DATABLOCK PscsiwmiSetDatablock;
BOOLEAN PscsiwmiSetDatablock(
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] ULONG GuidIndex,
[in] ULONG InstanceIndex,
[in] ULONG BufferSize,
[in] PUCHAR Buffer
)
{...}
參數
[in] DeviceContext
指向傳遞至 ScsiPortWmiDispatchFunction的迷你埠驅動程式定義內容值。
[in] RequestContext
指向迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunctionSCSIWMI_REQUEST_CONTEXT 結構。
[in] GuidIndex
將數據區塊的索引指定為SCSI_WMILIB_CONTEXT結構中迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunction的 GUID 清單。
[in] InstanceIndex
如果 GuidIndex 所指定的區塊 有多個實例,InstanceIndex 指定 實例。
[in] BufferSize
指定緩衝區的大小,以位元組為單位,Buffer。
[in] Buffer
指向包含 實例新值的緩衝區。
傳回值
HwScsiWmiSetDataBlock 如果要求擱置,則傳回SRB_STATUS_PENDING;如果要求已完成,則傳回非零 SRB 狀態值。 這個例程傳回的SRB狀態值與傳入 ScsiPortWmiPostProcess相同。
言論
當迷你埠驅動程式收到 SRB 時,函式 成員會設定為 SRB_FUNCTION_WMI,它會呼叫 ScsiPortWmiDispatchFunction,並將指標指向初始化的 SCSI_WMILIB_CONTEXT 結構,並將 MinorFunction 設為 Srb->WmiSubFunction。 如果 MinorFunction 表示變更數據區塊實例的要求,SCSI 埠驅動程式會呼叫迷你埠驅動程式的 HwScsiWmiSetDataBlock 例程。
如果迷你埠驅動程式未實作 HwScsiWmiSetDataBlock 例程,則必須將 setWmiDataBlock SetWmiDataBlock 設定為SCSI_WMILIB_CONTEXT miniport 驅動程序傳遞至 ScsiPortWmiDispatchFunctionNULL。 在此情況下,埠驅動程式會將SRB_STATUS_ERROR傳回給呼叫端。
如果迷你埠驅動程序實作 HwScsiWmiSetDataBlock 它應該會將數據區塊的實例從緩衝區變更為新的值。
如果數據區塊中的所有專案都是只讀的,迷你埠驅動程序應該會傳回SRB_STATUS_ERROR。 否則,迷你埠驅動程式會變更它可以的專案,並傳回SRB_STATUS_SUCCESS。
迷你埠驅動程序應該在要求完成時,使用適當的 SrbStatus 值呼叫 ScsiPortWmiPostProcess。 如果要求沒有畫筆,ScsiPortWmiPostProcess 應該在 HwScsiWmiSetDataBlock 回呼中呼叫。 否則,當要求實際完成時,應該呼叫 ScsiPortWmiPostProcess。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | scsiwmi.h (包括 Scsiwmi.h) |