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


функция обратного вызова 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 после остановки отправки запросов ввода-вывода на устройство, все прерывания, назначенные устройству, отключены и отключены, а устройство отключено.

Платформа 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

См. также