Función ScsiPortWmiSetInstanceCount (scsiwmi.h)

ScsiPortWmiSetInstanceCount especifica el número de instancias para las que se deben reservar búferes de datos dentro de la estructura WNODE_ALL_DATA en el contexto de solicitud.

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

BOOLEAN ScsiPortWmiSetInstanceCount(
  [in]  PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in]  ULONG                    InstanceCount,
  [out] PULONG                   BufferAvail,
  [out] PULONG                   SizeNeeded
);

Parámetros

[in] RequestContext

Puntero a una estructura de tipo SCSIWMI_REQUEST_CONTEXT que contiene el contexto de solicitud de un SRB de WMI.

[in] InstanceCount

Contiene el número de instancias para las que el minidriver proporcionará datos.

[out] BufferAvail

Contiene, al devolver, el número de bytes de espacio en búfer disponible para describir los nombres de instancia y los datos. El valor que se devuelve en este miembro se puede pasar a rutinas ScsiPortWmiSetData y ScsiPortWmiSetInstanceName en el parámetro BufferAvail de esas rutinas.

La rutina ScsiPortWmiSetInstanceCount inicializa una matriz de punteros a búferes de datos, con un elemento de matriz para cada instancia. Si no hay suficiente memoria disponible en el WNODE para inicializar una matriz de tamaño InstanceCount, se devolverá un cero en este miembro.

[out] SizeNeeded

Indica, en la entrada, el número de bytes necesarios para describir todo el WNODE antes de configurar las matrices internas en el WNODE. Al devolver, este miembro contendrá el tamaño de todo el WNODE, incluidas las matrices recién inicializadas dentro del WNODE.

Valor devuelto

La rutina ScsiPortWmiSetInstanceCount devuelve TRUE si la operación se realiza correctamente y FALSE si el WNODE contenido en el contexto de solicitud no es de tipo WNODE_ALL_DATA.

Comentarios

El minidriver debe llamar a ScsiPortWmiSetInstanceCount antes de llamar a ScsiPortWmiSetData o ScsiPortWmiSetInstanceName. El minidriver solo debe llamar a ScsiPortWmiSetInstanceCount una vez.

El parámetro RequestContext apunta a una estructura de contexto de solicitud, SCSIWMI_REQUEST_CONTEXT, que contiene información asociada a un bloque de solicitud SCSI (SRB) de Instrumental de administración de Windows (WMI). La estructura del contexto de solicitud, a su vez, contiene una de las estructuras de WNODE_XXX WMI usadas por el sistema WMI para pasar datos entre consumidores de datos en modo de usuario y proveedores de datos en modo kernel, como controladores.

La rutina ScsiPortWmiSetInstanceCount requiere que la estructura WNODE definida en el contexto de solicitud sea de tipo WNODE_ALL_DATA. Esto se debe a que ScsiPortWmiSetInstanceCount reserva un área de datos que contendrá información para varias instancias asociadas a un bloque de datos WMI. A diferencia de la estructura de WNODE_SINGLE_INSTANCE que contiene información sobre una sola instancia, la estructura de WNODE_ALL_DATA contiene una matriz de punteros a áreas de búfer para diferentes instancias y ScsiPortWmiSetInstanceCount inicializa esta matriz, de modo que cada búfer de datos de instancia se pueda tener acceso individualmente mediante un índice de instancia.

La memoria asignada para el contexto de solicitud debe permanecer válida hasta después de que el controlador de miniporte llame a ScsiPortWmiPostProcess y ScsiPortWmiPostProcess devuelve el estado final del SRB y el tamaño del búfer. Si el SRB se puede escribir, la memoria del contexto de solicitud debe asignarse desde la extensión SRB. Si el SRB no puede escribirse, la memoria se puede asignar desde un marco de pila que no sale del ámbito.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado scsiwmi.h (incluya Miniport.h, Scsi.h)

Consulte también

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE