функция обратного вызова 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 |