Función ScsiPortWmiPostProcess (scsiwmi.h)
La rutina ScsiPortWmiPostProcess actualiza un contexto de solicitud para un SRB de WMI.
Sintaxis
void ScsiPortWmiPostProcess(
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] UCHAR SrbStatus,
[in] ULONG BufferUsed
);
Parámetros
[in] RequestContext
Puntero al contexto de solicitud de este SRB.
[in] SrbStatus
Especifica cualquier estado de SRB válido. Si el búfer de salida pasado al controlador de minipuerto era demasiado pequeño para contener todos los datos de una solicitud, el controlador de miniporte establece SrbStatus en SRB_STATUS_DATA_OVERRUN.
[in] BufferUsed
Si SrbStatus indica que el controlador de minipuerto establece BufferUsed en el número de bytes de datos escritos en el búfer. Si SrbStatus es SRB_STATUS_DATA_OVERRUN, el controlador de minipuerto establece BufferUsed en el número de bytes necesarios para completar correctamente la SRB.
Valor devuelto
None
Observaciones
Un controlador de minipuerto debe llamar a ScsiPortWmiPostProcess después de que se haya procesado la solicitud SRB de WMI y esté listo para completarse.
Para srBs sincrónicos, se llama a ScsiPortWmiPostProcess en la rutina de devolución de llamada.
Para srBs pendientes, se llama a ScsiPortWmiPostProcess después de procesar el SRB y antes de que se complete.
Si un controlador de minipuerto establece SrbStatus en SRB_STATUS_DATA_OVERRUN y establece BufferUsed, los srBs WMI idénticos sucesivos con un búfer asignado igual o mayor que los bytes BufferUsed deben realizarse correctamente. Esto se debe lograr si el controlador establece el valor exacto de BufferUsed que es necesario para completar la solicitud al llamar a ScsiPortWmiPostProcess con SrbStatus igual a SRB_STATUS_DATA_OVERRUN. Para una estructura de salida de tamaño variable, el búfer de datos de entrada de la SRB debe tener suficiente información para determinar el valor de BufferUsed exacto. Si el búfer de datos de entrada no contiene suficiente información, el controlador nunca debe producir un error en el mismo SRB dos veces con SRB_STATUS_DATA_OVERRUN. En su lugar, el controlador debe establecer SRB_STATUS_DATA_OVERRUN y solicitar el tamaño mínimo necesario para el búfer de salida primero y, a continuación, establecer SRB_STATUS_SUCCESS e indicar el error en el contenido del búfer de salida.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | scsiwmi.h (incluya Miniport.h, Scsi.h) |