當總線驅動程式偵測到子裝置時,驅動程式會負責建立裝置的資源需求清單。 清單中的每個項目都是裝置的 邏輯組態。
驅動程式在總線列舉期間回報裝置之後,架構會呼叫驅動程式的 EvtDeviceResourceRequirementsQuery 回呼函式。 此回呼函式會接收一個代表空白資源需求清單的物件句柄。
然後,驅動程式必須執行下列動作,才能將資訊新增至資源需求清單:
建立空的邏輯組態。
針對驅動程式將指定的每個邏輯組態,驅動程式必須呼叫 WdfIoResourceListCreate,以建立空的邏輯組態。
將資源描述項新增至邏輯組態。
若要將資源描述項新增至邏輯組態,驅動程式必須針對裝置所需的每一種硬體資源執行下列動作:
- 填入驅動程式配置的 IO_RESOURCE_DESCRIPTOR 結構,指定特定資源的有效值範圍。
- 呼叫 WdfIoResourceListAppendDescriptor 或 WdfIoResourceListInsertDescriptor,將IO_RESOURCE_DESCRIPTOR結構的內容新增至邏輯組態。
如果裝置使用一個以上的資源類型實例,則存取資源之堆疊中的所有驅動程式都必須知道資源新增的順序。 例如,如果裝置需要兩個 I/O 埠位址範圍,則所有存取資源描述元的驅動程式都必須知道這兩個範圍新增至邏輯組態的順序。
將邏輯組態新增至資源需求清單。
若要將邏輯組態新增至裝置的資源需求列表,驅動程式會呼叫 WdfIoResourceRequirementsListAppendIoResList 或 WdfIoResourceRequirementsListInsertIoResList。
將資源指派給裝置時,PnP 管理員會嘗試符合清單中第一個邏輯組態的需求。 如果無法使用該組態所需的資源,PnP 管理員會比對清單中可用的資源下一個組態。
如果您的驅動程式支援非 PnP 裝置,您的驅動程式通常也必須呼叫 WdfIoResourceRequirementsListSetSlotNumber 和 WdfIoResourceRequirementsListSetInterfaceType。
驅動程式 EvtDeviceResourceRequirementsQuery 回呼函式傳回之後,架構會將資源需求清單傳遞給 PnP 管理員。