Partager via


IDE_HW_CONTROL fonction de rappel (irb.h)

La routine de pilote miniport IdeHwControl informe le pilote miniport des événements de Plug-and-Play (PnP) et d’alimentation.

Note Les modèles de pilote de port ATA et de pilote miniport ATA 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

IDE_HW_CONTROL IdeHwControl;

BOOLEAN IdeHwControl(
  [in]      PVOID ChannelExtension,
  [in]      IDE_CONTROL_ACTION ControlAction,
  [in, out] PVOID Parameters
)
{...}

Paramètres

[in] ChannelExtension

Pointeur vers l’extension de canal.

[in] ControlAction

Contient une valeur énumératrice de type IDE_CONTROL_ACTION qui indique l’action de contrôle à effectuer.

[in, out] Parameters

Pointeur vers une mémoire tampon qui contient les paramètres associés à l’action de contrôle. Ce paramètre peut avoir l’une des valeurs du tableau suivant.

Action de contrôle Paramètres Description
IdeStart Le paramètre pointe vers une structure de type IDE_CHANNEL_CONFIGURATION. Indique que le pilote de port démarre le canal.
IdeVendorDefined Le paramètre pointe vers une structure de type IDE_VENDOR_DEFINED_POWER_INFO. Indique qu’un événement d’alimentation défini par le fournisseur est en cours.

Valeur retournée

IdeHwControl retourne TRUE si l’opération a réussi. Sinon, il retourne FALSE.

Remarques

Le pilote de port s’assure qu’il n’y a pas d’E/S en suspens sur le canal avant d’appeler cette routine. Le pilote miniport peut avoir ses propres méthodes de stratégie d’alimentation lorsque le système entre dans un autre état d’alimentation. Pour ce faire, le pilote miniport doit effectuer les opérations suivantes :

  • Ajoutez un schéma de paramètre de stratégie d’alimentation dans le fichier INF du pilote miniport. Un GUID est nécessaire pour présenter une stratégie d’alimentation définie par le pilote miniport. Pour plus d’informations sur la directive relative aux paramètres d’alimentation, consultez Directive INF AddPowerSetting. Pour plus d’informations sur les GUID, consultez Paramètres du disque.
  • Lorsque la routine ideHwControl du pilote miniport est appelée avec l’action de contrôle IdeStart :
    Vérifiez le champ SupportedAdvances.AdvancedChannelConfigurationSupported dans la structure ChannelConfiguration.
    Vérifiez le champ AdvancedChannelConfiguration->Present.VendorDefinedPower dans la structure ChannelConfiguration.
    Si les valeurs des deux champs répertoriés précédemment sont true, cette version du pilote de port ATA prend en charge la gestion de l’alimentation définie par le fournisseur.
    Si la gestion de l’alimentation définie par le fournisseur est prise en charge par le pilote de port ATA, le pilote miniport peut s’inscrire à une gestion de l’alimentation spéciale en définissant les champs AdvancedChannelConfiguration->VendorDefinedPower.ValidGuids et AdvancedChannelConfiguration->VendorDefinedPower.Guid[] (ce dernier doit être le GUID de la stratégie d’alimentation dans le fichier INF du pilote miniport).
  • Une fois la gestion de l’alimentation définie par le fournisseur inscrite, le pilote miniport peut recevoir des appels à sa routine IdeHwControl avec l’action de contrôle IdeVendorDefined lorsque le schéma d’alimentation du système change.
  • Alors que le pilote miniport traite la routine IdeHwControl avec l’action de contrôle IdeVendorDefined, il doit effectuer les opérations suivantes :
    Comparez le champ SettingGuid du champ de paramètre de structure IDE_VENDOR_DEFINED_POWER_INFO au GUID inscrit par le pilote miniport pour vous assurer que l’appel concerne ce canal. Si les GUID ne correspondent pas, le pilote miniport doit terminer l’appel et n’effectuer aucune action.
    Obtenez le champ Valeur à partir du champ de paramètre de structure IDE_VENDOR_DEFINED_POWER_INFO et effectuez l’action de gestion de l’alimentation spécifique au miniport approprié.

Configuration requise

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

Voir aussi

AtaPortGetUncachedExtension