Compartilhar via


EVT_WDF_DEVICE_RELATIONS_QUERY função de retorno de chamada (wdfdevice.h)

[Aplica-se somente ao KMDF]

O retorno de chamada de evento EvtDeviceRelationsQuery de um driver relata alterações nas relações entre dispositivos compatíveis com o driver.

Sintaxe

EVT_WDF_DEVICE_RELATIONS_QUERY EvtWdfDeviceRelationsQuery;

void EvtWdfDeviceRelationsQuery(
  [in] WDFDEVICE Device,
  [in] DEVICE_RELATION_TYPE RelationType
)
{...}

Parâmetros

[in] Device

Um identificador para um objeto de dispositivo de estrutura.

[in] RelationType

Um valor de enumerador do tipo DEVICE_RELATION_TYPE. A enumeração DEVICE_RELATION_TYPE é definida em wdm.h.

Retornar valor

Nenhum

Comentários

Para registrar a função de retorno de chamada EvtDeviceRelationsQuery , um driver deve chamar WdfDeviceInitSetPnpPowerEventCallbacks.

A maioria dos drivers baseados em estrutura não precisa fornecer essa função de retorno de chamada.

Durante a inicialização do sistema, o gerenciador de Plug and Play enumera todos os dispositivos no sistema enviando uma solicitação IRP_MN_QUERY_DEVICE_RELATIONS para a pilha de driver. Se um driver baseado em estrutura tiver registrado uma função de retorno de chamada EvtDeviceRelationsQuery , a estrutura a chamará. O driver de função do barramento deve relatar todos os dispositivos filho anexados ao barramento.

Além disso, depois que a estrutura chama a rotina IoInvalidateDeviceRelations para relatar uma relação alterada entre os dispositivos no ônibus do motorista, o gerenciador de Plug and Play envia outra solicitação IRP_MN_QUERY_DEVICE_RELATIONS para a pilha de driver. Em seguida, a estrutura chama a função de retorno de chamada EvtDeviceRelationsQuery do driver para que o driver possa fornecer detalhes sobre a alteração.

O tipo de trabalho que um driver deve fazer depende do valor recebido para o parâmetro RelationType . O valor pode ser um dos seguintes:

BusRelations

    A maioria dos drivers baseados em estrutura não relata relações de barramento em uma função de retorno de chamada EvtDeviceRelationsQuery. Em vez disso, os drivers seguem as diretrizes descritas em Enumerando os Dispositivos em um Barramento.

EjectionRelations

    A maioria dos drivers baseados em estrutura não relata relações de ejeção em uma função de retorno de chamada EvtDeviceRelationsQuery. Em vez disso, o driver do barramento do dispositivo chama WdfPdoAddEjectionRelationsPhysicalDevice e WdfPdoRemoveEjectionRelationsPhysicalDevice.

RemovalRelations

    A maioria dos drivers baseados em estrutura não relata relações de remoção em uma função de retorno de chamada EvtDeviceRelationsQuery. Em vez disso, os drivers chamam WdfDeviceAddRemovalRelationsPhysicalDevice e WdfDeviceRemoveRemovalRelationsPhysicalDevice.

TargetDeviceRelation

    Os drivers baseados em estrutura não precisam relatar a relação de destino de um dispositivo. Em vez disso, a estrutura manipula essa solicitação.

A estrutura pode chamar a função de retorno de chamada EvtDeviceRelationsQuery com um valor RelationType de EjectionRelations ou RemovalRelations mesmo se o dispositivo estiver sendo removido.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Cabeçalho wdfdevice.h (inclua Wdf.h)
IRQL PASSIVE_LEVEL