次の方法で共有


操作領域ハンドラーを登録/登録解除する

ACPI デバイス ファンクション ドライバーは、RegisterOpRegionHandler を呼び出し、次の情報を提供することで、操作領域ハンドラーを登録します。

  • 操作領域を定義する ACPI デバイスを表す物理デバイス オブジェクト (PDO)。

  • 加工されたものかどちらかのアクセスの種類。

    詳しくは、「操作領域へのアクセス」を参照してください。

  • 領域空間の種類。

    ベンダーは、0x80 から 0xFF にベンダー定義の値を指定する必要があります。 (0x80 未満の値は ACPI 仕様によって定義され、内部使用のために予約されています)。

  • ドライバーの操作領域ハンドラーへのポインター。

    ACPI ドライバーは、ドライバーの操作領域ハンドラーを呼び出すことによって、操作領域にアクセスします。

  • 操作領域コンテキストへのポインター。

    操作領域コンテキストは、デバイス固有で、ファンクション ドライバーによってのみ使用されます。 ACPI ドライバーは、操作領域ハンドラーを呼び出すと、操作領域コンテキストをハンドラーに渡します。 通常は、機能デバイス オブジェクト (FDO) のデバイス拡張機能です。

RegisterOpRegionHandler は、ドライバーがハンドラーを登録解除した場合にのみ、操作領域ハンドラーを一意に識別するためにファンクション ドライバーが使用する操作領域オブジェクトを返します。

通常、ドライバーは、IRP_MN_START_DEVICE 要求に応答して FDO を開始した後、ドライバーのプラグ アンド プレイ ディスパッチ ルーチンに操作領域ハンドラーを登録します。 ドライバーは、ハンドラーの操作領域コンテキストを割り当てた後にハンドラーを登録する必要があります。 ドライバーがベンダー定義のデバイス インターフェイスを作成する場合、ドライバーは、ハンドラーを登録した後、デバイス インターフェイスを有効にする必要があります。

ACPI デバイス ファンクション ドライバーは、DeRegisterOpRegionHandler を呼び出し、次の情報を提供することで、操作領域ハンドラーを登録解除します。

  • 操作領域を定義する ACPI デバイスを表す PDO。

  • ドライバーが操作領域ハンドラーを登録したときに ACPI ドライバーが返した操作領域オブジェクト。 このオブジェクトは、操作領域ハンドラーを一意に識別します。

通常、ドライバーは、IRP_MN_STOP_DEVICE 要求に応答して FDO を停止する前に、ドライバーのプラグ アンド プレイ ディスパッチ ルーチンの操作領域ハンドラーを登録解除します。 ドライバーは、ハンドラーの操作領域コンテキストを解放する前に、ハンドラーの登録解除をする必要があります。 ドライバーがベンダー定義のデバイス インターフェイスを作成する場合、ドライバーは、ハンドラーを登録解除する前にデバイス インターフェイスを無効にする必要があります。