Share via


建立資源需求清單

當匯流排驅動程式偵測到子裝置時,驅動程式會負責建立裝置的資源需求清單。 清單中的每個專案都是裝置的 邏輯組態

在驅動程式在匯流排列舉期間報告裝置之後,架構會呼叫驅動程式的 EvtDeviceResourceRequirementsQuery 回 呼函式。 此回呼函式會接收代表空白資源需求清單之 resource-requirements-list 物件的控制碼。

驅動程式接著必須執行下列動作,才能將資訊新增至資源需求清單:

  • 建立空的邏輯組態。

    針對驅動程式將指定的每個邏輯組態,驅動程式必須呼叫 WdfIoResourceListCreate 來建立空的邏輯組態。

  • 將資源描述項新增至邏輯組態。

    若要將資源描述項新增至邏輯組態,驅動程式必須針對裝置所需的每種硬體資源類型執行下列動作:

    1. 填入驅動程式配置的 IO_RESOURCE_DESCRIPTOR 結構,指定特定資源的有效值範圍。
    2. 呼叫 WdfIoResourceListAppendDescriptorWdfIoResourceListInsertDescriptor ,將IO_RESOURCE_DESCRIPTOR結構的內容新增至邏輯組態。

    如果裝置使用一個以上的資源類型實例,存取資源之堆疊中的所有驅動程式都必須知道資源新增的順序。 例如,如果裝置需要兩個 I/O 埠位址範圍,則存取資源描述元的所有驅動程式都必須知道將兩個範圍新增至邏輯組態的順序。

  • 將邏輯組態新增至資源需求清單。

    若要將邏輯組態新增至裝置的資源需求清單,驅動程式會呼叫 WdfIoResourceRequirementsListAppendIoResListWdfIoResourceRequirementsListInsertIoResList

    將資源指派給裝置時,PnP 管理員會嘗試比對清單中第一個邏輯設定的需求。 如果無法使用該組態所需的資源,PnP 管理員會比對清單中可用的資源下一個組態。

    如果您的驅動程式支援非 PnP 裝置,您的驅動程式通常也必須呼叫 WdfIoResourceRequirementsListSetSlotNumberWdfIoResourceRequirementsListSetInterfaceType

驅動程式的 EvtDeviceResourceRequirementsQuery 回呼函式傳回之後,架構會將資源需求清單傳遞給 PnP 管理員。