Поделиться через


функция обратного вызова EVT_ACX_CIRCUIT_RELEASE_HARDWARE (acxcircuit.h)

Обратный вызов EVT_ACX_CIRCUIT_RELEASE_HARDWARE используется драйвером для добавления функциональных возможностей, когда ACXCIRCUIT находится на этапе выпуска оборудования.

Синтаксис

EVT_ACX_CIRCUIT_RELEASE_HARDWARE EvtAcxCircuitReleaseHardware;

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

Параметры

Device

Объект WDFDEVICE (описанный в разделе WDF — сводка объектов платформы), связанный с указанным ACXCIRCUIT.

Circuit

Объект ACXCIRCUIT ( описанный в разделе Сводка объектов ACX) на этапе подготовки оборудования.

ResourcesTranslated

Дескриптор объекта списка ресурсов платформы WDFCMRESLIST, который определяет преобразованные аппаратные ресурсы, назначенные Plug and Play-менеджером устройству. Дополнительные сведения о переведенных ресурсах см. в разделе Необработанные и переведенные ресурсы.

Возвращаемое значение

Возвращает значение STATUS_SUCCESS , если вызов был успешным. В противном случае возвращается соответствующий код ошибки. Дополнительные сведения см. в разделе Использование значений NTSTATUS.

Комментарии

Чтобы зарегистрировать функцию обратного вызова EvtAcxCircuitReleaseHardware, драйвер должен вызвать AcxCircuitInitSetAcxCircuitPnpPowerCallbacks.

Если драйвер зарегистрировал функцию обратного вызова EvtAcxCircuitReleaseHardware, платформа вызывает ее во время следующих переходов:

  • Перебалансирование ресурсов
  • Упорядочение удаления
  • Неожиданное удаление

Платформа ACX вызывает функцию обратного вызова EvtAcxCircuitReleaseHardware после того, как платформа WDF прекратила отправку запросов ввода-вывода на устройство, все прерывания, назначенные устройству, были отключены и отключены, а устройство было отключено.

Платформа ACX вызывает функцию обратного вызова EvtAcxCircuitReleaseHardware, прежде чем платформа WDF вызывает функцию обратного вызова EvtDeviceReleaseHardware драйвера.

Когда платформа вызывает EvtAcxCircuitReleaseHardware, PDO для устройства по-прежнему существует, и его можно запросить сведения об устройстве, доступные в отключенном состоянии, например состояние конфигурации PCI.

Кроме того, преобразованные аппаратные ресурсы, предоставляемые платформой для EvtDeviceReleaseHardware, по-прежнему назначаются устройству. Основная цель этой функции обратного вызова — освободить эти ресурсы и, в частности, отменить сопоставление ресурсов памяти, сопоставленных функции обратного вызова EvtAcxCircuitPrepareHardware драйвера. Драйвер также может использовать этот обратный вызов для выполнения любых других действий управления ACXCIRCUIT, которые могут потребоваться в выключенном состоянии. Как правило, все остальные операции завершения работы оборудования должны выполняться в функции обратного вызова EvtDeviceD0Exit драйвера.

Платформа ACX всегда вызывает функцию обратного вызова EvtAcxCircuitReleaseHardware драйвера, если была вызвана функция обратного вызова EvtAcxCircuitPrepareHardware драйвера, если только evtAcxCircuitPrepareHardware не вернул код сбоя.

Дополнительные сведения о том, когда платформа ACX и WDF вызывают эти функции обратного вызова, см. в разделе Сценарии управления питанием и PnP.

Дополнительные сведения об аппаратных ресурсах см. в статье Общие сведения об аппаратных ресурсах.

Дополнительные сведения о драйверах, предоставляющих эту функцию обратного вызова, см. в разделе Поддержка PnP и управления питанием в драйвере функций.

Пример

Ниже приведен пример использования.

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

Требования ACX

Минимальная версия ACX: 1.0

Дополнительные сведения о версиях ACX см. в статье Обзор версий ACX.

Требования

Требование Значение
Заголовок acxcircuit.h
IRQL PASSIVE_LEVEL

См. также раздел