EVT_ACX_CIRCUIT_RELEASE_HARDWARE fonction de rappel (acxcircuit.h)

Le rappel EVT_ACX_CIRCUIT_RELEASE_HARDWARE est utilisé par le pilote pour ajouter des fonctionnalités lorsqu’un ACXCIRCUIT est en phase de mise en production matérielle.

Syntaxe

EVT_ACX_CIRCUIT_RELEASE_HARDWARE EvtAcxCircuitReleaseHardware;

NTSTATUS EvtAcxCircuitReleaseHardware(
  WDFDEVICE Device,
  ACXCIRCUIT Circuit,
  WDFCMRESLIST ResourcesTranslated
)
{...}

Paramètres

Device

Objet WDFDEVICE (décrit dans WDF - Summary of Framework Objects) associé à l’ACXCIRCUIT spécifié.

Circuit

Objet ACXCIRCUIT (décrit dans Résumé des objets ACX) dans la phase de préparation du matériel.

ResourcesTranslated

Handle d’un objet de liste de ressources de l’infrastructure WDFCMRESLIST qui identifie les ressources matérielles traduites que le gestionnaire de Plug-and-Play a affectées à l’appareil. Pour plus d’informations sur les ressources traduites, consultez Ressources brutes et traduites.

Valeur retournée

Retourne STATUS_SUCCESS si l’appel a réussi. Sinon, elle retourne un code d’erreur approprié. Pour plus d’informations, consultez Utilisation de valeurs NTSTATUS.

Remarques

Pour inscrire une fonction de rappel EvtAcxCircuitReleaseHardware, votre pilote doit appeler AcxCircuitInitSetAcxCircuitPnpPowerCallbacks.

Si un pilote a inscrit une fonction de rappel EvtAcxCircuitReleaseHardware, l’infrastructure l’appelle pendant les transitions suivantes :

  • Rééquilibrage des ressources
  • Suppression ordonnée
  • Suppression surprise

L’infrastructure ACX appelle la fonction de rappel EvtAcxCircuitReleaseHardware une fois que l’infrastructure WDF a cessé d’envoyer des demandes d’E/S à l’appareil, que toutes les interruptions affectées à l’appareil ont été désactivées et déconnectées, et que l’appareil a été désactivé.

L’infrastructure ACX appelle la fonction de rappel EvtAcxCircuitReleaseHardware avant que l’infrastructure WDF appelle la fonction de rappel EvtDeviceReleaseHardware du pilote.

Lorsque le framework appelle EvtAcxCircuitReleaseHardware, l’AOP de l’appareil existe toujours et peut être interrogé pour obtenir des informations sur l’appareil disponibles dans l’état hors tension, par exemple l’état de configuration PCI.

En outre, les ressources matérielles traduites que l’infrastructure fournit à EvtDeviceReleaseHardware sont toujours affectées à l’appareil. L’objectif principal de cette fonction de rappel est de libérer ces ressources, et en particulier d’annuler le mappage des ressources mémoire que la fonction de rappel EvtAcxCircuitPrepareHardware du pilote mappée. Le pilote peut également utiliser ce rappel pour effectuer toute autre activité de gestion ACXCIRCUIT qui peut être nécessaire à l’état hors tension. En règle générale, toutes les autres opérations d’arrêt du matériel doivent avoir lieu dans la fonction de rappel EvtDeviceD0Exit du pilote.

L’infrastructure ACX appelle toujours la fonction de rappel EvtAcxCircuitReleaseHardware du pilote si la fonction de rappel EvtAcxCircuitPrepareHardware du pilote a été appelée, sauf si l’EvtAcxCircuitPrepareHardware a retourné un code d’échec.

Pour plus d’informations sur le moment où l’infrastructure ACX et WDF appellent ces fonctions de rappel, consultez Scénarios pnP et de gestion de l’alimentation.

Pour plus d’informations sur les ressources matérielles, consultez Présentation des ressources matérielles.

Pour plus d’informations sur les pilotes qui fournissent cette fonction de rappel, consultez Prise en charge du PnP et de la gestion de l’alimentation dans le pilote de fonction.

Exemple

L’exemple d’utilisation est illustré ci-dessous.

EVT_ACX_CIRCUIT_RELEASE_HARDWARE    EvtCircuitReleaseHardware;

NTSTATUS
EvtCircuitReleaseHardware(
    _In_ WDFDEVICE      Device,
    _In_ ACXCIRCUIT     Circuit,
    _In_ WDFCMRESLIST   ResourcesTranslated
    )
{
    PCIRCUIT_CONTEXT    circuitCtx  = GetCircuitContext(Circuit);
    CIpcEventReader *   eventReader = circuitCtx->EventReader;

    PAGED_CODE();

    UNREFERENCED_PARAMETER(Device);
    UNREFERENCED_PARAMETER(ResourcesTranslated);

    //
    // Disable 'remote' circuit notifications.
    //
    ASSERT(eventReader);
    eventReader->DisableEvents();

    // This should always succeed.
    return STATUS_SUCCESS;
}

Configuration requise pour ACX

Version ACX minimale : 1.0

Pour plus d’informations sur les versions d’ACX, consultez Vue d’ensemble des versions d’ACX.

Configuration requise

Condition requise Valeur
En-tête acxcircuit.h
IRQL PASSIVE_LEVEL

Voir aussi