Função WdfIoTargetQueryTargetProperty (wdfiotarget.h)
[Aplica-se somente ao KMDF]
O método WdfIoTargetQueryTargetProperty recupera uma propriedade de dispositivo especificada para um destino de E/S especificado.
Sintaxe
NTSTATUS WdfIoTargetQueryTargetProperty(
[in] WDFIOTARGET IoTarget,
[in] DEVICE_REGISTRY_PROPERTY DeviceProperty,
[in] ULONG BufferLength,
[out, optional] PVOID PropertyBuffer,
[out] PULONG ResultLength
);
Parâmetros
[in] IoTarget
Um identificador para um objeto de destino de E/S local ou remoto obtido de uma chamada anterior para WdfDeviceGetIoTarget ou WdfIoTargetCreate ou de um método que um destino de E/S especializado fornece.
[in] DeviceProperty
Um valor DEVICE_REGISTRY_PROPERTYdigitado que identifica a propriedade do dispositivo a ser recuperada.
[in] BufferLength
O tamanho, em bytes, do buffer para o qual PropertyBuffer aponta.
[out, optional] PropertyBuffer
Um ponteiro para um buffer alocado por chamador que recebe as informações de propriedade do dispositivo solicitadas. Esse ponteiro poderá ser NULL se BufferLength for zero.
[out] ResultLength
Um ponteiro para um local que, no retorno, contém o tamanho, em bytes, das informações que WdfIoTargetQueryTargetProperty armazenado no buffer que PropertyBuffer aponta. Se WdfIoTargetQueryTargetProperty retornar STATUS_BUFFER_TOO_SMALL, esse local receberá o tamanho do buffer necessário.
Valor de retorno
WdfIoTargetQueryTargetProperty retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método poderá retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
O buffer que o parâmetro PropertyBuffer apontou era muito pequeno para receber as informações solicitadas. |
|
O valor que o parâmetro DeviceProperty especificado era inválido. |
|
Os drivers do dispositivo ainda não relataram as propriedades do dispositivo. |
Esse método também pode retornar outros valores NTSTATUS .
Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.
Observações
Antes que os drivers recebam dados de propriedade do dispositivo, eles normalmente chamam o método WdfIoTargetQueryTargetProperty para obter o tamanho do buffer necessário. Para algumas propriedades, o tamanho dos dados pode mudar entre quando o tamanho necessário é retornado e quando o driver chama WdfIoTargetQueryTargetProperty novamente. Portanto, os drivers devem chamar WdfIoTargetQueryTargetProperty dentro de um loop executado até que o status de retorno não seja STATUS_BUFFER_TOO_SMALL.
Em vez de chamar WdfIoTargetQueryTargetProperty, o driver pode chamar WdfIoTargetAllocAndQueryTargetProperty, que aloca um buffer e coloca as informações da propriedade no buffer.
Para obter mais informações sobre WdfIoTargetQueryTargetProperty, consulte Obtendo informações sobre umde destino de E/S geral.
Para obter mais informações sobre destinos de E/S, consulte Usando destinos de E/S.
Exemplos
O exemplo de código a seguir obtém a propriedade DevicePropertyUINumber de um dispositivo. O exemplo chama WdfIoTargetQueryTargetProperty em vez de WdfIoTargetAllocAndQueryTargetProperty porque o comprimento de um número de interface do usuário é conhecido.
ULONG targetUINumber, resultLength;
NTSTATUS status;
status = WdfIoTargetQueryTargetProperty(
target,
DevicePropertyUINumber,
sizeof(targetNumber),
&targetUINumber,
&resultLength
);
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Universal |
versão mínima do KMDF | 1.0 |
cabeçalho | wdfiotarget.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (consulte o Controle de Versão da Biblioteca da Estrutura.) |
IRQL | PASSIVE_LEVEL |
regras de conformidade de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |