リソース要件リストの作成
バス ドライバーが子デバイスを検出した場合、ドライバーはデバイスのリソース要件リストを作成する役割を担います。 リスト内の各項目は、デバイスの 論理構成 です。
ドライバーがバス列挙中にデバイスを報告した後、フレームワークはドライバーの EvtDeviceResourceRequirementsQuery コールバック関数を呼び出します。 このコールバック関数は、空のリソース要件リストを表す resource-requirements-list オブジェクトへのハンドルを受け取ります。
次にドライバーは、リソース要件リストに情報を追加するために次の操作を行う必要があります。
空の論理構成を作成します。
ドライバーが指定する論理構成ごとに、ドライバーは WdfIoResourceListCreate を呼び出して空の論理構成を作成する必要があります。
論理構成にリソース記述子を追加します。
論理構成にリソース記述子を追加するには、ドライバーは、デバイスが必要とするハードウェア リソースの種類ごとに、次の操作を行う必要があります。
- ドライバーによって割り当てられた IO_RESOURCE_DESCRIPTOR 構造体に入力します。これは特定のリソースの有効な値の範囲を指定します。
- WdfIoResourceListAppendDescriptor または WdfIoResourceListInsertDescriptor を呼び出して、IO_RESOURCE_DESCRIPTOR 構造体の内容を論理構成に追加します。
デバイスがリソースの種類の複数のインスタンスを使用する場合、リソースにアクセスするスタック内のすべてのドライバーは、リソースが追加される順序を認識する必要があります。 たとえば、デバイスで 2 つの範囲の I/O ポート アドレスが必要な場合、リソース記述子にアクセスするすべてのドライバーは、2 つの範囲が論理構成に追加される順序を認識する必要があります。
リソース要件リストに論理構成を追加します。
デバイスのリソース要件リストに論理構成を追加するために、ドライバーは WdfIoResourceRequirementsListAppendIoResList または WdfIoResourceRequirementsListInsertIoResList を呼び出します。
デバイスにリソースを割り当てる際に、PnP マネージャーは、リスト内の最初の論理構成の要件に一致させようとします。 その構成に必要なリソースが使用できない場合、PnP マネージャーはリソースが使用可能な一覧の次の構成と一致させます。
ドライバーが PnP 以外のデバイスをサポートしている場合、通常、ドライバーは WdfIoResourceRequirementsListSetSlotNumber と WdfIoResourceRequirementsListSetInterfaceType も呼び出す必要があります。
ドライバーの EvtDeviceResourceRequirementsQuery コールバック関数が戻ると、フレームワークはリソース要件リストを PnP マネージャーに渡します。