Partager via


Fonction ScsiPortWmiSetInstanceCount (scsiwmi.h)

ScsiPortWmiSetInstanceCount spécifie le nombre d’instances pour lesquelles les mémoires tampons de données doivent être mises de côté dans la structure WNODE_ALL_DATA dans le contexte de la requête.

Note Les modèles de pilote de port SCSI et de pilote miniport SCSI peuvent être modifiés ou indisponibles à l’avenir. Au lieu de cela, nous vous recommandons d’utiliser les modèles de pilote Storport et de pilote miniport Storport .
 

Syntaxe

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

Paramètres

[in] RequestContext

Pointeur vers une structure de type SCSIWMI_REQUEST_CONTEXT qui contient le contexte de requête pour un SRB WMI.

[in] InstanceCount

Contient le nombre d’instances pour lesquelles le minidriver fournira des données.

[out] BufferAvail

Contient, au retour, le nombre d’octets d’espace tampon disponible pour décrire les noms et les données instance. La valeur retournée dans ce membre peut être passée aux routines ScsiPortWmiSetData et ScsiPortWmiSetInstanceName dans le paramètre BufferAvail de ces routines.

La routine ScsiPortWmiSetInstanceCount initialise un tableau de pointeurs vers des mémoires tampons de données, avec un élément de tableau pour chaque instance. S’il n’y a pas suffisamment de mémoire disponible dans le WNODE pour initialiser un tableau de taille InstanceCount, un zéro est retourné dans ce membre.

[out] SizeNeeded

Indique, lors de l’entrée, le nombre d’octets nécessaires pour décrire l’intégralité du WNODE avant de configurer les tableaux internes dans le WNODE. Au retour, ce membre contiendra la taille de l’ensemble du WNODE, y compris les tableaux nouvellement initialisés dans le WNODE.

Valeur retournée

La routine ScsiPortWmiSetInstanceCount retourne TRUE si l’opération réussit et FALSE si le WNODE contenu dans le contexte de requête n’est pas de type WNODE_ALL_DATA.

Remarques

Le minidriver doit appeler ScsiPortWmiSetInstanceCount avant d’appeler ScsiPortWmiSetData ou ScsiPortWmiSetInstanceName. Le minidriver ne doit appeler ScsiPortWmiSetInstanceCount qu’une seule fois.

Le paramètre RequestContext pointe vers une structure de contexte de requête, SCSIWMI_REQUEST_CONTEXT, qui contient des informations associées à un bloc de requête SCSI (SRB) WMI (Windows Management Instrumentation ). La structure de contexte de la demande, à son tour, contient l’une des structures de WNODE_XXX WMI utilisées par le système WMI pour transmettre des données entre les consommateurs de données en mode utilisateur et les fournisseurs de données en mode noyau, tels que les pilotes.

La routine ScsiPortWmiSetInstanceCount nécessite que la structure WNODE définie dans le contexte de la requête soit de type WNODE_ALL_DATA. En effet , ScsiPortWmiSetInstanceCount met de côté une zone de données qui contiendra des informations pour plusieurs instances associées à un bloc de données WMI. Contrairement à la structure WNODE_SINGLE_INSTANCE qui contient des informations sur un seul instance, la structure WNODE_ALL_DATA contient un tableau de pointeurs vers des zones de mémoire tampon pour différentes instances, et ScsiPortWmiSetInstanceCount initialise ce tableau, afin que chaque mémoire tampon de données instance soit accessible individuellement à l’aide d’un index instance.

La mémoire allouée pour le contexte de requête doit rester valide jusqu’à ce que le pilote miniport appelle ScsiPortWmiPostProcess, et ScsiPortWmiPostProcess retourne la status SRB finale et la taille de la mémoire tampon. Si le SRB peut être suspendu, la mémoire du contexte de requête doit être allouée à partir de l’extension SRB. Si le SRB ne peut pas être suspendu, la mémoire peut être allouée à partir d’un frame de pile qui ne sort pas de l’étendue.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête scsiwmi.h (inclure Miniport.h, Scsi.h)

Voir aussi

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE