リソース要件リストの変更
PnP マネージャーは、新しく接続されたすべてのデバイスのドライバーがロードされたことを確認した後、デバイスのハードウェアリクエストのリストをデバイスのドライバー スタックに送信します。
リストがスタックの下に移動すると、フレームワークは各関数およびフィルター ドライバーのEvtDeviceFilterRemoveResourceRequirements コールバック関数を呼び出し、ハードウェアリクエストリストを入力引数として渡します。 このコールバック関数はハードウェアリクエストのリストから、バス ドライバーが指定したが、デバイスの動作に必要ではないと関数ドライバーが判断したハードウェアリソースを取り外すことができます。
たとえば、PCI バス ドライバーは、PCI 仕様に従って、 I/O 領域リソースをメモリ領域に複製する場合があります。 デバイスが I/O 領域リソースを使用せずに動作できる場合、デバイスのファンクション ドライバーは、ハードウェアリクエストのリストから I/O 領域リソースを取り外すことができます。
リクエストリストから項目を取り外すには、ドライバーは次の操作を行います:
- リソースリクエストリストの論理構成を変更するには、次のメソッドを呼び出します:
- 論理構成の数を取得するWdfIoResourceRequirementsListGetCount。
- 論理構成へのアクセスを取得するためのWdfIoResourceRequirementsListGetIoResList。
- 論理構成を取り外すためのWdfIoResourceRequirementsListRemove と WdfIoResourceRequirementsListRemoveByIoResList。
- 論理構成内のリソース記述子を変更するには、次のメソッドを呼び出します:
- リソース記述子の数を取得するためのWdfIoResourceListGetCount。
- リソース記述子へのアクセスを取得するためのWdfIoResourceListGetDescriptor。
- リソース記述子を取り外すためのWdfIoResourceListRemove と WdfIoResourceListRemoveByDescriptor。
リストがドライバースタックに戻ると、フレームワークは各関数およびフィルター ドライバーの EvtDeviceFilterAddResourceRequirements コールバック関数を呼び出し、ハードウェアリクエストリストを入力引数として渡します。 このコールバック関数は、デバイスを動作させるために関数ドライバーが必要とするハードウェア リソースを追加できます。
ハードウェアリクエストのリストに項目を追加するには、ドライバーは次の操作を行います:
- リソースリクエストリストの論理構成を変更するには、次のメソッドを呼び出します:
- 論理構成の数を取得するWdfIoResourceRequirementsListGetCount。
- 論理構成へのアクセスを取得するためのWdfIoResourceRequirementsListGetIoResList。
- 新しい論理構成を作成するための WdfIoResourceListCreate。
- 新しい論理構成を追加するためのWdfIoResourceRequirementsListAppendIoResList または WdfIoResourceRequirementsListInsertIoResList。
- 論理構成内のリソース記述子を変更するには、次のメソッドを呼び出します:
- リソース記述子の数を取得するためのWdfIoResourceListGetCount。
- リソース記述子へのアクセスを取得するためのWdfIoResourceListGetDescriptor。
- リソース記述子を追加するためのWdfIoResourceListAppendDescriptor またはWdfIoResourceListInsertDescriptor。