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, die Datensammlung für Datenblöcke zu aktivieren oder zu deaktivieren, die der Miniporttreiber als teuer für die Erfassung festgelegt hat. 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
Verweist auf den miniport treiberdefinierten Kontextwert, der an ScsiPortWmiDispatchFunctionübergeben wird.
[in] RequestContext
Verweist auf einen Wert mit einem Enumerationswert vom Typ SCSIWMI_REQUEST_CONTEXT, 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 zum Aktivieren oder Deaktivieren der Datensammlung für einen Block, der als teuer registriert wurde (d. a. ein Block, für den der Miniporttreiber WMIREG_FLAG_EXPENSIVE in Flags der SCSIWMIGUIDREGINFO-Struktur festgelegt wurde, die zum Registrieren des Blocks verwendet wurde).
[in] Enable
Gibt TRUE- an, um das Ereignis oder die Datensammlung zu aktivieren, oder FALSE-, um es zu deaktivieren.
Rückgabewert
HwScsiWmiFunctionControl- gibt SRB_STATUS_PENDING zurück, wenn die Anforderung aussteht, oder einen Nichtzero-SRB-Statuswert, wenn die Anforderung abgeschlossen wurde. Der von dieser Routine zurückgegebene SRB-Statuswert entspricht dem, was an ScsiPortWmiPostProcessübergeben wurde. Obwohl der Rückgabewert-Datentyp BOOLEAN ist, gibt die HwScsiWmiFunctionControl Routine tatsächlich einen SRB-Statuswert zurück.
Bemerkungen
Wenn ein Miniporttreiber einen SRB empfängt, in dem das Function Member auf SRB_FUNCTION_WMI festgelegt ist, ruft er ScsiPortWmiDispatchFunction mit einem Zeiger auf eine initialisierte SCSI_WMILIB_CONTEXT Struktur auf und MinorFunction auf Srb->WmiSubFunctionfestgelegt. Der SCSI-Porttreiber ruft die HwScsiWmiFunctionControl Routine eines Miniporttreibers auf, wenn MinorFunction- eine Anforderung angibt, ein Ereignis zu aktivieren oder zu deaktivieren oder die Sammlung für einen Datenblock zu aktivieren oder zu deaktivieren, den der Miniporttreiber als teuer registriert hat.
Wenn ein Miniporttreiber keine HwScsiWmiFunctionControl- Routine implementiert, muss er WmiFunctionControl- auf NULL- im SCSI_WMILIB_CONTEXT der Miniporttreiber an ScsiPortWmiDispatchFunctionübergeben. 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 Datenverbraucher den Block aktiviert, und eine einzelne Deaktivierungsanforderung sendet, wenn der letzte Datenverbraucher den Block deaktiviert. Der Porttreiber ruft nicht HwScsiWmiFunctionControl- mehrmals auf, um einen Block zu aktivieren, ohne einen dazwischen liegenden Aufruf zu deaktivieren.
Wenn der SRB im HwScsiWmiFunctionControl Rückruf abgeschlossen ist, ruft der Miniporttreiber ScsiPortWmiPostProcess mit einem entsprechenden SrbStatus-auf. Wenn der Miniporttreiber diesen SRB aufruft, sollte er ScsiPortWmiPostProcess- aufrufen, wenn der SRB abgeschlossen ist und bevor der SRB abgeschlossen wird.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | scsiwmi.h (include Scsiwmi.h) |