Função WdfFdoInitQueryPropertyEx (wdffdo.h)

[Aplica-se a KMDF e UMDF]

O método WdfFdoInitQueryPropertyEx recupera uma propriedade de dispositivo especificada.

Sintaxe

NTSTATUS WdfFdoInitQueryPropertyEx(
  [in]  PWDFDEVICE_INIT           DeviceInit,
  [in]  PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
  [in]  ULONG                     BufferLength,
  [out] PVOID                     PropertyBuffer,
  [out] PULONG                    ResultLength,
  [out] PDEVPROPTYPE              Type
);

Parâmetros

[in] DeviceInit

Um ponteiro para uma estrutura WDFDEVICE_INIT que o driver obteve de sua função de retorno de chamada EvtDriverDeviceAdd .

[in] DeviceProperty

Um ponteiro para uma estrutura WDF_DEVICE_PROPERTY_DATA que identifica a propriedade do dispositivo a ser recuperada.

[in] BufferLength

O tamanho, em bytes, do buffer apontado por PropertyBuffer.

[out] PropertyBuffer

Um ponteiro fornecido pelo chamador para um buffer alocado pelo chamador que recebe as informações solicitadas. O ponteiro poderá ser NULL se o parâmetro BufferLength for zero.

[out] ResultLength

Um local fornecido pelo chamador que, no retorno, contém o tamanho, em bytes, das informações que o método armazenou no PropertyBuffer. Se o valor retornado da função for STATUS_BUFFER_TOO_SMALL, esse local receberá o tamanho do buffer necessário.

[out] Type

Um ponteiro para uma variável DEVPROPTYPE que, no retorno, contém o valor do tipo de propriedade dos dados de propriedade armazenados em PropertyBuffer.

Retornar valor

Se a operação for bem-sucedida, WdfFdoInitQueryPropertyEx retornará STATUS_SUCCESS. Os valores de retorno adicionais incluem:

Código de retorno Descrição
STATUS_BUFFER_TOO_SMALL
O buffer fornecido é muito pequeno para receber as informações.
STATUS_INVALID_PARAMETER
O valor deviceProperty especificado é inválido.
 

O método pode retornar outros valores NTSTATUS.

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

Antes de receber dados de propriedade do dispositivo, os drivers normalmente chamam o método WdfFdoInitQueryPropertyEx 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 WdfFdoInitQueryPropertyEx novamente. Portanto, os drivers devem chamar WdfFdoInitQueryPropertyEx dentro de um loop que é executado até que a status de retorno não seja STATUS_BUFFER_TOO_SMALL.

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

O driver pode chamar WdfFdoInitQueryPropertyEx somente 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 WdfDeviceQueryPropertyEx.

Para obter informações sobre métodos relacionados, consulte Acessando o modelo de propriedade de dispositivo unificado.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.13
Versão mínima do UMDF 2,0
Cabeçalho wdffdo.h (include Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL

Confira também

WdfFdoInitQueryProperty