PSCSIWMI_FUNCTION_CONTROL Rückruffunktion (scsiwmi.h)
Die HwScsiWmiFunctionControl-Routine eines Miniporttreibers wird aufgerufen, um die Benachrichtigung über Ereignisse zu aktivieren oder zu deaktivieren. Es wird auch aufgerufen, um die Datensammlung für Datenblöcke zu aktivieren oder zu deaktivieren, die vom Miniporttreiber als teuer zu sammeln angegeben wurden. Diese Routine ist optional.
Syntax
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
)
{...}
Parameter
[in] DeviceContext
Zeigt auf den vom Miniporttreiber definierten Kontextwert, der an ScsiPortWmiDispatchFunction übergeben wird.
[in] RequestContext
Verweist auf einen Wert, der einen Enumeratorwert vom Typ SCSIWMI_REQUEST_CONTEXT enthält, den der Miniporttreiber an ScsiPortWmiDispatchFunction übergeben hat.
[in] GuidIndex
Gibt den Block anhand seines Indexes in der Liste der GUIDs in der SCSI_WMILIB_CONTEXT-Struktur an, die der Miniporttreiber an ScsiPortWmiDispatchFunction übergeben hat.
[in] Function
Gibt ScsiWmiEventControl an, um ein Ereignis zu aktivieren oder zu deaktivieren, oder ScsiWmiDataBlockControl , um die Datensammlung für einen Block zu aktivieren oder zu deaktivieren, der als teuer zu sammeln registriert wurde (d. a. einen Block, für den der Miniporttreibersatz WMIREG_FLAG_EXPENSIVE in Flags der SCSIWMIGUIDREGINFO-Struktur, die zum Registrieren des Blocks verwendet wird).
[in] Enable
Gibt TRUE an, um die Ereignis- oder Datensammlung zu aktivieren, oder FALSE , um sie zu deaktivieren.
Rückgabewert
HwScsiWmiFunctionControl gibt SRB_STATUS_PENDING zurück, wenn die Anforderung aussteht, oder einen SRB-Wert ungleich null status, wenn die Anforderung abgeschlossen wurde. Der von dieser Routine zurückgegebene SRB-status-Wert entspricht dem wert, der an ScsiPortWmiPostProcess übergeben wurde. Obwohl der Rückgabewertdatentyp BOOLEAN ist, gibt die HwScsiWmiFunctionControl-Routine tatsächlich einen SRB-status Wert zurück.
Hinweise
Wenn ein Miniporttreiber einen SRB empfängt, in dem der Function-Member auf SRB_FUNCTION_WMI festgelegt ist, ruft er ScsiPortWmiDispatchFunction mit einem Zeiger auf eine initialisierte SCSI_WMILIB_CONTEXT-Struktur und MinorFunction auf Srb-WmiSubFunction>. Der SCSI-Porttreiber ruft die HwScsiWmiFunctionControl-Routine eines Miniporttreibers auf, wenn MinorFunction eine Anforderung zum Aktivieren oder Deaktivieren eines Ereignisses oder zum Aktivieren oder Deaktivieren der Sammlung für einen Datenblock angibt, den der Miniporttreiber als teuer registriert hat.
Wenn ein Miniporttreiber keine HwScsiWmiFunctionControl-Routine implementiert, muss er WmiFunctionControl im SCSI_WMILIB_CONTEXT der Miniporttreiber an ScsiPortWmiDispatchFunction übergibt, auf NULL festlegen. Der Porttreiber gibt SRB_STATUS_SUCCESS an den Aufrufer zurück.
Es ist nicht erforderlich, dass der Miniporttreiber überprüft, ob Ereignisse oder Datensammlungen bereits für einen Block aktiviert sind, da der Porttreiber eine einzelne Aktivierungsanforderung sendet, wenn der erste Datenconsumer den Block aktiviert, und eine einzelne Disable-Anforderung sendet, wenn der letzte Datenconsumer den Block deaktiviert. Der Porttreiber ruft HwScsiWmiFunctionControl nicht mehrmals auf, um einen Block ohne einen dazwischen liegenden Aufruf zum Deaktivieren zu aktivieren.
Wenn der SRB im HwScsiWmiFunctionControl-Rückruf abgeschlossen ist, ruft der Miniporttreiber ScsiPortWmiPostProcess mit einem entsprechenden SrbStatus auf. Wenn der Miniporttreiber diesen SRB stiftet, sollte er ScsiPortWmiPostProcess aufrufen, wenn der SRB fertig ist und bevor der SRB abgeschlossen wird.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | scsiwmi.h (Scsiwmi.h einschließen) |