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.

Hinweis Der SCSI-Porttreiber und die SCSI-Miniporttreibermodelle sind möglicherweise geändert oder in Zukunft nicht mehr verfügbar. Stattdessen wird empfohlen, die Modelle Storport-Treiber und Storport-Miniporttreiber zu verwenden.
 

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)

Weitere Informationen

SCSIWMIGUIDREGINFO

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess