Share via


EVT_ACX_CIRCUIT_RELEASE_HARDWARE función de devolución de llamada (acxcircuit.h)

El controlador usa la EVT_ACX_CIRCUIT_RELEASE_HARDWARE devolución de llamada para agregar funcionalidad cuando acXCIRCUIT se encuentra en la fase de hardware de lanzamiento.

Sintaxis

EVT_ACX_CIRCUIT_RELEASE_HARDWARE EvtAcxCircuitReleaseHardware;

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

Parámetros

Device

Objeto WDFDEVICE (descrito en WDF - Resumen de objetos de marco) asociado al ACXCIRCUIT especificado.

Circuit

Objeto ACXCIRCUIT (descrito en Resumen de objetos ACX) en la fase de preparación del hardware.

ResourcesTranslated

Identificador de un objeto de lista de recursos del marco WDFCMRESLIST que identifica los recursos de hardware traducidos que el administrador de Plug and Play ha asignado al dispositivo. Para obtener más información sobre los recursos traducidos, vea Recursos sin procesar y traducidos.

Valor devuelto

Devuelve STATUS_SUCCESS si la llamada se realizó correctamente. De lo contrario, devuelve un código de error adecuado. Para obtener más información, vea Uso de valores NTSTATUS.

Comentarios

Para registrar una función de devolución de llamada EvtAcxCircuitReleaseHardware, el controlador debe llamar a AcxCircuitInitSetAcxCircuitPnpPowerCallbacks.

Si un controlador ha registrado una función de devolución de llamada EvtAcxCircuitReleaseHardware, el marco lo llama durante las transiciones siguientes:

  • Reequilibrio de recursos
  • Eliminación ordenada
  • Eliminación sorpresa

El marco de ACX llama a la función de devolución de llamada EvtAcxCircuitReleaseHardware después de que el marco de WDF haya dejado de enviar solicitudes de E/S al dispositivo, las interrupciones asignadas al dispositivo se han deshabilitado y desconectado, y el dispositivo se ha desactivado.

El marco de ACX llama a la función de devolución de llamada EvtAcxCircuitReleaseHardware antes de que el marco de WDF llame a la función de devolución de llamada EvtDeviceReleaseHardware del controlador.

Cuando el marco llama al EvtAcxCircuitReleaseHardware, el PDO para el dispositivo sigue existiendo y se puede consultar para obtener información del dispositivo que está disponible en el estado de apagado, por ejemplo, el estado de configuración pci.

Además, los recursos de hardware traducidos que el marco proporciona a EvtDeviceReleaseHardware se siguen asignando al dispositivo. El propósito principal de esta función de devolución de llamada es liberar esos recursos y, en particular, para desasignar los recursos de memoria asignados a la función de devolución de llamada EvtAcxCircuitPrepareHardware del controlador. El controlador también puede usar esta devolución de llamada para realizar cualquier otra actividad de administración de ACXCIRCUIT que pueda ser necesaria en el estado de apagado. Normalmente, todas las demás operaciones de apagado de hardware deben realizarse en la función de devolución de llamada EvtDeviceD0Exit del controlador.

El marco de ACX siempre llama a la función de devolución de llamada EvtAcxCircuitReleaseHardware del controlador si se ha llamado a la función de devolución de llamada EvtAcxCircuitPrepareHardware del controlador, a menos que evtAcxCircuitPrepareHardware devuelva un código de error.

Para obtener más información sobre cuándo el marco acX y WDF llaman a estas funciones de devolución de llamada, consulte Escenarios de administración de energía y PnP.

Para obtener más información sobre los recursos de hardware, consulte Introducción a los recursos de hardware.

Para obtener más información sobre los controladores que proporcionan esta función de devolución de llamada, consulte Compatibilidad con PnP y administración de energía en El controlador de funciones.

Ejemplo

A continuación se muestra un ejemplo de uso.

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;
}

Requisitos de ACX

Versión mínima de ACX: 1.0

Para obtener más información sobre las versiones de ACX, consulte Introducción a la versión de ACX.

Requisitos

Requisito Valor
Header acxcircuit.h
IRQL PASSIVE_LEVEL

Consulte también