Partager via


PSCSIWMI_QUERY_DATABLOCK fonction de rappel (scsiwmi.h)

La routine HwScsiWmiQueryDataBlock d’un pilote miniport est appelée pour obtenir une seule instance ou toutes les instances d’un bloc de données. Cette routine est obligatoire.

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

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
)
{...}

Paramètres

[in] Context

Pointe vers la valeur de contexte définie par le pilote miniport passée à ScsiPortWmiDispatchFunction.

[in] DispatchContext

Pointe vers la structure SCSIWMI_REQUEST_CONTEXT que le pilote miniport a transmise à ScsiPortWmiDispatchFunction.

[in] GuidIndex

Spécifie le bloc de données par son index dans la liste des GUID de la structure SCSI_WMILIB_CONTEXT que le pilote miniport a transmise à ScsiPortWmiDispatchFunction.

[in] InstanceIndex

Si HwScsiWmiQueryDataBlock est appelé en réponse à une demande de IRP_MN_QUERY_SINGLE_INSTANCE, InstanceIndex spécifie le instance à interroger. Si HwScsiWmiQueryDataBlock est appelé en réponse à une requête IRP_MN_QUERY_ALL_DATA, InstanceIndex est égal à zéro.

[in] InstanceCount

Si HwScsiWmiQueryDataBlock est appelé en réponse à une demande de IRP_MN_QUERY_SINGLE_INSTANCE, InstanceCount est 1. Si HwScsiWmiQueryDataBlock est appelé en réponse à une requête IRP_MN_QUERY_ALL_DATA, InstanceCount correspond au nombre d’instances à retourner.

[in, out] InstanceLengthArray

Pointe vers un tableau d’ULONG qui indique la longueur de chaque instance du bloc de données à retourner. Ce tableau contient des éléments InstanceCount . Cette valeur peut être NULL lorsqu’il n’y a pas suffisamment d’espace dans la mémoire tampon de sortie pour répondre à la demande.

[in] BufferAvail

Spécifie le nombre maximal d’octets disponibles pour recevoir des données dans la mémoire tampon dans La mémoire tampon.

[out] Buffer

Pointe vers la mémoire tampon pour recevoir instance données. Si la mémoire tampon est suffisamment grande pour recevoir toutes les données, le pilote miniport écrit instance données dans la mémoire tampon avec chaque instance aligné sur une limite de 8 octets. Si la mémoire tampon est trop petite pour recevoir toutes les données, le pilote miniport appelle ScsiPortWmiPostProcess avec une status de SRB_STATUS_DATA_OVERRUN et définit BufferUsed sur la taille de la mémoire tampon de sortie nécessaire pour répondre à la demande.

Valeur retournée

HwScsiWmiQueryDataBlock retourne SRB_STATUS_PENDING si la requête est en attente ou une valeur SRB status différente de zéro si la demande a été effectuée. La valeur de status SRB retournée par cette routine est identique à ce qui a été passé à ScsiPortWmiPostProcess. Bien que le type de données de la valeur de retour soit BOOLEAN, la routine HwScsiWmiQueryDataBlock retourne en fait une valeur de status SRB.

Remarques

Lorsqu’un pilote miniport reçoit un SRB dans lequel le membre function est défini sur SRB_FUNCTION_WMI, il appelle ScsiPortWmiDispatchFunction avec un pointeur vers une structure SCSI_WMILIB_CONTEXT initialisée et MinorFunction défini sur Srb-WmiSubFunction>. Le pilote de port SCSI appelle la routine HwScsiWmiQueryDataBlock du pilote miniport si MinorFunction indique une demande d’obtention d’un seul instance ou de toutes les instances d’un bloc de données.

Le pilote miniport écrit instance données dans la mémoire tampon. Pour les demandes qui ne sont pas suspendus, le pilote miniport appelle ScsiPortWmiPostProcess avec une valeur SrbStatus appropriée avant de retourner à partir de HwScsiWmiQueryDataBlock. Si la requête est interrompue, le pilote miniport appelle ScsiPortWmiPostProcess une fois la demande terminée.

Configuration requise

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

Voir aussi

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess