靜態列舉
靜態列舉 是驅動程式在系統初始化期間偵測並報告裝置是否存在的能力,並有限地能夠報告系統設定的後續變更。
如果裝置數目和類型或功能子單位已預先決定且永久,且不相依于驅動程式執行所在的系統設定,匯流排驅動程式可以使用靜態列舉。
例如,音效卡的驅動程式可作為公車驅動程式,並針對每個卡片的功能, (PDO) 建立個別的實體裝置物件,例如 MIDI、音訊和搖桿。
靜態子清單
架構提供靜態子清單,讓驅動程式能夠支援靜態列舉。 每個靜態子清單都代表連接到父裝置的子裝置清單。 父裝置的匯流排驅動程式必須識別父裝置的子裝置、將它們新增至父裝置的靜態子清單,以及為每個子裝置建立 PDO。
建立靜態子清單
每當驅動程式建立架構裝置物件,代表裝置的功能裝置物件 (FDO) 時,架構都會為裝置建立空的靜態子清單。
當架構呼叫匯流排驅動程式的 EvtDriverDeviceAdd 回呼函式時,回呼函式必須呼叫 WdfDeviceCreate ,以建立父裝置的 FDO。 如需建立 FDO 的詳細資訊,請參閱 在函式驅動程式中建立裝置物件。
然後,驅動程式必須列舉父裝置的子系、為子系建立 PDO,並將子系新增至子清單。
或者,驅動程式可以呼叫 WdfDeviceSetBusInformationForChildren 來提供架構與匯流排的相關資訊。 建議這樣做,因為它可讓您更輕鬆地讓子裝置和應用程式識別公車。
若要為偵測到的子裝置建立 PDO,匯流排驅動程式必須:
呼叫 WdfPdoInitAllocate 以取得 WDFDEVICE_INIT 結構。
初始化WDFDEVICE_INIT結構。
呼叫 WdfDeviceCreate 以建立代表 PDO 的架構裝置物件。
如需建立 PDO 的詳細資訊,請參閱 在匯流排驅動程式中建立裝置物件。
呼叫 WdfDeviceCreate之後,驅動程式必須呼叫 WdfFdoAddStaticChild ,以將子裝置新增至子清單。
修改靜態子清單
因為驅動程式應該只針對預先決定和永久的裝置組態使用靜態子清單,所以在建立靜態子清單之後,驅動程式就不需要修改靜態子清單。 如果驅動程式判斷子裝置無法存取,驅動程式可以呼叫 WdfPdoMarkMissing。 (如果子裝置仍可存取,但變得沒有回應且無法使用,驅動程式應將WDF_DEVICE_STATE結構的Failed成員設定為WdfTrue,然後呼叫WdfDeviceSetDeviceState.)
周遊靜態子清單
如果您需要擷取靜態子清單的內容,驅動程式可以執行下列動作來周遊清單: