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 コールバック関数を登録している場合、フレームワークは次の遷移中にそれを呼び出します。

  • リソースの再調整
  • Orderly の削除
  • 驚きの削除

ACX フレームワークは、WDF フレームワークがデバイスへの I/O 要求の送信を停止し、デバイスに割り当てられた割り込みが無効になり、切断され、デバイスがオフになった後に、EvtAcxCircuitReleaseHardware コールバック関数を呼び出します。

ACX フレームワークは、WDF フレームワークがドライバーの EvtDeviceReleaseHardware コールバック関数を呼び出す前に、EvtAcxCircuitReleaseHardware コールバック関数を呼び出します。

フレームワークが EvtAcxCircuitReleaseHardware を呼び出すと、デバイスの PDO はまだ存在し、電源オフ状態 (PCI 構成状態など) で使用可能なデバイス情報を照会できます。

さらに、フレームワークが EvtDeviceReleaseHardware に提供する変換されたハードウェア リソースは、引き続きデバイスに割り当てられます。 このコールバック関数の主な目的は、これらのリソースを解放し、特にドライバーの EvtAcxCircuitPrepareHardware コールバック関数がマップされたメモリ リソースのマップを解除することです。 ドライバーは、このコールバックを使用して、電源を切った状態で必要になる可能性があるその他の ACXCIRCUIT 管理アクティビティを実行することもできます。 通常、他のすべてのハードウェア シャットダウン操作は、ドライバーの EvtDeviceD0Exit コールバック関数で行う必要があります。

ドライバーの EvtAcxCircuitPrepareHardware コールバック関数が呼び出された場合、EvtAcxCircuitPrepareHardware がエラー コードを返さない限り、ACX フレームワークは常にドライバーの EvtAcxCircuitReleaseHardware コールバック関数を呼び出します。

ACX および WDF フレームワークがこれらのコールバック関数を呼び出すタイミングの詳細については、「 PnP と Power Management のシナリオ」を参照してください。

ハードウェア リソースの詳細については、「ハードウェア リソース の概要」を参照してください。

このコールバック関数を提供するドライバーの詳細については、「 Function Driver での PnP と Power Management のサポート」を参照してください。

使用例を次に示します。

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 バージョンの概要」を参照してください。

要件

要件
Header acxcircuit.h
IRQL PASSIVE_LEVEL

こちらもご覧ください