Compartilhar via


estrutura WDF_QUERY_INTERFACE_CONFIG (wdfqueryinterface.h)

[Aplica-se somente ao KMDF]

A estrutura WDF_QUERY_INTERFACE_CONFIG descreve uma interface definida pelo driver.

Sintaxe

typedef struct _WDF_QUERY_INTERFACE_CONFIG {
  ULONG                                          Size;
  PINTERFACE                                     Interface;
  const GUID                                     *InterfaceType;
  BOOLEAN                                        SendQueryToParentStack;
  PFN_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST EvtDeviceProcessQueryInterfaceRequest;
  BOOLEAN                                        ImportInterface;
} WDF_QUERY_INTERFACE_CONFIG, *PWDF_QUERY_INTERFACE_CONFIG;

Membros

Size

O tamanho, em bytes, dessa estrutura.

Interface

Um ponteiro para uma estrutura de interface de que descreve a interface definida pelo driver.

InterfaceType

Um ponteiro para o GUID que identifica a interface.

Observação

Ao introduzir uma nova versão de uma interface existente, crie um GUID em vez de revisar os campos de Tamanho ou versão da estruturainterface do. Para obter mais informações, consulte Using Driver-Defined Interfaces.

SendQueryToParentStack

Se VERDADEIROe se o driver especificar um objeto de dispositivo que representa um objeto de dispositivo físico (PDO) quando chama WdfDeviceAddQueryInterface, a estrutura envia solicitações para a interface para a parte superior da pilha de driver do dispositivo pai. Se esse membro for FALSE ou se o objeto do dispositivo não representar um PDO, a estrutura não enviará solicitações para a pilha do dispositivo pai. Para obter mais informações, consulte a seção Comentários a seguir.

EvtDeviceProcessQueryInterfaceRequest

Um ponteiro para o do driver EvtDeviceProcessQueryInterfaceRequest função de retorno de chamada de evento, que é chamada quando outro driver solicita a interface.

ImportInterface

Se VERDADEIRO, a interface oferecerá suporte à comunicação bidirecional entre o driver e os drivers que solicitam a interface.

Se esse membro for FALSE, a interface oferecerá suporte à comunicação unidirecional do driver com drivers que solicitam a interface.

Observações

A estrutura WDF_QUERY_INTERFACE_CONFIG é usada como entrada para o método WdfDeviceAddQueryInterface.

Para cada interface definida pelo driver exportada pelo driver, você deve alocar uma estrutura WDF_QUERY_INTERFACE_CONFIG que represente a interface. Outros drivers podem solicitar acesso à interface chamando WdfFdoQueryForInterface.

Se quiser que sua interface dê suporte à comunicação bidirecional entre o driver solicitante e o driver, defina o membro ImportInterface como VERDADEIRO. Se ImportInterface for verdadeiro, a estrutura fornecida pelo driver solicitante poderá conter dados que o driver pode ler. Nesse caso:

  • A função de retorno de chamada EvtDeviceProcessQueryInterfaceRequest é necessária e deve inicializar a estrutura de interface fornecida pelo driver solicitante.
  • Como a função de retorno de chamada EvtDeviceProcessQueryInterfaceRequest fornece a interface para o driver solicitante, o membro da Interface do WDF_QUERY_INTERFACE_CONFIG pode ser NULL. Se você fornecer um ponteiro deNULL não, a estrutura verificará se os valores de tamanho e versão fornecidos pelo driver solicitante são iguais ou maiores que os valores na estrutura interface do registrada. Se um desses valores for menor, a estrutura rejeitará a solicitação. Se você não fornecer um valor para Interface, sua função de retorno de chamada EvtDeviceProcessQueryInterfaceRequest deverá verificar esses valores.

Se você quiser que sua interface dê suporte apenas à comunicação unidirecional do driver para o driver solicitante, defina ImportInterface é FALSE. A estrutura de interface fornecida pelo driver solicitante pode receber apenas os dados que o driver fornece. Nesse caso:
  • A função de retorno de chamada EvtDeviceProcessQueryInterfaceRequest é opcional.
  • O membro interface não pode ser NULL. A estrutura verifica se os valores guid, tamanho e versão fornecidos pelo driver solicitante correspondem aos fornecidos e a estrutura rejeita a solicitação se os valores não corresponderem. Se os valores forem válidos, a estrutura inicializará a estrutura de interface que o driver solicitante fornece usando os valores fornecidos para Interface.
Além disso, o membro da Interface pode ser NULL se o valor do membro SendQueryToParentStack for TRUE.

Se o membro interface não forNULL, a estrutura copiará o valor para o espaço de armazenamento interno. Portanto, o driver pode alocar a estrutura interface no espaço de armazenamento local e temporário.

Quando o driver chama WdfDeviceAddQueryInterface, ele pode associar a interface a um objeto de dispositivo de estrutura que representa um FDO (objeto de dispositivo funcional) ou um objeto de dispositivo físico (PDO). Se o driver associar a interface a um PDO, ele poderá definir o membro SendQueryToParentStack da estrutura WDF_QUERY_INTERFACE_CONFIG para verdadeiro. Quando a estrutura intercepta uma solicitação para a interface, ela verifica a membro SendQueryToParentStack e, se estiver definida como TRUE, a estrutura enviará a solicitação para a parte superior da pilha de driver do pai do PDO. Como resultado, a solicitação percorre duas pilhas de driver: primeiro, a pilha que contém o driver que está solicitando a interface e, em segundo lugar, a pilha do pai do dispositivo da interface.

A estrutura fornece dois métodos de referência/dereferência que você pode usar com suas interfaces especificando seus endereços para o InterfaceReference e InterfaceDereference membros da estrutura interface do. Para obter mais informações sobre esses métodos, consulte WdfDeviceInterfaceReferenceNoOp e WdfDeviceInterfaceDereferenceNoOp.

Os drivers devem inicializar essa estrutura chamando WDF_QUERY_INTERFACE_CONFIG_INIT.

Para obter mais informações sobre interfaces definidas pelo driver, consulte Using Driver-Defined Interfaces.

Requisitos

Requisito Valor
versão mínima do KMDF 1.0
cabeçalho wdfqueryinterface.h (inclua Wdf.h)

Consulte também

EvtDeviceProcessQueryInterfaceRequest

de INTERFACE do

WDF_QUERY_INTERFACE_CONFIG_INIT

WdfDeviceAddQueryInterface

WdfDeviceInterfaceDereferenceNoOp

WdfDeviceInterfaceReferenceNoOp

WdfFdoQueryForInterface