Condividi tramite


PSCSIWMI_SET_DATABLOCK funzione di callback (scsiwmi.h)

Viene chiamata la routine HwScsiWmiSetDataBlock di un driver miniport per modificare tutti gli elementi di dati in una singola istanza di un blocco di dati. Questa routine è facoltativa.

Nota I modelli di driver porta SCSI e miniport SCSI potrebbero essere modificati o non disponibili in futuro. È invece consigliabile usare driver Storport e modelli di driver miniport Storport.
 

Sintassi

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
)
{...}

Parametri

[in] DeviceContext

Punta al valore del contesto definito dal driver miniport passato a ScsiPortWmiDispatchFunction.

[in] RequestContext

Punta alla struttura SCSIWMI_REQUEST_CONTEXT passata dal driver miniport a ScsiPortWmiDispatchFunction.

[in] GuidIndex

Specifica il blocco di dati in base al relativo indice nell'elenco dei GUID nella struttura SCSI_WMILIB_CONTEXT che il driver miniport passato a ScsiPortWmiDispatchFunction.

[in] InstanceIndex

Se il blocco specificato da GuidIndex dispone di più istanze, InstanceIndex specifica l'istanza.

[in] BufferSize

Specifica le dimensioni in byte del buffer in buffer.

[in] Buffer

Punta a un buffer che contiene nuovi valori per l'istanza.

Valore restituito

HwScsiWmiSetDataBlock restituisce SRB_STATUS_PENDING se la richiesta è in sospeso o un valore di stato SRB diverso da zero se la richiesta è stata completata. Il valore di stato SRB restituito da questa routine equivale a quello passato a ScsiPortWmiPostProcess.

Osservazioni

Quando un driver miniport riceve un SRB in cui il membro funzione è impostato su SRB_FUNCTION_WMI, chiama ScsiPortWmiDispatchFunction con un puntatore a una struttura SCSI_WMILIB_CONTEXT inizializzata e MinorFunction impostato su Srb->WmiSubFunction. Il driver di porta SCSI chiama il driver miniport HwScsiWmiSetDataBlock routine se MinorFunction indica una richiesta di modificare un'istanza di un blocco di dati.

Se un driver miniport non implementa una routine HwScsiWmiSetDataBlock, deve impostare SetWmiDataBlock su NULL nel SCSI_WMILIB_CONTEXT il driver miniport passa a ScsiPortWmiDispatchFunction. In questo caso, il driver della porta restituisce SRB_STATUS_ERROR al chiamante.

Se il driver miniport implementa HwScsiWmiSetDataBlock deve modificare l'istanza del blocco di dati in base ai nuovi valori dal buffer.

Se tutti gli elementi nel blocco dati sono di sola lettura, il driver miniport deve restituire SRB_STATUS_ERROR. In caso contrario, il driver miniport modifica gli elementi che può e restituisce SRB_STATUS_SUCCESS.

Il driver miniport deve chiamare ScsiPortWmiPostProcess con un valore di SrbStatus appropriato al termine della richiesta. Se la richiesta non esegue la penna, ScsiPortWmiPostProcess deve essere chiamata nel callback HwScsiWmiSetDataBlock. In caso contrario, ScsiPortWmiPostProcess deve essere chiamato al termine della richiesta.

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione scsiwmi.h (include Scsiwmi.h)

Vedere anche

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess