PSCSIWMI_FUNCTION_CONTROL funzione di callback (scsiwmi.h)
Viene chiamata la routine HwScsiWmiFunctionControl di un driver miniport per abilitare o disabilitare la notifica degli eventi. Viene chiamato anche per abilitare o disabilitare la raccolta dei dati per i blocchi di dati che il driver miniport designato come costoso da raccogliere. Questa routine è facoltativa.
Sintassi
PSCSIWMI_FUNCTION_CONTROL PscsiwmiFunctionControl;
BOOLEAN PscsiwmiFunctionControl(
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] ULONG GuidIndex,
[in] SCSIWMI_ENABLE_DISABLE_CONTROL Function,
[in] BOOLEAN Enable
)
{...}
Parametri
[in] DeviceContext
Punta al valore di contesto definito dal driver miniport passato a ScsiPortWmiDispatchFunction.
[in] RequestContext
Punta a un valore contenente un valore enumeratore di tipo SCSIWMI_REQUEST_CONTEXT che il driver miniport passato a ScsiPortWmiDispatchFunction.
[in] GuidIndex
Specifica il blocco in base al relativo indice nell'elenco di GUID nella struttura SCSI_WMILIB_CONTEXT che il driver miniport passato a ScsiPortWmiDispatchFunction.
[in] Function
Specifica ScsiWmiEventControl per abilitare o disabilitare un evento oppure ScsiWmiDataBlockControl per abilitare o disabilitare la raccolta di dati per un blocco registrato come costoso da raccogliere, ovvero un blocco per il quale il driver miniport impostato WMIREG_FLAG_EXPENSIVE in Flag della struttura SCSIWMIGUIDREGINFO utilizzata per registrare il blocco.
[in] Enable
Specifica TRUE per abilitare l'evento o la raccolta di dati oppure FALSE per disabilitarlo.
Valore restituito
HwScsiWmiFunctionControl 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 HwScsiWmiFunctionControl 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 di porta SCSI chiama la routine HwScsiWmiFunctionControl di un driver miniport se MinorFunction indica una richiesta di abilitazione o disabilitazione di un evento oppure per abilitare o disabilitare la raccolta per un blocco di dati registrato dal driver miniport come costoso da raccogliere.
Se un driver miniport non implementa una routine HwScsiWmiFunctionControl , deve impostare WmiFunctionControl su NULL nel SCSI_WMILIB_CONTEXT il driver miniport passa a ScsiPortWmiDispatchFunction. Il driver della porta restituisce SRB_STATUS_SUCCESS al chiamante.
Non è necessario che il driver miniport controlli se gli eventi o la raccolta di dati sono già abilitati per un blocco perché il driver della porta invia una singola richiesta di abilitazione quando il primo consumer di dati abilita il blocco e invia una singola richiesta di disabilitazione quando l'ultimo consumer di dati disabilita il blocco. Il driver della porta non chiamerà HwScsiWmiFunctionControl più volte per abilitare un blocco senza una chiamata in caso di chiamata per disabilitarla.
Se SRB viene completato nel callback HwScsiWmiFunctionControl , il driver miniport chiama ScsiPortWmiPostProcess con uno SrbStatus appropriato. Se il driver miniport esegue la penna di questo SRB, deve chiamare ScsiPortWmiPostProcess al termine di SRB e prima di completare SRB.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | scsiwmi.h (include Scsiwmi.h) |