存取統一裝置屬性模型
本主題描述 Windows 驅動程式架構 (WDF) 驅動程式如何擷取或修改透過整合裝置屬性模型公開的屬性。 從 User-Mode Driver Framework (UMDF) 2.0 版和 Kernel-Mode Driver Framework (KMDF) 1.13 版開始,即可取得列出的方法。
KMDF 和 UMDF 驅動程式都可以呼叫下列方法:
KMDF 和 UMDF 驅動程式只能在呼叫 WdfDeviceCreate 之前呼叫下列方法。 如需呼叫 WdfDeviceCreate 的詳細資訊,請參閱 建立架構裝置物件。
呼叫 WdfDeviceCreate 之後,驅動程式可以藉由呼叫對應的 WdfDeviceXxx屬性 方法來取得裝置屬性資訊。
上述 -Ex 方法與其非 Ex 對應專案不同,因為它們可讓您使用 WDF_DEVICE_PROPERTY_DATA 結構來指定屬性,而不是您可以使用 DEVICE_REGISTRY_PROPERTY 指定的子集。
在接收裝置屬性數據之前,驅動程式通常會呼叫 WdfXxxQueryProperty ,只取得所需的緩衝區大小。 對於某些屬性,當傳回所需的大小,以及驅動程式再次呼叫 WdfXxxQueryProperty 時,數據大小可能會變更。 因此,驅動程式應該在迴圈內呼叫 WdfXxxQueryProperty ,直到傳回狀態未 STATUS_BUFFER_TOO_SMALL為止。
最好只有在已知且未變更所需的緩衝區大小時,才使用 WdfXxxQueryProperty ,因為在此情況下,驅動程式只需要呼叫 WdfXxxQueryProperty 一次。 如果必要的緩衝區大小未知或不同,驅動程式應該呼叫 WdfXxxAllocAndQueryProperty。
存取裝置介面屬性
UMDF 驅動程式可以使用下列方法來擷取或修改透過整合屬性模型公開的 裝置介面屬性 :
若要擷取或修改裝置介面屬性,KMDF 驅動程式必須直接呼叫 IoGetDeviceInterfacePropertyData 或 IoSetDeviceInterfacePropertyData 。