Partager via


PSCSIWMI_SET_DATABLOCK fonction de rappel (scsiwmi.h)

La routine HwScsiWmiSetDataBlock d’un pilote miniport est appelée pour modifier tous les éléments de données dans une seule instance d’un bloc de données. Cette routine est facultative.

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_SET_DATABLOCK PscsiwmiSetDatablock;

BOOLEAN PscsiwmiSetDatablock(
  [in] PVOID DeviceContext,
  [in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in] ULONG GuidIndex,
  [in] ULONG InstanceIndex,
  [in] ULONG BufferSize,
  [in] PUCHAR Buffer
)
{...}

Paramètres

[in] DeviceContext

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

[in] RequestContext

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 le bloc spécifié par GuidIndex a plusieurs instances, InstanceIndex spécifie le instance.

[in] BufferSize

Spécifie la taille en octets de la mémoire tampon dans Mémoire tampon.

[in] Buffer

Pointe vers une mémoire tampon qui contient de nouvelles valeurs pour le instance.

Valeur retournée

HwScsiWmiSetDataBlock retourne SRB_STATUS_PENDING si la demande 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.

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 HwScsiWmiSetDataBlock du pilote miniport si MinorFunction indique une demande de modification d’une instance d’un bloc de données.

Si un pilote miniport n’implémente pas une routine HwScsiWmiSetDataBlock , il doit définir SetWmiDataBlock sur NULL dans le SCSI_WMILIB_CONTEXT le pilote miniport passe à ScsiPortWmiDispatchFunction. Dans ce cas, le pilote de port retourne SRB_STATUS_ERROR à l’appelant.

Si le pilote miniport implémente HwScsiWmiSetDataBlock, il doit modifier la instance du bloc de données par les nouvelles valeurs de la mémoire tampon.

Si tous les éléments du bloc de données sont en lecture seule, le pilote miniport doit retourner SRB_STATUS_ERROR. Sinon, le pilote miniport modifie les éléments qu’il peut et retourne SRB_STATUS_SUCCESS.

Le pilote miniport doit appeler ScsiPortWmiPostProcess avec une valeur SrbStatus appropriée lorsque la demande est terminée. Si la requête n’est pas interrompue, ScsiPortWmiPostProcess doit être appelé dans le rappel HwScsiWmiSetDataBlock . Sinon, ScsiPortWmiPostProcess doit être appelé lorsque la demande est réellement 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