GET_D3COLD_CAPABILITY fonction de rappel (wdm.h)

La routine GetBusDriverD3ColdSupport permet au pilote d’un appareil de demander si le pilote de bus d’énumération prend en charge l’état d’alimentation du périphérique D3cold.

Syntaxe

GET_D3COLD_CAPABILITY GetD3coldCapability;

NTSTATUS GetD3coldCapability(
  [in, optional] PVOID Context,
  [out]          PBOOLEAN D3ColdSupported
)
{...}

Paramètres

[in, optional] Context

Pointeur vers des informations de contexte spécifiques à l’interface. L’appelant définit ce paramètre sur la valeur du membre Context de la structure D3COLD_SUPPORT_INTERFACE pour l’interface.

[out] D3ColdSupported

Pointeur vers une variable BOOLEAN dans laquelle la routine écrit une valeur pour indiquer si le pilote de bus prend en charge le D3cold. Si cette valeur est TRUE, le pilote de bus prend en charge D3cold. Si la valeur est FALSE, le pilote de bus ne prend pas en charge D3cold. Si l’appel échoue, la routine retourne une erreur status code et n’écrit rien dans cette variable.

Valeur retournée

La routine GetBusDriverD3ColdSupport retourne STATUS_SUCCESS si elle réussit. Sinon, elle retourne une erreur appropriée status code.

Remarques

Le pilote de l’appareil appelle la version de cette routine implémentée par le pilote Windows ACPI, Acpi.sys. Cette routine vérifie le pilote de bus parent de l’appareil pour déterminer si ce pilote de bus prend en charge l’état d’alimentation D3cold.

Par exemple, à compter de Windows 8, Microsoft fournit un pilote xHCI (Inbox) USB 3.0 eXtensible Host Controller Interface qui prend en charge D3cold. Certains fournisseurs de matériel tiers fournissent des pilotes Windows pour leurs contrôleurs xHCI, mais ces pilotes peuvent ne pas prendre en charge D3cold. Le pilote d’un périphérique USB 3.0 peut appeler la routine GetBusDriverD3ColdSupport pour déterminer si le pilote de contrôleur xHCI parent prend en charge D3cold.

Un pilote de bus prend en charge D3cold si toutes les conditions suivantes sont remplies :

  • Le pilote de bus implémente l’interface du pilote GUID_D3COLD_SUPPORT_INTERFACE.
  • Le pilote de bus implémente la routine GetBusDriverD3ColdSupport dans cette interface.
  • La valeur de sortie de la routine GetBusDriverD3ColdSupport indique que le pilote de bus prend en charge D3cold.
Le pilote d’un appareil peut appeler la routine GetIdleWakeInfo pour déterminer si les pilotes de bus sous-jacents et le microprogramme système ACPI prennent en charge D3cold pour l’appareil. Si cet appel échoue et retourne une erreur status code, le pilote de périphérique peut appeler la routine GetBusDriverD3ColdSupport pour déterminer si l’échec est dû à l’absence de prise en charge de D3cold par le pilote de bus parent.

Un appareil sur un bus peut effectuer une transition vers le sous-état D3cold uniquement si le pilote de bus prend en charge cette transition. Si le pilote de bus ne prend pas en charge D3cold, l’appareil n’entre jamais dans D3cold, même si le pilote de fonction de l’appareil appelle la routine SetD3ColdSupport pour activer la transition vers D3cold. Dans ce cas, les appels SetD3ColdSupport n’ont aucun effet, mais sont inoffensifs.

Pour cette raison, la plupart des pilotes de périphérique n’ont jamais besoin d’appeler la routine GetBusDriverD3ColdSupport .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 8.
Plateforme cible Desktop (Expérience utilisateur)
En-tête wdm.h (include Wdm.h)
IRQL PASSIVE_LEVEL

Voir aussi

D3COLD_SUPPORT_INTERFACE

GetIdleWakeInfo

SetD3ColdSupport