有時候需要存取裝置的父節點。 例如,某些類型的硬體裝置運作取決於特定父設備與一組子設備之間的固定關聯性。 若要卸載這類硬體裝置,您必須卸載父裝置和所有子裝置。 若要卸載父代,您必須取得父代 SP_DEVINFO_DATA 結構。 通用序列總線 (USB) 複合裝置,例如多功能列印機,就是這類裝置。 它是由父複合裝置和一或多個子介面裝置表示於系統中(請參閱 USB 驅動程式堆棧架構)。 若要卸載多功能印表機,除了其所有子介面裝置之外,您還必須卸載其父複合裝置。
當 即插即用 (PnP) 管理員在系統中設定裝置時,會將裝置的裝置節點 (devnode) 新增至 裝置樹狀結構。 當 PnP 管理器從系統中移除裝置時,它會從裝置樹中移除該裝置的 devnode,然後該裝置將成為非目前裝置。
若要判斷裝置父系的裝置實例標識符,您可以使用 SetupDiGetDeviceProperty 查詢裝置上的 DEVPKEY_Device_Parent 屬性。 針對 目前的 裝置,這會提供該裝置父系的裝置實例標識符。 針對 不存在 的裝置:
- 在 Windows 8 和更新版本上:
- 如果上次的不存在裝置作為現有裝置時,它的父裝置仍然在系統中以裝置形式存在(可以是現有或不存在的裝置),DEVPKEY_Device_Parent會提供該父裝置的裝置實例 ID。
- 如果上次該非現有裝置是現有裝置時的父裝置現在在系統中不存在,DEVPKEY_Device_Parent會返回位於裝置樹根的裝置實例 ID。
- 在 Windows 8 之前:
- 擷取DEVPKEY_Device_Parent會傳回找不到屬性的錯誤。
擁有父裝置的裝置實例標識符之後,您可以使用 SetupDiOpenDeviceInfo 來取得父系 的SP_DEVINFO_DATA 結構。