Поделиться через


Доступ к единой модели свойств устройства

В этом разделе описывается, как драйвер Windows Driver Framework (WDF) извлекает или изменяет свойства, предоставляемые с помощью унифицированной модели свойств устройства. Перечисленные методы доступны начиная с User-Mode Driver Framework (UMDF) версии 2.0 и Kernel-Mode Driver Framework (KMDF) версии 1.13.

Драйверы KMDF и UMDF могут вызывать следующие методы:

Драйверы KMDF и UMDF могут вызывать следующие методы только перед вызовом WdfDeviceCreate. Дополнительные сведения о вызове WdfDeviceCreate см. в разделе Создание объекта устройства платформы.

После вызова WdfDeviceCreate драйвер может получить сведения о свойстве устройства, вызвав соответствующий метод WdfDeviceXxxProperty .

Приведенные выше методы -Ex отличаются от своих аналогов, отличных от Ex , тем, что позволяют указывать свойства с помощью структуры WDF_DEVICE_PROPERTY_DATA , а не подмножества, которое можно указать с помощью DEVICE_REGISTRY_PROPERTY.

Перед получением данных о свойствах устройства драйверы обычно вызывают WdfXxxQueryProperty только для получения требуемого размера буфера. Для некоторых свойств размер данных может изменяться между возвратом требуемого размера и повторным вызовом драйвером WdfXxxQueryProperty . Поэтому драйверы должны вызывать WdfXxxQueryProperty внутри цикла, который выполняется до тех пор, пока состояние возврата не будет STATUS_BUFFER_TOO_SMALL.

WdfXxxQueryProperty рекомендуется использовать только в том случае, если требуемый размер буфера известен и неизменяем, так как в этом случае драйвер должен вызывать WdfXxxQueryProperty только один раз. Если требуемый размер буфера неизвестен или меняется, драйвер должен вызвать WdfXxxAllocAndQueryProperty.

Доступ к свойствам интерфейса устройства

Драйверы UMDF могут использовать следующие методы для получения или изменения свойств интерфейса устройства , предоставляемых с помощью унифицированной модели свойств:

Чтобы получить или изменить свойство интерфейса устройства, драйвер KMDF должен напрямую вызвать IoGetDeviceInterfacePropertyData или IoSetDeviceInterfacePropertyData .