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 dans la phase matérielle de mise en production.
Syntaxe
EVT_ACX_CIRCUIT_RELEASE_HARDWARE EvtAcxCircuitReleaseHardware;
NTSTATUS EvtAcxCircuitReleaseHardware(
WDFDEVICE Device,
ACXCIRCUIT Circuit,
WDFCMRESLIST ResourcesTranslated
)
{...}
Paramètres
Device
Objet WDFDEVICE (décrit dans WDF - Résumé des objets framework) 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 vers un objet de liste de ressources de framework WDFCMRESLIST qui identifie les ressources matérielles traduites affectées par le gestionnaire Plug-and-Play à l’appareil. Pour plus d’informations sur les ressources traduites, consultez ressources brutes et traduites.
Valeur de retour
Retourne STATUS_SUCCESS
si l’appel a réussi. Sinon, elle retourne un code d’erreur approprié. Pour plus d’informations, consultez Using NTSTATUS Values.
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, toutes les interruptions affectées à l’appareil ont été désactivées et déconnectées, et 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 l’infrastructure appelle EvtAcxCircuitReleaseHardware, l’objet PDO de l’appareil existe toujours et peut être interrogé pour les informations d’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, de dissocier les ressources mémoire que la fonction de rappel EvtAcxCircuitPrepareHardware du pilote a mappée. Le pilote peut également utiliser ce rappel pour effectuer toute autre activité de gestion ACXCIRCUIT qui peut être nécessaire à l’état de mise hors tension. En règle générale, toutes les autres opérations d’arrêt matériel doivent se produire 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 evtAcxCircuitPrepareHardware a renvoyé 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 Power Management.
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 de PnP et de 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 minimale d’ACX : 1.0
Pour plus d’informations sur les versions ACX, consultez vue d’ensemble de la version ACX.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | acxcircuit.h |
IRQL | PASSIVE_LEVEL |