PSCSIWMI_FUNCTION_CONTROL función de devolución de llamada (scsiwmi.h)
Se llama a la rutina HwScsiWmiFunctionControl de un controlador de miniporte para habilitar o deshabilitar la notificación de eventos. También se llama a para habilitar o deshabilitar la recopilación de datos para bloques de datos que el controlador de miniporte designado como costoso para recopilar. Esta rutina es opcional.
Sintaxis
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
)
{...}
Parámetros
[in] DeviceContext
Apunta al valor de contexto definido por el controlador miniport pasado a ScsiPortWmiDispatchFunction.
[in] RequestContext
Apunta a un valor que contiene un valor enumerador de tipo SCSIWMI_REQUEST_CONTEXT que el controlador de miniporte pasó a ScsiPortWmiDispatchFunction.
[in] GuidIndex
Especifica el bloque por su índice en la lista de GUID de la estructura SCSI_WMILIB_CONTEXT que el controlador de miniporte pasó a ScsiPortWmiDispatchFunction.
[in] Function
Especifica ScsiWmiEventControl para habilitar o deshabilitar un evento, o ScsiWmiDataBlockControl para habilitar o deshabilitar la recopilación de datos para un bloque que se registró como caro para recopilar (es decir, un bloque para el que el controlador de miniport establecido WMIREG_FLAG_EXPENSIVE en Marcas de la estructura SCSIWMIGUIDREGINFO usada para registrar el bloque).
[in] Enable
Especifica TRUE para habilitar el evento o la recopilación de datos, o FALSE para deshabilitarlo.
Valor devuelto
HwScsiWmiFunctionControl devuelve SRB_STATUS_PENDING si la solicitud está pendiente o un valor de estado de SRB distinto de cero si se completó la solicitud. El valor de estado de SRB devuelto por esta rutina es el mismo que lo que se pasó a ScsiPortWmiPostProcess. Aunque el tipo de datos de valor devuelto es BOOLEAN, la rutina HwScsiWmiFunctionControl devuelve realmente un valor de estado SRB.
Comentarios
Cuando un controlador de miniporte recibe un SRB en el que el miembro Function se establece en SRB_FUNCTION_WMI, llama a ScsiPortWmiDispatchFunction con un puntero a una estructura de SCSI_WMILIB_CONTEXT inicializada y MinorFunction establecida en Srb-WmiSubFunction>. El controlador de puerto SCSI llama a la rutina HwScsiWmiFunctionControl de un controlador de miniporte si MinorFunction indica una solicitud para habilitar o deshabilitar un evento, o para habilitar o deshabilitar la recopilación de un bloque de datos que el controlador de minipuerto registró como costoso de recopilar.
Si un controlador de minipuerto no implementa una rutina HwScsiWmiFunctionControl , debe establecer WmiFunctionControl en NULL en el SCSI_WMILIB_CONTEXT el controlador de minipuerto pasa a ScsiPortWmiDispatchFunction. El controlador de puerto devuelve SRB_STATUS_SUCCESS al autor de la llamada.
No es necesario que el controlador de miniporte compruebe si los eventos o la recopilación de datos ya están habilitados para un bloque porque el controlador de puerto envía una única solicitud de habilitación cuando el primer consumidor de datos habilita el bloque y envía una única solicitud de deshabilitación cuando el último consumidor de datos deshabilita el bloque. El controlador de puerto no llamará a HwScsiWmiFunctionControl más de una vez para habilitar un bloque sin una llamada intermedia para deshabilitarlo.
Si el SRB se completa en la devolución de llamada HwScsiWmiFunctionControl , el controlador de miniporta llama a ScsiPortWmiPostProcess con un SrbStatus adecuado. Si el controlador de miniporta este SRB, debe llamar a ScsiPortWmiPostProcess cuando se realice el SRB y antes de completar el SRB.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | scsiwmi.h (incluya Scsiwmi.h) |