操作領域ハンドラーを登録/登録解除する
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 を停止する前に、ドライバーのプラグ アンド プレイ ディスパッチ ルーチンの操作領域ハンドラーを登録解除します。 ドライバーは、ハンドラーの操作領域コンテキストを解放する前に、ハンドラーの登録解除をする必要があります。 ドライバーがベンダー定義のデバイス インターフェイスを作成する場合、ドライバーは、ハンドラーを登録解除する前にデバイス インターフェイスを無効にする必要があります。