次の方法で共有


未加工のリソースと翻訳されたリソース

ドライバーの EvtDeviceRemoveAddedResources または EvtDevicePrepareHardware コールバック関数は、リソース リストを受け取ると、2 つのバージョンのリストを受け取ります。 1 つのバージョンはデバイスの 生リソースを表し、もう 1 つはデバイスの 翻訳されたリソースを表します。 どちらのバージョンも、同じ順序で同じハードウェア リソースのセットを表します。

  • 生リソースは、デバイスが接続されているバスに対して相対的なアドレスによって識別されるリソースです。 通常、デバイスをプログラムするドライバーは、これらのアドレスをデバイスに提供します。

  • 変換されたリソースは、ドライバーがリソースへのアクセスに使用するシステム物理アドレスによって識別されるリソースです。

PCI バス デバイスのドライバーは、デバイスの ベース アドレス レジスタ (BAR) に表示される順序で一覧表示されているリソースを受け取ります。 ただし、BAR のインデックス X にあるリソースがリソース リスト内の同じインデックス位置にあるリソースと一致しない可能性があるため、追加のリソース記述子が一覧にインターリーブされる可能性があります。

生のリソースと翻訳されたリソースの詳細については、 CM_PARTIAL_RESOURCE_DESCRIPTOR 構造のメンバーの説明を参照してください。

デバイスの変換されたリソースリストに、CM_PARTIAL_RESOURCE_DESCRIPTOR構造体の Type メンバーが CmResourceTypeMemory に設定されたリソースが含まれている場合、そのリソースにアクセスするすべてのドライバーは次の操作を行う必要があります。

  • ドライバーの EvtDevicePrepareHardware コールバック関数は、システムの物理アドレスをシステム仮想アドレスにマップするために MmMapIoSpace を呼び出す必要があります。
  • ドライバーの EvtDeviceReleaseHardware コールバック関数は、 MmUnmapIoSpace を呼び出してアドレスのマップを解除する必要があります。

バス相対アドレスのマッピングの詳細については、「仮想アドレス への Bus-Relative アドレスのマッピング」を参照してください。