Compartilhar via


Criando uma lista de requisitos de recursos

Quando um motorista de ônibus detecta um dispositivo filho, o driver é responsável por criar uma lista de requisitos de recursos para o dispositivo. Cada item na lista é uma configuração lógica para o dispositivo.

Depois que o driver relata o dispositivo durante a enumeração de barramento, a estrutura chama a função de retorno de chamada EvtDeviceResourceRequirementsQuery do driver. Essa função de retorno de chamada recebe um identificador para um objeto resource-requirements-list que representa uma lista vazia de requisitos de recursos.

Em seguida, o driver deve fazer o seguinte para adicionar informações a uma lista de requisitos de recursos:

  • Crie uma configuração lógica vazia.

    Para cada configuração lógica que o driver especificará, o driver deve chamar WdfIoResourceListCreate para criar uma configuração lógica vazia.

  • Adicione descritores de recurso à configuração lógica.

    Para adicionar descritores de recurso a uma configuração lógica, o driver deve fazer o seguinte, para cada tipo de recurso de hardware que o dispositivo requer:

    1. Preencha uma estrutura de IO_RESOURCE_DESCRIPTOR alocada por driver, que especifica um intervalo de valores válidos para um recurso específico.
    2. Chame WdfIoResourceListAppendDescriptor ou WdfIoResourceListInsertDescriptor para adicionar o conteúdo da estrutura IO_RESOURCE_DESCRIPTOR a uma configuração lógica.

    Se um dispositivo usar mais de uma instância de um tipo de recurso, todos os drivers na pilha que acessam o recurso deverão estar cientes da ordem em que os recursos são adicionados. Por exemplo, se um dispositivo exigir dois intervalos de endereços de porta de E/S, todos os drivers que acessam os descritores de recursos deverão estar cientes da ordem em que os dois intervalos são adicionados à configuração lógica.

  • Adicione a configuração lógica à lista de requisitos de recursos.

    Para adicionar uma configuração lógica à lista de requisitos de recursos do dispositivo, o driver chama WdfIoResourceRequirementsListAppendIoResList ou WdfIoResourceRequirementsListInsertIoResList.

    Ao atribuir recursos a um dispositivo, o gerenciador de PnP tenta corresponder aos requisitos da primeira configuração lógica na lista. Se os recursos necessários para essa configuração não estiverem disponíveis, o gerenciador PnP corresponderá à próxima configuração na lista para a qual os recursos estão disponíveis.

    Se o driver der suporte a um dispositivo não PnP, o driver normalmente também deverá chamar WdfIoResourceRequirementsListSetSlotNumber e WdfIoResourceRequirementsListSetInterfaceType.

Depois que a função de retorno de chamada EvtDeviceResourceRequirementsQuery do driver retornar, a estrutura passará a lista de requisitos de recursos para o gerenciador PnP.