Partilhar via


Manipulando solicitações de enumeração

O gerente PnP pode solicitar a um motorista de ônibus para enumerar seus filhos a qualquer momento. (Se você estiver familiarizado com interfaces WDM, as solicitações de enumeração são solicitações IRP_MN_QUERY_DEVICE_RELATIONS com um tipo de relação BusRelations.) Os drivers baseados em estrutura não veem essas solicitações. Em vez disso, a estrutura lida com as solicitações usando as informações armazenadas na lista de filhos de um dispositivo. O driver é responsável por manter a lista de filhos up-to-data para que a estrutura possa fornecer informações corretas quando o gestor PnP solicita uma enumeração.

Os drivers de barramento baseados em estrutura que oferecem suporte à enumeração dinâmica podem receber uma solicitação para reenumerar um dispositivo filho específico. Essa solicitação pode ser enviada pelo driver de função do dispositivo filho depois que o driver deteta uma falha no dispositivo. (A estrutura suporta esse tipo de solicitação implementando a interface REENUMERATE_SELF_INTERFACE_STANDARD , que é uma interface padrão definida por driver definida em wdm.h.)

Os drivers de barramento baseados em framework que oferecem suporte à enumeração dinâmica podem fornecer uma função de retorno de chamada EvtChildListDeviceReenumerated, que o framework chama quando recebe uma solicitação de reenumeração do driver de um dispositivo filho. Se essa função de retorno de chamada retornar TRUE ou não existir, o sistema marcará o dispositivo filho como estando ausente e informa o gestor PnP que a lista de dispositivos filhos do controlador de barramento foi alterada. Como resultado, o gestor PnP solicita uma reenumeração e o framework chama a função de retorno de chamada EvtChildListCreateDevice do driver, que cria um novo PDO para o dispositivo filho.