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.
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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per