未処理のリソースおよび変換済みリソース
ドライバーの EvtDeviceRemoveAddedResources コールバック関数または EvtDevicePrepareHardware コールバック関数が受け取るリソース リストには、2 つの種類があります。1 つはデバイスの "未処理のリソース" を表し、もう 1 つはデバイスの "変換済みリソース" を表します。どちらのリストも、同じハードウェア リソースを同じ順序で表しています。
未処理のリソースとは、デバイスの接続先バスを基準とした相対アドレスで識別されるリソースです。通常、デバイスのプログラミングを行うドライバーが、このアドレスをデバイスに指定します。
変換済みリソースとは、ドライバーがリソースへのアクセスに使用するシステム物理アドレスで識別されるリソースです。
未処理のリソースおよび変換済みリソースの詳細については、CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体のメンバーに関する説明を参照してください。
デバイスの変換済みリソース リストに、CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体の Type メンバーが CmResourceTypeMemory に設定されたリソースが含まれている場合、このリソースにアクセスするすべてのドライバーは、次の処理を行う必要があります。
ドライバーの EvtDevicePrepareHardware コールバック関数で MmMapIoSpace を呼び出して、バスを基準とした相対アドレスをシステム仮想アドレスにマッピングする必要があります。
ドライバーの EvtDeviceReleaseHardware コールバック関数で MmUnmapIoSpace を呼び出して、アドレスのマッピングを解除する必要があります。
バスを基準とした相対アドレスのマッピングの詳細については、「バスを基準とした相対アドレスから仮想アドレスへのマッピング」(英語の可能性あり) を参照してください。