Compartir a través de


PSCSIWMI_QUERY_DATABLOCK función de devolución de llamada (scsiwmi.h)

Se llama a la rutina HwScsiWmiQueryDataBlock de un controlador de miniporte para obtener una sola instancia o todas las instancias de un bloque de datos. Esta rutina es necesaria.

Nota Los modelos del controlador de puerto SCSI y del controlador de miniporte SCSI pueden modificarse o no estar disponibles en el futuro. En su lugar, se recomienda usar el controlador Storport y los modelos de controlador de miniport storport .
 

Sintaxis

PSCSIWMI_QUERY_DATABLOCK PscsiwmiQueryDatablock;

BOOLEAN PscsiwmiQueryDatablock(
  [in]      PVOID Context,
  [in]      PSCSIWMI_REQUEST_CONTEXT DispatchContext,
  [in]      ULONG GuidIndex,
  [in]      ULONG InstanceIndex,
  [in]      ULONG InstanceCount,
  [in, out] PULONG InstanceLengthArray,
  [in]      ULONG BufferAvail,
  [out]     PUCHAR Buffer
)
{...}

Parámetros

[in] Context

Apunta al valor de contexto definido por el controlador miniport pasado a ScsiPortWmiDispatchFunction.

[in] DispatchContext

Apunta a la estructura SCSIWMI_REQUEST_CONTEXT que el controlador de miniporte pasó a ScsiPortWmiDispatchFunction.

[in] GuidIndex

Especifica el bloque de datos por su índice en la lista de GUID de la estructura SCSI_WMILIB_CONTEXT que el controlador de miniporte pasó a ScsiPortWmiDispatchFunction.

[in] InstanceIndex

Si se llama a HwScsiWmiQueryDataBlock en respuesta a una solicitud de IRP_MN_QUERY_SINGLE_INSTANCE, InstanceIndex especifica la instancia que se va a consultar. Si se llama a HwScsiWmiQueryDataBlock en respuesta a un IRP_MN_QUERY_ALL_DATA REQUEST, InstanceIndex es cero.

[in] InstanceCount

Si se llama a HwScsiWmiQueryDataBlock en respuesta a una solicitud de IRP_MN_QUERY_SINGLE_INSTANCE, InstanceCount es 1. Si se llama a HwScsiWmiQueryDataBlock en respuesta a un IRP_MN_QUERY_ALL_DATA REQUEST, InstanceCount es el número de instancias que se van a devolver.

[in, out] InstanceLengthArray

Apunta a una matriz de ULONG que indican la longitud de cada instancia del bloque de datos que se va a devolver. Esta matriz tiene elementos InstanceCount . Este valor puede ser NULL cuando no hay suficiente espacio en el búfer de salida para satisfacer la solicitud.

[in] BufferAvail

Especifica el número máximo de bytes disponibles para recibir datos en el búfer en buffer.

[out] Buffer

Apunta al búfer para recibir datos de instancia. Si el búfer es lo suficientemente grande como para recibir todos los datos, el controlador de minipuerto escribe los datos de instancia en el búfer con cada instancia alineada en un límite de 8 bytes. Si el búfer es demasiado pequeño para recibir todos los datos, el controlador de minipuerto llama a ScsiPortWmiPostProcess con un estado de SRB_STATUS_DATA_OVERRUN y establece BufferUsed en el tamaño del búfer de salida necesario para cumplir la solicitud.

Valor devuelto

HwScsiWmiQueryDataBlock 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 HwScsiWmiQueryDataBlock 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 HwScsiWmiQueryDataBlock del controlador de miniporte si MinorFunction indica una solicitud para obtener una sola instancia o todas las instancias de un bloque de datos.

El controlador de minipuerto escribe datos de instancia en el búfer. Para las solicitudes que no están manuscritas, el controlador de miniporta llama a ScsiPortWmiPostProcess con un valor SrbStatus adecuado antes de devolver de HwScsiWmiQueryDataBlock. Si los lápiz de solicitud, el controlador de minipuerto llama a ScsiPortWmiPostProcess cuando se completa la solicitud.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado scsiwmi.h (incluya Scsiwmi.h)

Consulte también

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess