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 |