Acessando o modelo de propriedade do dispositivo unificado

Este tópico descreve como um driver WDF (Windows Driver Frameworks) recupera ou modifica propriedades expostas por meio do modelo de propriedade do dispositivo unificado. Os métodos listados estão disponíveis a partir do User-Mode Driver Framework (UMDF) versão 2.0 e Kernel-Mode Driver Framework (KMDF) versão 1.13.

Os drivers KMDF e UMDF podem chamar os seguintes métodos:

Os drivers KMDF e UMDF só podem chamar os métodos a seguir antes de chamar WdfDeviceCreate. Para obter mais informações sobre como chamar WdfDeviceCreate, consulte Criando um objeto de dispositivo de estrutura.

Depois de chamar WdfDeviceCreate, um driver pode obter informações de propriedade do dispositivo chamando o método WdfDeviceXxxProperty correspondente.

Os métodos -Ex acima diferem de seus equivalentes não Ex , pois permitem que você especifique propriedades usando a estrutura WDF_DEVICE_PROPERTY_DATA , em vez do subconjunto que você pode especificar usando DEVICE_REGISTRY_PROPERTY.

Antes de receber dados de propriedade do dispositivo, os drivers normalmente chamam WdfXxxQueryProperty apenas para obter o tamanho do buffer necessário. Para algumas propriedades, o tamanho dos dados pode ser alterado entre quando o tamanho necessário é retornado e quando o driver chama WdfXxxQueryProperty novamente. Portanto, os drivers devem chamar WdfXxxQueryProperty dentro de um loop que é executado até que a status de retorno não seja STATUS_BUFFER_TOO_SMALL.

É melhor usar WdfXxxQueryProperty somente se o tamanho do buffer necessário for conhecido e inalterado, pois nesse caso o driver precisa chamar WdfXxxQueryProperty apenas uma vez. Se o tamanho do buffer necessário for desconhecido ou variar, o driver deverá chamar WdfXxxAllocAndQueryProperty.

Acessando propriedades da interface do dispositivo

Os drivers UMDF podem usar os seguintes métodos para recuperar ou modificar as propriedades da interface do dispositivo expostas por meio do modelo de propriedade unificado:

Para recuperar ou modificar uma propriedade de interface do dispositivo, um driver KMDF deve chamar IoGetDeviceInterfacePropertyData ou IoSetDeviceInterfacePropertyData diretamente.