PSCSIWMI_EXECUTE_METHOD funzione di callback (scsiwmi.h)

Viene chiamata la routine HwScsiWmiExecuteMethod di un driver miniport per eseguire un metodo associato a un blocco di dati. Questa routine è facoltativa.

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

Sintassi

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

Parametri

[in] DeviceContext

Punta al valore di 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 di GUID nella struttura SCSI_WMILIB_CONTEXT che il driver miniport passato a ScsiPortWmiDispatchFunction.

[in] InstanceIndex

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

[in] MethodId

Specifica l'ID del metodo da eseguire. Il driver miniport definisce l'ID del metodo come elemento in un blocco di dati.

[in] InBufferSize

Indica le dimensioni in byte dei dati di input. Se non sono presenti dati di input, InBufferSize è zero.

[in] OutBufferSize

Indica il numero di byte disponibili nel buffer per i dati di output.

[in, out] Buffer

Punta a un buffer che contiene i dati di input e riceve i dati di output, se presenti, dal metodo . Se il buffer è troppo piccolo per ricevere tutto l'output, il driver miniport chiama ScsiPortWmiPostProcess con SRB_STATUS_DATA_OVERRUN e le dimensioni necessarie.

Valore restituito

HwScsiWmiExecuteMethod 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 corrisponde a quello passato a ScsiPortWmiPostProcess. Anche se il tipo di dati del valore restituito è BOOLEAN, la routine HwScsiWmiExecuteMethod restituisce effettivamente un valore di stato SRB.

Commenti

Quando un driver miniport riceve un SRB in cui il membro Function è 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 della porta SCSI chiama la routine HwScsiWmiExecuteMethod del driver miniport se MinorFunction indica una richiesta di esecuzione di un metodo.

Se un driver miniport non implementa una routine HwScsiWmiExecuteMethod , deve impostare ExecuteWmiMethod 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 metodo genera l'output, il driver miniport deve controllare le dimensioni del buffer di output in OutBufferSize prima di eseguire qualsiasi operazione che potrebbe avere effetti collaterali o che non deve essere eseguita due volte. Ad esempio, se un metodo restituisce i valori di un gruppo di contatori e quindi reimposta i contatori, il driver miniport deve controllare le dimensioni del buffer prima di reimpostare i contatori. Ciò garantisce che il driver della porta possa inviare di nuovo la richiesta in modo sicuro con un buffer più grande. Se il buffer è troppo piccolo, il driver miniport deve chiamare ScsiPortWmiPostProcess con SRB_STATUS_DATA_OVERRUN e le dimensioni del buffer di output necessario per soddisfare la richiesta.

Il driver miniport esegue il metodo e scrive l'output, se presente, nel buffer. Prima di restituire da HwScsiWmiExecuteMethod, il driver miniport chiama ScsiPortWmiPostProcess con un valore SrbStatus appropriato e il numero di byte usati nel buffer di output.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione scsiwmi.h (include Scsiwmi.h)

Vedi anche

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess