다음을 통해 공유


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

지정된 ACXCIRCUIT와 연결된 WDFDEVICE 개체( WDF - 프레임워크 개체 요약에 설명됨)입니다.

Circuit

준비 하드웨어 단계의 ACXCIRCUIT 개체( ACX 개체 요약에 설명됨)입니다.

ResourcesTranslated

플러그 앤 플레이 관리자가 디바이스에 할당한 변환된 하드웨어 리소스를 식별하는 WDFCMRESLIST 프레임워크 리소스 목록 개체에 대한 핸들입니다. 번역된 리소스에 대한 자세한 내용은 원시 및 번역된 리소스를 참조하세요.

반환 값

호출이 성공하면 를 반환합니다 STATUS_SUCCESS . 그렇지 않으면 적절한 오류 코드를 반환합니다. 자세한 내용은 NTSTATUS 값 사용을 참조하세요.

설명

EvtAcxCircuitReleaseHardware 콜백 함수를 등록하려면 드라이버가 AcxCircuitInitSetAcxCircuitPnpPowerCallbacks를 호출해야 합니다.

드라이버가 EvtAcxCircuitReleaseHardware 콜백 함수를 등록한 경우 프레임워크는 다음 전환 중에 호출합니다.

  • 리소스 리밸런싱
  • 순서대로 제거
  • 깜짝 제거

ACX 프레임워크는 WDF 프레임워크가 디바이스에 대한 I/O 요청 전송을 중지하고, 디바이스에 할당된 인터럽트가 비활성화되고 연결이 끊어졌으며, 디바이스가 꺼진 후 EvtAcxCircuitReleaseHardware 콜백 함수를 호출합니다.

ACX 프레임워크는 WDF 프레임워크가 드라이버의 EvtDeviceReleaseHardware 콜백 함수를 호출하기 전에 EvtAcxCircuitReleaseHardware 콜백 함수를 호출합니다.

프레임워크가 EvtAcxCircuitReleaseHardware를 호출할 때 디바이스에 대한 PDO는 여전히 존재하며 전원이 꺼진 상태에서 사용할 수 있는 디바이스 정보(예: PCI 구성 상태)에 대해 쿼리할 수 있습니다.

또한 프레임워크가 EvtDeviceReleaseHardware에 제공하는 변환된 하드웨어 리소스는 여전히 디바이스에 할당됩니다. 이 콜백 함수의 주요 목적은 이러한 리소스를 해제하는 것이며, 특히 드라이버의 EvtAcxCircuitPrepareHardware 콜백 함수가 매핑한 메모리 리소스를 매핑 해제하는 것입니다. 드라이버는 이 콜백을 사용하여 전원이 켜진 상태에서 필요할 수 있는 다른 ACXCIRCUIT 관리 작업을 수행할 수도 있습니다. 일반적으로 다른 모든 하드웨어 종료 작업은 드라이버의 EvtDeviceD0Exit 콜백 함수에서 수행되어야 합니다.

EvtAcxCircuitPrepareHardware가 오류 코드를 반환하지 않는 한, 드라이버의 EvtAcxCircuitPrepareHardware 콜백 함수가 호출된 경우 ACX 프레임워크는 항상 드라이버의 EvtAcxCircuitReleaseHardware 콜백 함수를 호출합니다.

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

추가 정보